Skip to content

Commit eb3da08

Browse files
committed
Attempt to fix failing tests that run indefinitely
1 parent fd02f28 commit eb3da08

File tree

1 file changed

+32
-7
lines changed
  • packages/playground/test-built-npm-packages/es-modules-and-vitest

1 file changed

+32
-7
lines changed

packages/playground/test-built-npm-packages/es-modules-and-vitest/run-tests.ts

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ function red(text: string) {
2121
type Result = {
2222
phpVersion: string;
2323
code: number | null;
24+
timeout?: boolean;
2425
};
2526

2627
const results: Result[] = [];
@@ -47,7 +48,7 @@ for (const phpVersion of SupportedPHPVersions.filter(
4748
}
4849
);
4950

50-
await new Promise<void>((resolve) => {
51+
const promiseToClose = new Promise<void>((resolve) => {
5152
child.on('close', (code) => {
5253
results.push({
5354
phpVersion,
@@ -56,25 +57,49 @@ for (const phpVersion of SupportedPHPVersions.filter(
5657
resolve();
5758
});
5859
});
60+
const promiseToTimeout = new Promise<void>((resolve, reject) => {
61+
setTimeout(() => {
62+
console.error(`PHP ${phpVersion}: timed out.`);
63+
reject(new Error('Test timed out'));
64+
}, 30000);
65+
});
66+
try {
67+
await Promise.race([promiseToClose, promiseToTimeout]);
68+
} catch (e) {
69+
results.push({
70+
phpVersion,
71+
code: null,
72+
timeout: true,
73+
});
74+
child.kill('SIGKILL');
75+
}
5976
}
6077

6178
console.log('Results:');
6279
for (const result of results) {
63-
console.log(
64-
`PHP ${result.phpVersion}: ${
65-
result.code === 0 ? green('PASS') : red('FAIL')
66-
} with exit code ${result.code}`
67-
);
80+
if (result.timeout) {
81+
console.log(red(`PHP ${result.phpVersion}: ${red('timed out')}.`));
82+
} else {
83+
console.log(
84+
`PHP ${result.phpVersion}: ${
85+
result.code === 0 ? green('PASS') : red('FAIL')
86+
} with exit code ${result.code}`
87+
);
88+
}
6889
}
6990

7091
const numPassed = results.filter((r) => r.code === 0).length;
71-
const numFailed = results.filter((r) => r.code !== 0).length;
92+
const numFailed = results.filter((r) => r.code !== 0 && !r.timeout).length;
93+
const numTimedOut = results.filter((r) => r.timeout).length;
7294
if (numPassed > 0) {
7395
console.log(green(`${numPassed} / ${results.length} tests passed`));
7496
}
7597
if (numFailed > 0) {
7698
console.log(red(`${numFailed} / ${results.length} tests failed`));
7799
}
100+
if (numTimedOut > 0) {
101+
console.log(red(`${numTimedOut} / ${results.length} tests timed out`));
102+
}
78103

79104
if (numFailed > 0) {
80105
process.exit(1);

0 commit comments

Comments
 (0)