Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: refactor the code in test-dns-ipv6 #10219

Closed
wants to merge 1 commit into from

Conversation

edsadr
Copy link
Member

@edsadr edsadr commented Dec 10, 2016

Checklist
  • make -j4 test (UNIX), or vcbuild test nosign (Windows) passes
  • tests and/or benchmarks are included
  • commit message follows commit guidelines
Affected core subsystem(s)

test

Description of change
  • remove the manual control for functions execution
  • use common.mustCall to control the functions execution automatically
  • use let and const instead of var

@nodejs-github-bot nodejs-github-bot added dont-land-on-v7.x test Issues and PRs related to the tests. labels Dec 10, 2016
@mscdex mscdex added the dns Issues and PRs related to the dns subsystem. label Dec 10, 2016
var req = dns.resolve6('ipv6.google.com', function(err, ips) {
if (err) throw err;
const req = dns.resolve6('ipv6.google.com',
common.mustCall(function(err, ips) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same deal as the other dns test refactor PR, this should be formatted better.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixing this now for both

@edsadr
Copy link
Member Author

edsadr commented Dec 10, 2016

@mscdex went for the arrow function, but in many cases even a new line was required, so idented them too, PTAL and if you are OK with this format will fix the other PR to match

const req = dns.lookup('ipv6.google.com', 6,
common.mustCall((err, ip, family) => {
assert.ifError(err);
assert.ok(net.isIPv6(ip));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: isIPv6 is already defined at the beginning of the file. We can use that consistently.

@edsadr
Copy link
Member Author

edsadr commented Dec 11, 2016

@thefourtheye just fixed it as suggested

@@ -207,8 +208,6 @@ TEST(function test_lookupservice_ip_ipv6(done) {
checkWrap(req);
}); */

process.on('exit', function() {
console.log(completed + ' tests completed');
process.on('exit', () => {
assert.equal(running, false);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: either assert.strictEqual(running, false); or assert(!running);.

@edsadr
Copy link
Member Author

edsadr commented Dec 11, 2016

@Trott just fixed as suggested

@italoacasas
Copy link
Contributor

@edsadr
Copy link
Member Author

edsadr commented Dec 13, 2016

the CI looks good, I guess just need the LGTM from @mscdex, @thefourtheye and @Trott about their requested changes

@Trott
Copy link
Member

Trott commented Dec 13, 2016

@nodejs/testing

@edsadr
Copy link
Member Author

edsadr commented Dec 15, 2016

any feedback/update for this one? want to also update #10200 according which is also pending

@italoacasas
Copy link
Contributor

ping @nodejs/testing

var req = dns.resolve6('ipv6.google.com', function(err, ips) {
if (err) throw err;
const req = dns.resolve6('ipv6.google.com',
common.mustCall((err, ips) => {
Copy link
Member

@santigimeno santigimeno Dec 15, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would align the dns.resolve6 arguments

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@santigimeno , sorry buts just learning about the codestyle, could you please provide an example of how to properly align this:

const req = dns.resolve6('ipv6.google.com',
    common.mustCall((err, ips) => {
      assert.ifError(err);

      assert.ok(ips.length > 0);

      for (let i = 0; i < ips.length; i++)
        assert.ok(isIPv6(ips[i]));

      done();
    }));```

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would do something like this, but I don't think is that important:

TEST(function test_resolve6(done) {
  const req = dns.resolve6('ipv6.google.com',
                           common.mustCall((err, ips) => {
    assert.ifError(err);
    assert.ok(ips.length > 0);
    for (let i = 0; i < ips.length; i++)
      assert.ok(isIPv6(ips[i]));

    done();
  }));

  checkWrap(req);
});

Copy link
Member Author

@edsadr edsadr Dec 16, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

well... that way has problems with the linter as it is expecting the code to be like this:

const req = dns.resolve6('ipv6.google.com',
                            common.mustCall((err, ips) => {
                              assert.ifError(err);

                              assert.ok(ips.length > 0);

                              for (let i = 0; i < ips.length; i++)
                                assert.ok(isIPv6(ips[i]));

                              done();
                            }));

in the previous way I didn't have linter problems... just let me know what to do here then to keep the current or ident the whole function code...

I implemented all the other suggestions 🙂

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@edsadr I think you have common.mustCall() and everything below it indented by 3 spaces too much. I think it should be like this:

const req = dns.resolve6('ipv6.google.com',
                         common.mustCall((err, ips) => {
                           assert.ifError(err);

                           assert.ok(ips.length > 0);

                           for (let i = 0; i < ips.length; i++)
                             assert.ok(isIPv6(ips[i]));

                           done();
                         }));

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And, of course, you can always do something like this too:

const callback = common.mustCall((err, ipe) => {
  assert.ifError(err);
  ...
});

const req = dns.resolve6('ipv6.google.com', callback);

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@edsadr forget about my styling comments. It's been more trouble than anything.

Copy link
Member Author

@edsadr edsadr Dec 17, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no prob @santigimeno, still your suggestions helped me to learn a little bit about the codestyling ... I like @Trott suggestions, but I would propose to keep the current format for consistency, if I implement as suggested some other tests below will look weird... so.. what do you say?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@edsadr I think any reasonable indentation for this that the linter finds acceptable is acceptable by me. I think @santigimeno seems to feel the same.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok @Trott ... then I think I will let it with the current identation... is not offending the linter, and looks ok

}
for (let i = 0; i < ips.length; i++) {
assert.ok(isIPv6(ips[i]));
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you can remove the braces

assert.ok(net.isIPv6(ip));
assert.strictEqual(family, 6);
const req = dns.lookup('ipv6.google.com', 6,
common.mustCall((err, ip, family) => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

arg aligment

@@ -134,62 +133,64 @@ TEST(function test_lookup_ipv6_hint(done) {
throw err;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would do return done(); as in other places in the file and would get rid of the else

assert.equal(running, false);
assert.strictEqual(expected, completed);
process.on('exit', () => {
assert.strictEqual(running, false);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this check really necessary?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@santigimeno so, should I just remove the whole process.on('exit'.. ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's what I was suggesting

}
for (let i = 0; i < domains.length; i++) {
assert.ok(domains[i]);
assert.ok(typeof domains[i] === 'string');
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think assert.ok(domains[i]); is redundant

@@ -134,62 +133,64 @@ TEST(function test_lookup_ipv6_hint(done) {
throw err;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe use assert.ifError(err); here

Copy link
Member

@santigimeno santigimeno left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM with some suggestions

var req = dns.resolve6('ipv6.google.com', function(err, ips) {
if (err) throw err;
const req = dns.resolve6('ipv6.google.com',
common.mustCall((err, ips) => {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would do something like this, but I don't think is that important:

TEST(function test_resolve6(done) {
  const req = dns.resolve6('ipv6.google.com',
                           common.mustCall((err, ips) => {
    assert.ifError(err);
    assert.ok(ips.length > 0);
    for (let i = 0; i < ips.length; i++)
      assert.ok(isIPv6(ips[i]));

    done();
  }));

  checkWrap(req);
});

@@ -131,65 +127,67 @@ TEST(function test_lookup_ipv6_hint(done) {
done();
return;
} else {
throw err;
assert.ifError(err);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Style nit. I would rewrite it like this:

if (common.isFreeBSD) {
  assert(err instanceof Error);
  assert.strictEqual(err.code, 'EAI_BADFLAGS');
  assert.strictEqual(err.hostname, 'www.google.com');
  assert.ok(/getaddrinfo EAI_BADFLAGS/.test(err.message));
  return done();
}

assert.ifError(err);

assert.equal(running, false);
assert.strictEqual(expected, completed);
process.on('exit', () => {
assert.strictEqual(running, false);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, that's what I was suggesting

* remove the manual control for functions execution
* use common.mustCall to control the functions execution automatically
* use let and const instead of var
* use assert.strictEqual instead assert.equal
@santigimeno
Copy link
Member

@italoacasas
Copy link
Contributor

Landed 5e781a3

italoacasas pushed a commit that referenced this pull request Dec 19, 2016
* remove the manual control for functions execution
* use common.mustCall to control the functions execution automatically
* use let and const instead of var
* use assert.strictEqual instead assert.equal

PR-URL: #10219
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
cjihrig pushed a commit to cjihrig/node that referenced this pull request Dec 20, 2016
* remove the manual control for functions execution
* use common.mustCall to control the functions execution automatically
* use let and const instead of var
* use assert.strictEqual instead assert.equal

PR-URL: nodejs#10219
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
@italoacasas italoacasas mentioned this pull request Dec 20, 2016
cjihrig pushed a commit that referenced this pull request Dec 20, 2016
* remove the manual control for functions execution
* use common.mustCall to control the functions execution automatically
* use let and const instead of var
* use assert.strictEqual instead assert.equal

PR-URL: #10219
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
MylesBorins pushed a commit that referenced this pull request Jan 22, 2017
* remove the manual control for functions execution
* use common.mustCall to control the functions execution automatically
* use let and const instead of var
* use assert.strictEqual instead assert.equal

PR-URL: #10219
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
MylesBorins pushed a commit that referenced this pull request Jan 24, 2017
* remove the manual control for functions execution
* use common.mustCall to control the functions execution automatically
* use let and const instead of var
* use assert.strictEqual instead assert.equal

PR-URL: #10219
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
@MylesBorins MylesBorins mentioned this pull request Jan 24, 2017
MylesBorins pushed a commit that referenced this pull request Jan 31, 2017
* remove the manual control for functions execution
* use common.mustCall to control the functions execution automatically
* use let and const instead of var
* use assert.strictEqual instead assert.equal

PR-URL: #10219
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
dns Issues and PRs related to the dns subsystem. test Issues and PRs related to the tests.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

9 participants