Skip to content

Commit 5d48890

Browse files
committed
reduce reproduction code
1 parent 5ed6d08 commit 5d48890

1 file changed

Lines changed: 31 additions & 1 deletion

File tree

packages/codegen/src/runner.test.ts

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,34 @@ async function sleep(ms: number): Promise<void> {
1010
return new Promise((resolve) => setTimeout(resolve, ms));
1111
}
1212

13+
async function waitFor(fn: () => void) {
14+
return new Promise<void>((resolve, reject) => {
15+
let error: unknown = null;
16+
function runFn() {
17+
try {
18+
fn();
19+
clearInterval(intervalTimer);
20+
clearTimeout(timeoutTimer);
21+
resolve();
22+
} catch (e) {
23+
error = e;
24+
}
25+
}
26+
const intervalTimer = setInterval(() => {
27+
runFn();
28+
}, 50);
29+
const timeoutTimer = setTimeout(() => {
30+
clearInterval(intervalTimer);
31+
if (error) {
32+
reject(new Error('Timeout waiting for condition', { cause: error }));
33+
} else {
34+
reject(new Error('unreachable'));
35+
}
36+
}, 1000);
37+
runFn(); // First, execute immediately
38+
});
39+
}
40+
1341
describe('runCMKInWatchMode', () => {
1442
test('reports system error occurs during watching', async () => {
1543
const fixturePath = join(process.cwd(), 'fixtures');
@@ -43,7 +71,9 @@ describe('runCMKInWatchMode', () => {
4371

4472
console.log('update file');
4573
await writeFile(textFilePath, '1');
46-
await vi.waitFor(() => {
74+
const startTime = Date.now();
75+
await waitFor(() => {
76+
console.log('elapsed', Date.now() - startTime, globalThis.changeCount);
4777
assert(globalThis.changeCount === 1, `Expected changeCount to be 1, but got ${globalThis.changeCount}`);
4878
});
4979

0 commit comments

Comments
 (0)