Skip to content

Commit 30fb4a0

Browse files
tniessenaduh95
authored andcommitted
test: add common.mustSucceed
PR-URL: #35086 Reviewed-By: Ruy Adorno <ruyadorno@github.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
1 parent eeb6b47 commit 30fb4a0

File tree

149 files changed

+532
-826
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

149 files changed

+532
-826
lines changed

doc/guides/writing-tests.md

+5
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,11 @@ const server = http.createServer(common.mustCall((req, res) => {
209209

210210
```
211211

212+
**Note:** Many functions invoke their callback with an `err` value as the first
213+
argument. It is not a good idea to simply pass `common.mustCall()` to those
214+
because `common.mustCall()` will ignore the error. Use `common.mustSucceed()`
215+
instead.
216+
212217
#### Countdown Module
213218

214219
The common [Countdown module](https://github.com/nodejs/node/tree/master/test/common#countdown-module)

test/.eslintrc.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ rules:
5050
node-core/prefer-assert-iferror: error
5151
node-core/prefer-assert-methods: error
5252
node-core/prefer-common-mustnotcall: error
53+
node-core/prefer-common-mustsucceed: error
5354
node-core/crypto-check: error
5455
node-core/eslint-check: error
5556
node-core/async-iife-no-unused-result: error

test/common/README.md

+9
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,15 @@ If `fn` is not provided, an empty function will be used.
314314
Returns a function that triggers an `AssertionError` if it is invoked. `msg` is
315315
used as the error message for the `AssertionError`.
316316

317+
### `mustSucceed([fn])`
318+
319+
* `fn` [&lt;Function>][] default = () => {}
320+
* return [&lt;Function>][]
321+
322+
Returns a function that accepts arguments `(err, ...args)`. If `err` is not
323+
`undefined` or `null`, it triggers an `AssertionError`. Otherwise, it calls
324+
`fn(...args)`.
325+
317326
### `nodeProcessAborted(exitCode, signal)`
318327

319328
* `exitCode` [&lt;number>][]

test/common/index.js

+9
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,14 @@ function mustCall(fn, exact) {
335335
return _mustCallInner(fn, exact, 'exact');
336336
}
337337

338+
function mustSucceed(fn, exact) {
339+
return mustCall(function(err, ...args) {
340+
assert.ifError(err);
341+
if (typeof fn === 'function')
342+
return fn.apply(this, args);
343+
}, exact);
344+
}
345+
338346
function mustCallAtLeast(fn, minimum) {
339347
return _mustCallInner(fn, minimum, 'minimum');
340348
}
@@ -722,6 +730,7 @@ const common = {
722730
mustCall,
723731
mustCallAtLeast,
724732
mustNotCall,
733+
mustSucceed,
725734
nodeProcessAborted,
726735
PIPE,
727736
platformTimeout,

test/doctool/test-doctool-json.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -229,10 +229,8 @@ const testData = [
229229
];
230230

231231
testData.forEach((item) => {
232-
fs.readFile(item.file, 'utf8', common.mustCall((err, input) => {
233-
assert.ifError(err);
234-
toJSON(input, 'foo', common.mustCall((err, output) => {
235-
assert.ifError(err);
232+
fs.readFile(item.file, 'utf8', common.mustSucceed((input) => {
233+
toJSON(input, 'foo', common.mustSucceed((output) => {
236234
assert.deepStrictEqual(output.json, item.json);
237235
}));
238236
}));

test/internet/test-dns-any.js

+3-6
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,7 @@ TEST(async function test_sip2sip_for_naptr(done) {
127127
const req = dns.resolve(
128128
'sip2sip.info',
129129
'ANY',
130-
common.mustCall(function(err, ret) {
131-
assert.ifError(err);
130+
common.mustSucceed((ret) => {
132131
validateResult(ret);
133132
done();
134133
}));
@@ -147,8 +146,7 @@ TEST(async function test_google_for_cname_and_srv(done) {
147146
const req = dns.resolve(
148147
'_jabber._tcp.google.com',
149148
'ANY',
150-
common.mustCall(function(err, ret) {
151-
assert.ifError(err);
149+
common.mustSucceed((ret) => {
152150
validateResult(ret);
153151
done();
154152
}));
@@ -167,8 +165,7 @@ TEST(async function test_ptr(done) {
167165
const req = dns.resolve(
168166
'8.8.8.8.in-addr.arpa',
169167
'ANY',
170-
common.mustCall(function(err, ret) {
171-
assert.ifError(err);
168+
common.mustSucceed((ret) => {
172169
validateResult(ret);
173170
done();
174171
}));

test/internet/test-dns-ipv4.js

+10-20
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@ TEST(async function test_resolve4(done) {
5050

5151
const req = dns.resolve4(
5252
addresses.INET4_HOST,
53-
common.mustCall((err, ips) => {
54-
assert.ifError(err);
53+
common.mustSucceed((ips) => {
5554
validateResult(ips);
5655
done();
5756
}));
@@ -73,8 +72,7 @@ TEST(async function test_reverse_ipv4(done) {
7372

7473
const req = dns.reverse(
7574
addresses.INET4_IP,
76-
common.mustCall((err, domains) => {
77-
assert.ifError(err);
75+
common.mustSucceed((domains) => {
7876
validateResult(domains);
7977
done();
8078
}));
@@ -92,8 +90,7 @@ TEST(async function test_lookup_ipv4_explicit(done) {
9290

9391
const req = dns.lookup(
9492
addresses.INET4_HOST, 4,
95-
common.mustCall((err, ip, family) => {
96-
assert.ifError(err);
93+
common.mustSucceed((ip, family) => {
9794
validateResult({ address: ip, family });
9895
done();
9996
}));
@@ -111,8 +108,7 @@ TEST(async function test_lookup_ipv4_implicit(done) {
111108

112109
const req = dns.lookup(
113110
addresses.INET4_HOST,
114-
common.mustCall((err, ip, family) => {
115-
assert.ifError(err);
111+
common.mustSucceed((ip, family) => {
116112
validateResult({ address: ip, family });
117113
done();
118114
}));
@@ -130,8 +126,7 @@ TEST(async function test_lookup_ipv4_explicit_object(done) {
130126

131127
const req = dns.lookup(addresses.INET4_HOST, {
132128
family: 4
133-
}, common.mustCall((err, ip, family) => {
134-
assert.ifError(err);
129+
}, common.mustSucceed((ip, family) => {
135130
validateResult({ address: ip, family });
136131
done();
137132
}));
@@ -151,8 +146,7 @@ TEST(async function test_lookup_ipv4_hint_addrconfig(done) {
151146

152147
const req = dns.lookup(addresses.INET4_HOST, {
153148
hints: dns.ADDRCONFIG
154-
}, common.mustCall((err, ip, family) => {
155-
assert.ifError(err);
149+
}, common.mustSucceed((ip, family) => {
156150
validateResult({ address: ip, family });
157151
done();
158152
}));
@@ -169,8 +163,7 @@ TEST(async function test_lookup_ip_ipv4(done) {
169163
validateResult(await dnsPromises.lookup('127.0.0.1'));
170164

171165
const req = dns.lookup('127.0.0.1',
172-
common.mustCall((err, ip, family) => {
173-
assert.ifError(err);
166+
common.mustSucceed((ip, family) => {
174167
validateResult({ address: ip, family });
175168
done();
176169
}));
@@ -187,8 +180,7 @@ TEST(async function test_lookup_localhost_ipv4(done) {
187180
validateResult(await dnsPromises.lookup('localhost', 4));
188181

189182
const req = dns.lookup('localhost', 4,
190-
common.mustCall((err, ip, family) => {
191-
assert.ifError(err);
183+
common.mustSucceed((ip, family) => {
192184
validateResult({ address: ip, family });
193185
done();
194186
}));
@@ -215,8 +207,7 @@ TEST(async function test_lookup_all_ipv4(done) {
215207
const req = dns.lookup(
216208
addresses.INET4_HOST,
217209
{ all: true, family: 4 },
218-
common.mustCall((err, ips) => {
219-
assert.ifError(err);
210+
common.mustSucceed((ips) => {
220211
validateResult(ips);
221212
done();
222213
})
@@ -236,8 +227,7 @@ TEST(async function test_lookupservice_ip_ipv4(done) {
236227

237228
const req = dns.lookupService(
238229
'127.0.0.1', 80,
239-
common.mustCall((err, hostname, service) => {
240-
assert.ifError(err);
230+
common.mustSucceed((hostname, service) => {
241231
validateResult({ hostname, service });
242232
done();
243233
})

test/internet/test-dns-ipv6.js

+6-12
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,7 @@ TEST(async function test_resolve6(done) {
5252

5353
const req = dns.resolve6(
5454
addresses.INET6_HOST,
55-
common.mustCall((err, ips) => {
56-
assert.ifError(err);
55+
common.mustSucceed((ips) => {
5756
validateResult(ips);
5857
done();
5958
}));
@@ -74,8 +73,7 @@ TEST(async function test_reverse_ipv6(done) {
7473

7574
const req = dns.reverse(
7675
addresses.INET6_IP,
77-
common.mustCall((err, domains) => {
78-
assert.ifError(err);
76+
common.mustSucceed((domains) => {
7977
validateResult(domains);
8078
done();
8179
}));
@@ -94,8 +92,7 @@ TEST(async function test_lookup_ipv6_explicit(done) {
9492
const req = dns.lookup(
9593
addresses.INET6_HOST,
9694
6,
97-
common.mustCall((err, ip, family) => {
98-
assert.ifError(err);
95+
common.mustSucceed((ip, family) => {
9996
validateResult({ address: ip, family });
10097
done();
10198
}));
@@ -126,8 +123,7 @@ TEST(async function test_lookup_ipv6_explicit_object(done) {
126123

127124
const req = dns.lookup(addresses.INET6_HOST, {
128125
family: 6
129-
}, common.mustCall((err, ip, family) => {
130-
assert.ifError(err);
126+
}, common.mustSucceed((ip, family) => {
131127
validateResult({ address: ip, family });
132128
done();
133129
}));
@@ -173,8 +169,7 @@ TEST(async function test_lookup_ip_ipv6(done) {
173169

174170
const req = dns.lookup(
175171
'::1',
176-
common.mustCall((err, ip, family) => {
177-
assert.ifError(err);
172+
common.mustSucceed((ip, family) => {
178173
validateResult({ address: ip, family });
179174
done();
180175
}));
@@ -202,8 +197,7 @@ TEST(async function test_lookup_all_ipv6(done) {
202197
const req = dns.lookup(
203198
addresses.INET6_HOST,
204199
{ all: true, family: 6 },
205-
common.mustCall((err, ips) => {
206-
assert.ifError(err);
200+
common.mustSucceed((ips) => {
207201
validateResult(ips);
208202
done();
209203
})

test/internet/test-http2-issue-32922.js

+3-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
'use strict';
22
const common = require('../common');
3-
const assert = require('assert');
43

54
if (!common.hasCrypto)
65
common.skip('missing crypto');
@@ -29,9 +28,7 @@ function normalSession(cb) {
2928
});
3029
});
3130
}
32-
normalSession(common.mustCall(function(err) {
33-
assert.ifError(err);
34-
}));
31+
normalSession(common.mustSucceed());
3532

3633
// Create a session using a socket that has not yet finished connecting
3734
function socketNotFinished(done) {
@@ -52,9 +49,7 @@ function socketNotFinished(done) {
5249
});
5350
});
5451
}
55-
socketNotFinished(common.mustCall(function(err) {
56-
assert.ifError(err);
57-
}));
52+
socketNotFinished(common.mustSucceed());
5853

5954
// Create a session using a socket that has finished connecting
6055
function socketFinished(done) {
@@ -75,6 +70,4 @@ function socketFinished(done) {
7570
});
7671
});
7772
}
78-
socketFinished(common.mustCall(function(err) {
79-
assert.ifError(err);
80-
}));
73+
socketFinished(common.mustSucceed());

test/parallel/test-c-ares.js

+4-8
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,17 @@ const dnsPromises = dns.promises;
4343
})().then(common.mustCall());
4444

4545
// Try resolution without hostname.
46-
dns.lookup(null, common.mustCall((error, result, addressType) => {
47-
assert.ifError(error);
46+
dns.lookup(null, common.mustSucceed((result, addressType) => {
4847
assert.strictEqual(result, null);
4948
assert.strictEqual(addressType, 4);
5049
}));
5150

52-
dns.lookup('127.0.0.1', common.mustCall((error, result, addressType) => {
53-
assert.ifError(error);
51+
dns.lookup('127.0.0.1', common.mustSucceed((result, addressType) => {
5452
assert.strictEqual(result, '127.0.0.1');
5553
assert.strictEqual(addressType, 4);
5654
}));
5755

58-
dns.lookup('::1', common.mustCall((error, result, addressType) => {
59-
assert.ifError(error);
56+
dns.lookup('::1', common.mustSucceed((result, addressType) => {
6057
assert.strictEqual(result, '::1');
6158
assert.strictEqual(addressType, 6);
6259
}));
@@ -86,8 +83,7 @@ dns.lookup('::1', common.mustCall((error, result, addressType) => {
8683
// so we disable this test on Windows.
8784
// IBMi reports `ENOTFOUND` when get hostname by address 127.0.0.1
8885
if (!common.isWindows && !common.isIBMi) {
89-
dns.reverse('127.0.0.1', common.mustCall(function(error, domains) {
90-
assert.ifError(error);
86+
dns.reverse('127.0.0.1', common.mustSucceed((domains) => {
9187
assert.ok(Array.isArray(domains));
9288
}));
9389

test/parallel/test-child-process-exec-any-shells-windows.js

+5-6
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ fs.mkdirSync(tmpPath);
1717

1818
const test = (shell) => {
1919
cp.exec('echo foo bar', { shell: shell },
20-
common.mustCall((error, stdout, stderror) => {
21-
assert.ok(!error && !stderror);
20+
common.mustSucceed((stdout, stderror) => {
21+
assert.ok(!stderror);
2222
assert.ok(stdout.includes('foo') && stdout.includes('bar'));
2323
}));
2424
};
@@ -43,12 +43,11 @@ test('CMD');
4343
test('powershell');
4444
testCopy('powershell.exe',
4545
`${system32}\\WindowsPowerShell\\v1.0\\powershell.exe`);
46-
fs.writeFile(`${tmpPath}\\test file`, 'Test', common.mustCall((err) => {
47-
assert.ifError(err);
46+
fs.writeFile(`${tmpPath}\\test file`, 'Test', common.mustSucceed(() => {
4847
cp.exec(`Get-ChildItem "${tmpPath}" | Select-Object -Property Name`,
4948
{ shell: 'PowerShell' },
50-
common.mustCall((error, stdout, stderror) => {
51-
assert.ok(!error && !stderror);
49+
common.mustSucceed((stdout, stderror) => {
50+
assert.ok(!stderror);
5251
assert.ok(stdout.includes(
5352
'test file'));
5453
}));

test/parallel/test-child-process-exec-cwd.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ if (common.isWindows) {
3434
dir = '/dev';
3535
}
3636

37-
exec(pwdcommand, { cwd: dir }, common.mustCall(function(err, stdout, stderr) {
38-
assert.ifError(err);
37+
exec(pwdcommand, { cwd: dir }, common.mustSucceed((stdout, stderr) => {
3938
assert(stdout.startsWith(dir));
4039
}));

test/parallel/test-child-process-exec-encoding.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ if (process.argv[2] === 'child') {
1515
function run(options, callback) {
1616
const cmd = `"${process.execPath}" "${__filename}" child`;
1717

18-
cp.exec(cmd, options, common.mustCall((err, stdout, stderr) => {
19-
assert.ifError(err);
18+
cp.exec(cmd, options, common.mustSucceed((stdout, stderr) => {
2019
callback(stdout, stderr);
2120
}));
2221
}

0 commit comments

Comments
 (0)