test_runner: fix suite rerun edge case · nodejs/node@3e72065
@@ -27,6 +27,13 @@ const expectedStateFile = [
2727'test/fixtures/test-runner/rerun.js:44:3': { passed_on_attempt: 0, name: 'passed on first attempt' },
2828'test/fixtures/test-runner/rerun.js:47:3': { passed_on_attempt: 0, name: 'a' },
2929'test/fixtures/test-runner/rerun.js:43:1': { passed_on_attempt: 0, name: 'describe rerun' },
30+'test/fixtures/test-runner/rerun.js:59:7': { passed_on_attempt: 0, name: 'shared sub A' },
31+'test/fixtures/test-runner/rerun.js:60:7': { passed_on_attempt: 0, name: 'shared sub B' },
32+'test/fixtures/test-runner/rerun.js:65:3': { passed_on_attempt: 0, name: 'first caller' },
33+'test/fixtures/test-runner/rerun.js:59:7:(1)': { passed_on_attempt: 0, name: 'shared sub A' },
34+'test/fixtures/test-runner/rerun.js:60:7:(1)': { passed_on_attempt: 0, name: 'shared sub B' },
35+'test/fixtures/test-runner/rerun.js:66:3': { passed_on_attempt: 0, name: 'second caller' },
36+'test/fixtures/test-runner/rerun.js:64:1': { passed_on_attempt: 0, name: 'rerun with ambiguous shared helper' },
3037},
3138{
3239'test/fixtures/test-runner/rerun.js:9:1': { passed_on_attempt: 0, name: 'ok' },
@@ -38,11 +45,17 @@ const expectedStateFile = [
3845'test/fixtures/test-runner/rerun.js:39:1': { passed_on_attempt: 0, name: 'nested ambiguous (expectedAttempts=0)' },
3946'test/fixtures/test-runner/rerun.js:30:16:(1)': { passed_on_attempt: 0, name: '2 levels deep' },
4047'test/fixtures/test-runner/rerun.js:35:13:(1)': { passed_on_attempt: 0, name: 'ok' },
41-'test/fixtures/test-runner/rerun.js:43:1': { passed_on_attempt: 0, name: 'describe rerun' },
42-'test/fixtures/test-runner/rerun.js:44:3': { passed_on_attempt: 0, name: 'passed on first attempt' },
4348'test/fixtures/test-runner/rerun.js:45:13': { passed_on_attempt: 0, name: 'nested' },
44-'test/fixtures/test-runner/rerun.js:45:13:(1)': { passed_on_attempt: 1, name: 'nested' },
49+'test/fixtures/test-runner/rerun.js:44:3': { passed_on_attempt: 0, name: 'passed on first attempt' },
4550'test/fixtures/test-runner/rerun.js:47:3': { passed_on_attempt: 0, name: 'a' },
51+'test/fixtures/test-runner/rerun.js:43:1': { passed_on_attempt: 0, name: 'describe rerun' },
52+'test/fixtures/test-runner/rerun.js:59:7': { passed_on_attempt: 0, name: 'shared sub A' },
53+'test/fixtures/test-runner/rerun.js:60:7': { passed_on_attempt: 0, name: 'shared sub B' },
54+'test/fixtures/test-runner/rerun.js:65:3': { passed_on_attempt: 0, name: 'first caller' },
55+'test/fixtures/test-runner/rerun.js:59:7:(1)': { passed_on_attempt: 0, name: 'shared sub A' },
56+'test/fixtures/test-runner/rerun.js:60:7:(1)': { passed_on_attempt: 0, name: 'shared sub B' },
57+'test/fixtures/test-runner/rerun.js:66:3': { passed_on_attempt: 0, name: 'second caller' },
58+'test/fixtures/test-runner/rerun.js:64:1': { passed_on_attempt: 0, name: 'rerun with ambiguous shared helper' },
4659},
4760{
4861'test/fixtures/test-runner/rerun.js:3:1': { passed_on_attempt: 2, name: 'should fail on first two attempts' },
@@ -53,15 +66,21 @@ const expectedStateFile = [
5366'test/fixtures/test-runner/rerun.js:29:13': { passed_on_attempt: 0, name: 'nested' },
5467'test/fixtures/test-runner/rerun.js:35:13': { passed_on_attempt: 0, name: 'ok' },
5568'test/fixtures/test-runner/rerun.js:39:1': { passed_on_attempt: 0, name: 'nested ambiguous (expectedAttempts=0)' },
56-'test/fixtures/test-runner/rerun.js:29:13:(1)': { passed_on_attempt: 2, name: 'nested' },
5769'test/fixtures/test-runner/rerun.js:30:16:(1)': { passed_on_attempt: 0, name: '2 levels deep' },
70+'test/fixtures/test-runner/rerun.js:29:13:(1)': { passed_on_attempt: 2, name: 'nested' },
5871'test/fixtures/test-runner/rerun.js:35:13:(1)': { passed_on_attempt: 0, name: 'ok' },
5972'test/fixtures/test-runner/rerun.js:40:1': { passed_on_attempt: 2, name: 'nested ambiguous (expectedAttempts=1)' },
60-'test/fixtures/test-runner/rerun.js:43:1': { passed_on_attempt: 0, name: 'describe rerun' },
61-'test/fixtures/test-runner/rerun.js:44:3': { passed_on_attempt: 0, name: 'passed on first attempt' },
6273'test/fixtures/test-runner/rerun.js:45:13': { passed_on_attempt: 0, name: 'nested' },
63-'test/fixtures/test-runner/rerun.js:45:13:(1)': { passed_on_attempt: 1, name: 'nested' },
74+'test/fixtures/test-runner/rerun.js:44:3': { passed_on_attempt: 0, name: 'passed on first attempt' },
6475'test/fixtures/test-runner/rerun.js:47:3': { passed_on_attempt: 0, name: 'a' },
76+'test/fixtures/test-runner/rerun.js:43:1': { passed_on_attempt: 0, name: 'describe rerun' },
77+'test/fixtures/test-runner/rerun.js:59:7': { passed_on_attempt: 0, name: 'shared sub A' },
78+'test/fixtures/test-runner/rerun.js:60:7': { passed_on_attempt: 0, name: 'shared sub B' },
79+'test/fixtures/test-runner/rerun.js:65:3': { passed_on_attempt: 0, name: 'first caller' },
80+'test/fixtures/test-runner/rerun.js:59:7:(1)': { passed_on_attempt: 0, name: 'shared sub A' },
81+'test/fixtures/test-runner/rerun.js:60:7:(1)': { passed_on_attempt: 0, name: 'shared sub B' },
82+'test/fixtures/test-runner/rerun.js:66:3': { passed_on_attempt: 0, name: 'second caller' },
83+'test/fixtures/test-runner/rerun.js:64:1': { passed_on_attempt: 0, name: 'rerun with ambiguous shared helper' },
6584},
6685];
6786@@ -81,26 +100,26 @@ test('test should pass on third rerun', async () => {
81100let { code, stdout, signal } = await common.spawnPromisified(process.execPath, args);
82101assert.strictEqual(code, 1);
83102assert.strictEqual(signal, null);
84-assert.match(stdout, /pass 11/);
103+assert.match(stdout, /pass 17/);
85104assert.match(stdout, /fail 4/);
86-assert.match(stdout, /suites 1/);
105+assert.match(stdout, /suites 2/);
87106assert.deepStrictEqual(await getStateFile(), expectedStateFile.slice(0, 1));
8810789108({ code, stdout, signal } = await common.spawnPromisified(process.execPath, args));
90109assert.strictEqual(code, 1);
91110assert.strictEqual(signal, null);
92-assert.match(stdout, /pass 13/);
111+assert.match(stdout, /pass 18/);
93112assert.match(stdout, /fail 3/);
94-assert.match(stdout, /suites 1/);
113+assert.match(stdout, /suites 2/);
95114assert.deepStrictEqual(await getStateFile(), expectedStateFile.slice(0, 2));
961159711698117({ code, stdout, signal } = await common.spawnPromisified(process.execPath, args));
99118assert.strictEqual(code, 0);
100119assert.strictEqual(signal, null);
101-assert.match(stdout, /pass 18/);
120+assert.match(stdout, /pass 21/);
102121assert.match(stdout, /fail 0/);
103-assert.match(stdout, /suites 1/);
122+assert.match(stdout, /suites 2/);
104123assert.deepStrictEqual(await getStateFile(), expectedStateFile);
105124});
106125@@ -110,32 +129,32 @@ test('test should pass on third rerun with `--test`', async () => {
110129let { code, stdout, signal } = await common.spawnPromisified(process.execPath, args);
111130assert.strictEqual(code, 1);
112131assert.strictEqual(signal, null);
113-assert.match(stdout, /pass 11/);
132+assert.match(stdout, /pass 17/);
114133assert.match(stdout, /fail 4/);
115-assert.match(stdout, /suites 1/);
134+assert.match(stdout, /suites 2/);
116135assert.deepStrictEqual(await getStateFile(), expectedStateFile.slice(0, 1));
117136118137({ code, stdout, signal } = await common.spawnPromisified(process.execPath, args));
119138assert.strictEqual(code, 1);
120139assert.strictEqual(signal, null);
121-assert.match(stdout, /pass 13/);
140+assert.match(stdout, /pass 18/);
122141assert.match(stdout, /fail 3/);
123-assert.match(stdout, /suites 1/);
142+assert.match(stdout, /suites 2/);
124143assert.deepStrictEqual(await getStateFile(), expectedStateFile.slice(0, 2));
125144126145127146({ code, stdout, signal } = await common.spawnPromisified(process.execPath, args));
128147assert.strictEqual(code, 0);
129148assert.strictEqual(signal, null);
130-assert.match(stdout, /pass 18/);
149+assert.match(stdout, /pass 21/);
131150assert.match(stdout, /fail 0/);
132-assert.match(stdout, /suites 1/);
151+assert.match(stdout, /suites 2/);
133152assert.deepStrictEqual(await getStateFile(), expectedStateFile);
134153});
135154136155test('using `run` api', async () => {
137156let stream = run({ files: [fixture], rerunFailuresFilePath: stateFile });
138-stream.on('test:pass', common.mustCall(12));
157+stream.on('test:pass', common.mustCall(19));
139158stream.on('test:fail', common.mustCall(4));
140159141160// eslint-disable-next-line no-unused-vars
@@ -145,7 +164,7 @@ test('using `run` api', async () => {
145164146165147166stream = run({ files: [fixture], rerunFailuresFilePath: stateFile });
148-stream.on('test:pass', common.mustCall(14));
167+stream.on('test:pass', common.mustCall(20));
149168stream.on('test:fail', common.mustCall(3));
150169151170// eslint-disable-next-line no-unused-vars
@@ -155,7 +174,7 @@ test('using `run` api', async () => {
155174156175157176stream = run({ files: [fixture], rerunFailuresFilePath: stateFile });
158-stream.on('test:pass', common.mustCall(19));
177+stream.on('test:pass', common.mustCall(23));
159178stream.on('test:fail', common.mustNotCall());
160179161180// eslint-disable-next-line no-unused-vars