From 7167eb2f12a5070c79d4373a0ac0010e6154c22e Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 18 Apr 2019 14:28:46 -0700 Subject: [PATCH] test: increase coverage for dns.promises.lookup() Add coverage for uv_getaddrinfo() returning an error. PR-URL: https://github.com/nodejs/node/pull/27299 Reviewed-By: Michael Dawson Reviewed-By: Ruben Bridgewater Reviewed-By: Colin Ihrig --- test/parallel/test-dns-lookup.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/test/parallel/test-dns-lookup.js b/test/parallel/test-dns-lookup.js index 4fdfa1f4c22712..92943fd818b7e9 100644 --- a/test/parallel/test-dns-lookup.js +++ b/test/parallel/test-dns-lookup.js @@ -4,12 +4,14 @@ const common = require('../common'); const assert = require('assert'); const { internalBinding } = require('internal/test/binding'); const cares = internalBinding('cares_wrap'); + +// Stub `getaddrinfo` to *always* error. This has to be done before we load the +// `dns` module to guarantee that the `dns` module uses the stub. +cares.getaddrinfo = () => internalBinding('uv').UV_ENOMEM; + const dns = require('dns'); const dnsPromises = dns.promises; -// Stub `getaddrinfo` to *always* error. -cares.getaddrinfo = () => internalBinding('uv').UV_ENOENT; - { const err = { code: 'ERR_INVALID_ARG_TYPE', @@ -144,15 +146,19 @@ dns.lookup('127.0.0.1', { let tickValue = 0; +// Should fail due to stub. dns.lookup('example.com', common.mustCall((error, result, addressType) => { assert(error); assert.strictEqual(tickValue, 1); - assert.strictEqual(error.code, 'ENOENT'); + assert.strictEqual(error.code, 'ENOMEM'); const descriptor = Object.getOwnPropertyDescriptor(error, 'message'); // The error message should be non-enumerable. assert.strictEqual(descriptor.enumerable, false); })); -// Make sure that the error callback is called -// on next tick. +// Make sure that the error callback is called on next tick. tickValue = 1; + +// Should fail due to stub. +assert.rejects(dnsPromises.lookup('example.com'), + { code: 'ENOMEM', hostname: 'example.com' });