Skip to content

Commit cd9a8ee

Browse files
committed
test_runner: cover randomized first subtest draw
1 parent d013ca5 commit cd9a8ee

File tree

7 files changed

+231
-161
lines changed

7 files changed

+231
-161
lines changed

β€Žlib/internal/test_runner/runner.jsβ€Ž

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,6 @@ function run(options = kEmptyObject) {
853853
const { isTestRunner } = globalOptions;
854854

855855
if (randomize) {
856-
testFiles = shuffleArrayWithSeed(testFiles, randomSeed);
857856
root.diagnostic(`Randomized test order seed: ${randomSeed}`);
858857
}
859858

β€Žlib/internal/test_runner/test.jsβ€Ž

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,7 @@ class Test extends AsyncResource {
696696
createSeededGenerator(this.config.randomSeed) :
697697
null;
698698
this.pendingSubtests = [];
699+
this.pendingSubtestsScheduled = false;
699700
this.readySubtests = new SafeMap();
700701
this.unfinishedSubtests = new SafeSet();
701702
this.subtestsPromise = null;
@@ -827,6 +828,18 @@ class Test extends AsyncResource {
827828
ArrayPrototypePush(this.pendingSubtests, deferred);
828829
}
829830

831+
schedulePendingSubtests() {
832+
if (this.pendingSubtestsScheduled) {
833+
return;
834+
}
835+
836+
this.pendingSubtestsScheduled = true;
837+
queueMicrotask(() => {
838+
this.pendingSubtestsScheduled = false;
839+
this.processPendingSubtests();
840+
});
841+
}
842+
830843
/**
831844
* Ensure each subtest has a contiguous, per-parent reporting order.
832845
* This is assigned at dequeue time for randomized runs, but tests that are
@@ -1124,6 +1137,19 @@ class Test extends AsyncResource {
11241137
return deferred.promise;
11251138
}
11261139

1140+
// When this parent dequeues subtests through subtestQueueRandom, defer the
1141+
// first start to the next microtask so siblings created in the same
1142+
// synchronous turn are all eligible for the first randomized pick, rather
1143+
// than letting declaration order claim the initial concurrency slot(s).
1144+
if (this.parent.subtestQueueRandom) {
1145+
const deferred = PromiseWithResolvers();
1146+
1147+
setOwnProperty(deferred, 'test', this);
1148+
this.parent.addPendingSubtest(deferred);
1149+
this.parent.schedulePendingSubtests();
1150+
return deferred.promise;
1151+
}
1152+
11271153
this.parent.assignReportOrder(this);
11281154
this.reporter.dequeue(this.nesting, this.loc, this.name, this.reportedType);
11291155
return this.run();

β€Žtest/fixtures/test-runner/output/randomize_nested_scenarios_output_cli_none.snapshotβ€Ž

Lines changed: 77 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,112 +1,112 @@
11
β–Ά nested-scenarios
22
β–Ά scenario describe-it
33
β–Ά describe-it block
4+
β–Ά describe-it 2
5+
β–Ά describe-it 2-2
6+
βœ” describe-it 2-2-2 (*ms)
7+
βœ” describe-it 2-2-1 (*ms)
8+
βœ” describe-it 2-2-3 (*ms)
9+
βœ” describe-it 2-2 (*ms)
10+
β–Ά describe-it 2-1
11+
βœ” describe-it 2-1-2 (*ms)
12+
βœ” describe-it 2-1-1 (*ms)
13+
βœ” describe-it 2-1-3 (*ms)
14+
βœ” describe-it 2-1 (*ms)
15+
β–Ά describe-it 2-3
16+
βœ” describe-it 2-3-2 (*ms)
17+
βœ” describe-it 2-3-1 (*ms)
18+
βœ” describe-it 2-3-3 (*ms)
19+
βœ” describe-it 2-3 (*ms)
20+
βœ” describe-it 2 (*ms)
421
β–Ά describe-it 1
22+
β–Ά describe-it 1-2
23+
βœ” describe-it 1-2-2 (*ms)
24+
βœ” describe-it 1-2-1 (*ms)
25+
βœ” describe-it 1-2-3 (*ms)
26+
βœ” describe-it 1-2 (*ms)
527
β–Ά describe-it 1-1
28+
βœ” describe-it 1-1-2 (*ms)
629
βœ” describe-it 1-1-1 (*ms)
730
βœ” describe-it 1-1-3 (*ms)
8-
βœ” describe-it 1-1-2 (*ms)
931
βœ” describe-it 1-1 (*ms)
1032
β–Ά describe-it 1-3
33+
βœ” describe-it 1-3-2 (*ms)
1134
βœ” describe-it 1-3-1 (*ms)
1235
βœ” describe-it 1-3-3 (*ms)
13-
βœ” describe-it 1-3-2 (*ms)
1436
βœ” describe-it 1-3 (*ms)
15-
β–Ά describe-it 1-2
16-
βœ” describe-it 1-2-1 (*ms)
17-
βœ” describe-it 1-2-3 (*ms)
18-
βœ” describe-it 1-2-2 (*ms)
19-
βœ” describe-it 1-2 (*ms)
2037
βœ” describe-it 1 (*ms)
2138
β–Ά describe-it 3
39+
β–Ά describe-it 3-2
40+
βœ” describe-it 3-2-2 (*ms)
41+
βœ” describe-it 3-2-1 (*ms)
42+
βœ” describe-it 3-2-3 (*ms)
43+
βœ” describe-it 3-2 (*ms)
2244
β–Ά describe-it 3-1
45+
βœ” describe-it 3-1-2 (*ms)
2346
βœ” describe-it 3-1-1 (*ms)
2447
βœ” describe-it 3-1-3 (*ms)
25-
βœ” describe-it 3-1-2 (*ms)
2648
βœ” describe-it 3-1 (*ms)
2749
β–Ά describe-it 3-3
50+
βœ” describe-it 3-3-2 (*ms)
2851
βœ” describe-it 3-3-1 (*ms)
2952
βœ” describe-it 3-3-3 (*ms)
30-
βœ” describe-it 3-3-2 (*ms)
3153
βœ” describe-it 3-3 (*ms)
32-
β–Ά describe-it 3-2
33-
βœ” describe-it 3-2-1 (*ms)
34-
βœ” describe-it 3-2-3 (*ms)
35-
βœ” describe-it 3-2-2 (*ms)
36-
βœ” describe-it 3-2 (*ms)
3754
βœ” describe-it 3 (*ms)
38-
β–Ά describe-it 2
39-
β–Ά describe-it 2-1
40-
βœ” describe-it 2-1-1 (*ms)
41-
βœ” describe-it 2-1-3 (*ms)
42-
βœ” describe-it 2-1-2 (*ms)
43-
βœ” describe-it 2-1 (*ms)
44-
β–Ά describe-it 2-3
45-
βœ” describe-it 2-3-1 (*ms)
46-
βœ” describe-it 2-3-3 (*ms)
47-
βœ” describe-it 2-3-2 (*ms)
48-
βœ” describe-it 2-3 (*ms)
49-
β–Ά describe-it 2-2
50-
βœ” describe-it 2-2-1 (*ms)
51-
βœ” describe-it 2-2-3 (*ms)
52-
βœ” describe-it 2-2-2 (*ms)
53-
βœ” describe-it 2-2 (*ms)
54-
βœ” describe-it 2 (*ms)
5555
βœ” describe-it block (*ms)
5656
βœ” scenario describe-it (*ms)
5757
β–Ά scenario static-no-await
5858
β–Ά static-no-await block
59+
β–Ά static-no-await 2
60+
β–Ά static-no-await 2-2
61+
βœ” static-no-await 2-2-2 (*ms)
62+
βœ” static-no-await 2-2-1 (*ms)
63+
βœ” static-no-await 2-2-3 (*ms)
64+
βœ” static-no-await 2-2 (*ms)
65+
β–Ά static-no-await 2-1
66+
βœ” static-no-await 2-1-2 (*ms)
67+
βœ” static-no-await 2-1-1 (*ms)
68+
βœ” static-no-await 2-1-3 (*ms)
69+
βœ” static-no-await 2-1 (*ms)
70+
β–Ά static-no-await 2-3
71+
βœ” static-no-await 2-3-2 (*ms)
72+
βœ” static-no-await 2-3-1 (*ms)
73+
βœ” static-no-await 2-3-3 (*ms)
74+
βœ” static-no-await 2-3 (*ms)
75+
βœ” static-no-await 2 (*ms)
5976
β–Ά static-no-await 1
77+
β–Ά static-no-await 1-2
78+
βœ” static-no-await 1-2-2 (*ms)
79+
βœ” static-no-await 1-2-1 (*ms)
80+
βœ” static-no-await 1-2-3 (*ms)
81+
βœ” static-no-await 1-2 (*ms)
6082
β–Ά static-no-await 1-1
83+
βœ” static-no-await 1-1-2 (*ms)
6184
βœ” static-no-await 1-1-1 (*ms)
6285
βœ” static-no-await 1-1-3 (*ms)
63-
βœ” static-no-await 1-1-2 (*ms)
6486
βœ” static-no-await 1-1 (*ms)
6587
β–Ά static-no-await 1-3
88+
βœ” static-no-await 1-3-2 (*ms)
6689
βœ” static-no-await 1-3-1 (*ms)
6790
βœ” static-no-await 1-3-3 (*ms)
68-
βœ” static-no-await 1-3-2 (*ms)
6991
βœ” static-no-await 1-3 (*ms)
70-
β–Ά static-no-await 1-2
71-
βœ” static-no-await 1-2-1 (*ms)
72-
βœ” static-no-await 1-2-3 (*ms)
73-
βœ” static-no-await 1-2-2 (*ms)
74-
βœ” static-no-await 1-2 (*ms)
7592
βœ” static-no-await 1 (*ms)
7693
β–Ά static-no-await 3
94+
β–Ά static-no-await 3-2
95+
βœ” static-no-await 3-2-2 (*ms)
96+
βœ” static-no-await 3-2-1 (*ms)
97+
βœ” static-no-await 3-2-3 (*ms)
98+
βœ” static-no-await 3-2 (*ms)
7799
β–Ά static-no-await 3-1
100+
βœ” static-no-await 3-1-2 (*ms)
78101
βœ” static-no-await 3-1-1 (*ms)
79102
βœ” static-no-await 3-1-3 (*ms)
80-
βœ” static-no-await 3-1-2 (*ms)
81103
βœ” static-no-await 3-1 (*ms)
82104
β–Ά static-no-await 3-3
105+
βœ” static-no-await 3-3-2 (*ms)
83106
βœ” static-no-await 3-3-1 (*ms)
84107
βœ” static-no-await 3-3-3 (*ms)
85-
βœ” static-no-await 3-3-2 (*ms)
86108
βœ” static-no-await 3-3 (*ms)
87-
β–Ά static-no-await 3-2
88-
βœ” static-no-await 3-2-1 (*ms)
89-
βœ” static-no-await 3-2-3 (*ms)
90-
βœ” static-no-await 3-2-2 (*ms)
91-
βœ” static-no-await 3-2 (*ms)
92109
βœ” static-no-await 3 (*ms)
93-
β–Ά static-no-await 2
94-
β–Ά static-no-await 2-1
95-
βœ” static-no-await 2-1-1 (*ms)
96-
βœ” static-no-await 2-1-3 (*ms)
97-
βœ” static-no-await 2-1-2 (*ms)
98-
βœ” static-no-await 2-1 (*ms)
99-
β–Ά static-no-await 2-3
100-
βœ” static-no-await 2-3-1 (*ms)
101-
βœ” static-no-await 2-3-3 (*ms)
102-
βœ” static-no-await 2-3-2 (*ms)
103-
βœ” static-no-await 2-3 (*ms)
104-
β–Ά static-no-await 2-2
105-
βœ” static-no-await 2-2-1 (*ms)
106-
βœ” static-no-await 2-2-3 (*ms)
107-
βœ” static-no-await 2-2-2 (*ms)
108-
βœ” static-no-await 2-2 (*ms)
109-
βœ” static-no-await 2 (*ms)
110110
βœ” static-no-await block (*ms)
111111
βœ” scenario static-no-await (*ms)
112112
β–Ά scenario static-await
@@ -166,39 +166,39 @@
166166
βœ” scenario static-await (*ms)
167167
β–Ά scenario mixed-await-normal
168168
β–Ά mixed-await-normal block
169+
β–Ά mixed-await-normal 2
170+
βœ” mixed-await-normal 2-1-awaited (*ms)
171+
βœ” mixed-await-normal 2-1-sync-before (*ms)
172+
βœ” mixed-await-normal 2-1-sync-after (*ms)
173+
βœ” mixed-await-normal 2-2-awaited (*ms)
174+
βœ” mixed-await-normal 2-2-sync-before (*ms)
175+
βœ” mixed-await-normal 2-3-awaited (*ms)
176+
βœ” mixed-await-normal 2-3-sync-before (*ms)
177+
βœ” mixed-await-normal 2-2-sync-after (*ms)
178+
βœ” mixed-await-normal 2-3-sync-after (*ms)
179+
βœ” mixed-await-normal 2 (*ms)
169180
β–Ά mixed-await-normal 1
170-
βœ” mixed-await-normal 1-1-sync-before (*ms)
171181
βœ” mixed-await-normal 1-1-awaited (*ms)
182+
βœ” mixed-await-normal 1-1-sync-before (*ms)
172183
βœ” mixed-await-normal 1-1-sync-after (*ms)
173184
βœ” mixed-await-normal 1-2-awaited (*ms)
174185
βœ” mixed-await-normal 1-2-sync-before (*ms)
175-
βœ” mixed-await-normal 1-2-sync-after (*ms)
176186
βœ” mixed-await-normal 1-3-awaited (*ms)
177187
βœ” mixed-await-normal 1-3-sync-before (*ms)
188+
βœ” mixed-await-normal 1-2-sync-after (*ms)
178189
βœ” mixed-await-normal 1-3-sync-after (*ms)
179190
βœ” mixed-await-normal 1 (*ms)
180191
β–Ά mixed-await-normal 3
181-
βœ” mixed-await-normal 3-1-sync-before (*ms)
182192
βœ” mixed-await-normal 3-1-awaited (*ms)
193+
βœ” mixed-await-normal 3-1-sync-before (*ms)
183194
βœ” mixed-await-normal 3-1-sync-after (*ms)
184195
βœ” mixed-await-normal 3-2-awaited (*ms)
185196
βœ” mixed-await-normal 3-2-sync-before (*ms)
186-
βœ” mixed-await-normal 3-2-sync-after (*ms)
187197
βœ” mixed-await-normal 3-3-awaited (*ms)
188198
βœ” mixed-await-normal 3-3-sync-before (*ms)
199+
βœ” mixed-await-normal 3-2-sync-after (*ms)
189200
βœ” mixed-await-normal 3-3-sync-after (*ms)
190201
βœ” mixed-await-normal 3 (*ms)
191-
β–Ά mixed-await-normal 2
192-
βœ” mixed-await-normal 2-1-sync-before (*ms)
193-
βœ” mixed-await-normal 2-1-awaited (*ms)
194-
βœ” mixed-await-normal 2-1-sync-after (*ms)
195-
βœ” mixed-await-normal 2-2-awaited (*ms)
196-
βœ” mixed-await-normal 2-2-sync-before (*ms)
197-
βœ” mixed-await-normal 2-2-sync-after (*ms)
198-
βœ” mixed-await-normal 2-3-awaited (*ms)
199-
βœ” mixed-await-normal 2-3-sync-before (*ms)
200-
βœ” mixed-await-normal 2-3-sync-after (*ms)
201-
βœ” mixed-await-normal 2 (*ms)
202202
βœ” mixed-await-normal block (*ms)
203203
βœ” scenario mixed-await-normal (*ms)
204204
βœ” nested-scenarios (*ms)

0 commit comments

Comments
Β (0)