Skip to content

Commit 3d89623

Browse files
Trotttargos
authored andcommitted
test: fix flaky test-policy-integrity
Split the test into seven tests so that it doesn't time out. Fixes: #40694Fixes: #38088 PR-URL: #40763 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Bradley Farias <bradley.meck@gmail.com>
1 parent 5ceb06c commit 3d89623

8 files changed

Lines changed: 2139 additions & 50 deletions

‎test/pummel/pummel.status‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@ prefix pummel
77
[true] # This section applies to all platforms
88

99
[$system==win32]
10-
# https://github.com/nodejs/node/issues/40694
11-
test-policy-integrity: PASS,FLAKY
1210

1311
[$system==linux]
1412
# https://github.com/nodejs/node/issues/38226
Lines changed: 14 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -60,24 +60,6 @@ const parentBody = {
6060
import(process.env.DEP_FILE)
6161
`,
6262
};
63-
constworkerSpawningBody=`
64-
const path = require('path');
65-
const { Worker } = require('worker_threads');
66-
if (!process.env.PARENT_FILE) {
67-
console.error(
68-
'missing required PARENT_FILE env to determine worker entry point'
69-
);
70-
process.exit(33);
71-
}
72-
if (!process.env.DELETABLE_POLICY_FILE) {
73-
console.error(
74-
'missing required DELETABLE_POLICY_FILE env to check reloading'
75-
);
76-
process.exit(33);
77-
}
78-
const w = new Worker(path.resolve(process.env.PARENT_FILE));
79-
w.on('exit', (status) => process.exit(status === 0 ? 0 : 1));
80-
`;
8163

8264
letnextTestId=1;
8365
functionnewTestId(){
@@ -100,12 +82,11 @@ function drainQueue() {
10082
if(toSpawn.length){
10183
constconfig=toSpawn.shift();
10284
const{
103-
shouldSucceed,// = (() => { throw new Error('required')})(),
104-
preloads,// = (() =>{ throw new Error('required')})(),
105-
entryPath,// = (() => { throw new Error('required')})(),
106-
willDeletePolicy,// = (() => { throw new Error('required')})(),
107-
onError,// = (() => { throw new Error('required')})(),
108-
resources,// = (() => { throw new Error('required')})(),
85+
shouldSucceed,
86+
preloads,
87+
entryPath,
88+
onError,
89+
resources,
10990
parentPath,
11091
depPath,
11192
}=config;
@@ -118,7 +99,7 @@ function drainQueue() {
11899
tmpdir.path,
119100
`deletable-policy-${testId}.json`
120101
);
121-
constcliPolicy=willDeletePolicy ? tmpPolicyPath : policyPath;
102+
122103
fs.rmSync(configDirPath,{maxRetries: 3,recursive: true,force: true});
123104
fs.mkdirSync(configDirPath,{recursive: true});
124105
constmanifest={
@@ -140,15 +121,15 @@ function drainQueue() {
140121
}
141122
constmanifestBody=JSON.stringify(manifest);
142123
fs.writeFileSync(manifestPath,manifestBody);
143-
if(cliPolicy===tmpPolicyPath){
124+
if(policyPath===tmpPolicyPath){
144125
fs.writeFileSync(tmpPolicyPath,manifestBody);
145126
}
146127
constspawnArgs=[
147128
process.execPath,
148129
[
149130
'--unhandled-rejections=strict',
150131
'--experimental-policy',
151-
cliPolicy,
132+
policyPath,
152133
...preloads.flatMap((m)=>['-r',m]),
153134
entryPath,
154135
'--',
@@ -255,7 +236,6 @@ function fileExtensionFormat(extension, packageType) {
255236
thrownewError('unknown format '+extension);
256237
}
257238
for(constpermutationofpermutations({
258-
entry: ['worker','parent','dep'],
259239
preloads: [[],['parent'],['dep']],
260240
onError: ['log','exit'],
261241
parentExtension: ['.js','.mjs','.cjs'],
@@ -282,14 +262,9 @@ for (const permutation of permutations({
282262
continue;
283263
}
284264
constdepPath=`./dep${permutation.depExtension}`;
285-
constworkerSpawnerPath='./worker-spawner.cjs';
286-
constentryPath={
287-
dep: depPath,
288-
parent: parentPath,
289-
worker: workerSpawnerPath,
290-
}[permutation.entry];
265+
291266
constpackageJSON={
292-
main: entryPath,
267+
main: depPath,
293268
type: permutation.packageType,
294269
};
295270
if(permutation.packageType==='no-field'){
@@ -314,8 +289,7 @@ for (const permutation of permutations({
314289
if(parentFormat!=='commonjs'){
315290
permutation.preloads=permutation.preloads.filter((_)=>_!=='parent');
316291
}
317-
consthasParent=
318-
permutation.entry!=='dep'||permutation.preloads.includes('parent');
292+
consthasParent=permutation.preloads.includes('parent');
319293
if(hasParent){
320294
resources[parentPath]={
321295
body: parentBody[parentFormat],
@@ -332,12 +306,7 @@ for (const permutation of permutations({
332306
thrownewError('unreachable');
333307
}
334308
}
335-
if(permutation.entry==='worker'){
336-
resources[workerSpawnerPath]={
337-
body: workerSpawningBody,
338-
integrities: hash('sha256',workerSpawningBody),
339-
};
340-
}
309+
341310
if(permutation.packageType!=='no-package-json'){
342311
letpackageBody=JSON.stringify(packageJSON,null,2);
343312
letpackageIntegrities=hash('sha256',packageBody);
@@ -364,18 +333,15 @@ for (const permutation of permutations({
364333
integrities: packageIntegrities,
365334
};
366335
}
367-
constwillDeletePolicy=permutation.entry==='worker';
336+
368337
if(permutation.onError==='log'){
369338
shouldSucceed=true;
370339
}
371340
tests.add(
372341
JSON.stringify({
373-
// hasParent,
374-
// original: permutation,
375342
onError: permutation.onError,
376343
shouldSucceed,
377-
entryPath,
378-
willDeletePolicy,
344+
entryPath: depPath,
379345
preloads: permutation.preloads
380346
.map((_)=>{
381347
return{

0 commit comments

Comments
 (0)