Fix subtle concurrency bug
This commit is contained in:
parent
97e2099226
commit
821be937ce
|
@ -137,7 +137,7 @@ class Test {
|
||||||
return await new Promise((resolve, reject) => {
|
return await new Promise((resolve, reject) => {
|
||||||
this.handleUpdate = () => {
|
this.handleUpdate = () => {
|
||||||
if (this.timedOut) {
|
if (this.timedOut) {
|
||||||
reject(`timeout while waiting for ${desc}`);
|
reject(new Error(`timeout while waiting for ${desc}`));
|
||||||
} else {
|
} else {
|
||||||
while (this.handledMessages < this.messages.length) {
|
while (this.handledMessages < this.messages.length) {
|
||||||
const msg = this.messages[this.handledMessages];
|
const msg = this.messages[this.handledMessages];
|
||||||
|
@ -635,13 +635,15 @@ async function main() {
|
||||||
let passed = new Set();
|
let passed = new Set();
|
||||||
let failed = new Map();
|
let failed = new Map();
|
||||||
for (const { lang, type } of tests) {
|
for (const { lang, type } of tests) {
|
||||||
let test: Test;
|
queue.add(async () => {
|
||||||
queue
|
const test = new Test(lang, type);
|
||||||
.add(() => {
|
let err = null;
|
||||||
test = new Test(lang, type);
|
try {
|
||||||
return test.run();
|
await test.run();
|
||||||
})
|
} catch (error) {
|
||||||
.then(async () => {
|
err = error;
|
||||||
|
}
|
||||||
|
if (!err) {
|
||||||
passed.add({ lang, type });
|
passed.add({ lang, type });
|
||||||
console.error(`PASSED: ${lang}/${type}`);
|
console.error(`PASSED: ${lang}/${type}`);
|
||||||
await writeLog(
|
await writeLog(
|
||||||
|
@ -649,8 +651,7 @@ async function main() {
|
||||||
type,
|
type,
|
||||||
`PASSED: ${lang}/${type}\n` + test.getLog({ pretty: true }) + "\n"
|
`PASSED: ${lang}/${type}\n` + test.getLog({ pretty: true }) + "\n"
|
||||||
);
|
);
|
||||||
})
|
} else {
|
||||||
.catch(async (err) => {
|
|
||||||
failed.set({ lang, type }, err);
|
failed.set({ lang, type }, err);
|
||||||
console.error(`FAILED: ${lang}/${type}`);
|
console.error(`FAILED: ${lang}/${type}`);
|
||||||
console.error(test.getLog());
|
console.error(test.getLog());
|
||||||
|
@ -663,8 +664,8 @@ async function main() {
|
||||||
"\n" +
|
"\n" +
|
||||||
(err.stack ? err.stack + "\n" : err ? `${err}` : "")
|
(err.stack ? err.stack + "\n" : err ? `${err}` : "")
|
||||||
);
|
);
|
||||||
})
|
}
|
||||||
.catch(console.error);
|
});
|
||||||
}
|
}
|
||||||
await queue.onIdle();
|
await queue.onIdle();
|
||||||
console.error();
|
console.error();
|
||||||
|
|
Loading…
Reference in New Issue