fix: reuse python worker between tests (#52617)

This commit is contained in:
Oliver Eyton-Williams
2023-12-19 21:10:39 +01:00
committed by GitHub
parent 0cb5162e21
commit 06bbc07ec6
4 changed files with 56 additions and 22 deletions

View File

@@ -63,6 +63,11 @@ ctx.onmessage = async (e: PythonRunEvent) => {
const assert = chai.assert;
const __helpers = helpers;
// Create fresh globals for each test
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
const __userGlobals = pyodide.globals.get('dict')() as PyProxy;
/* eslint-enable @typescript-eslint/no-unused-vars */
// uncomment the following line to inspect
// the frame-runner as it runs tests
@@ -109,14 +114,24 @@ ctx.onmessage = async (e: PythonRunEvent) => {
}
};
// Clear out the old import otherwise it will use the old input/print
// functions
pyodide.runPython(`
import sys
try:
del sys.modules['jscustom']
del jscustom
except (KeyError, NameError):
pass
`);
// Make input available to python (print is not used yet)
pyodide.registerJsModule('jscustom', {
input: testInput
// print: () => {}
});
// Create fresh globals for each test
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
const __userGlobals = pyodide.globals.get('dict')() as PyProxy;
// Some tests rely on __name__ being set to __main__ and we new dicts do not
// have this set by default.
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
@@ -162,5 +177,7 @@ ctx.onmessage = async (e: PythonRunEvent) => {
actual: (err as { actual?: string }).actual
}
});
} finally {
__userGlobals.destroy();
}
};