// Flags: --expose-internals --dns-result-order=verbatim 'use strict'; const common = require('../common'); const assert = require('assert'); const { internalBinding } = require('internal/test/binding'); const cares = internalBinding('cares_wrap'); const { promisify } = require('util'); // Test that --dns-result-order=verbatim works as expected. const originalGetaddrinfo = cares.getaddrinfo; const calls = []; cares.getaddrinfo = common.mustCallAtLeast((...args) => { calls.push(args); originalGetaddrinfo(...args); }, 1); const dns = require('dns'); const dnsPromises = dns.promises; // We want to test the parameter of verbatim only so that we // ignore possible errors here. function allowFailed(fn) { return fn.catch((_err) => { // }); } (async () => { let callsLength = 0; const checkParameter = (expected) => { assert.strictEqual(calls.length, callsLength + 1); const order = calls[callsLength][4]; assert.strictEqual(order, expected); callsLength += 1; }; await allowFailed(promisify(dns.lookup)('example.org')); checkParameter(cares.DNS_ORDER_VERBATIM); await allowFailed(dnsPromises.lookup('example.org')); checkParameter(cares.DNS_ORDER_VERBATIM); await allowFailed(promisify(dns.lookup)('example.org', {})); checkParameter(cares.DNS_ORDER_VERBATIM); await allowFailed(dnsPromises.lookup('example.org', {})); checkParameter(cares.DNS_ORDER_VERBATIM); await allowFailed( promisify(dns.lookup)('example.org', { order: 'ipv4first' }) ); checkParameter(cares.DNS_ORDER_IPV4_FIRST); await allowFailed( promisify(dns.lookup)('example.org', { order: 'ipv6first' }) ); checkParameter(cares.DNS_ORDER_IPV6_FIRST); })().then(common.mustCall());