esm: improve performance & tidy tests
This standardises the setup of ESM tests and improves performance by parallelising case runs using a promise wrapper around async spawn.
I originally started out using chaining for parallelisation, but switched to node:test
to avoid a bajillion .then()
s. As .then()
s, the performance improvement was obvious.
I'm not sure how to get a truly apples-to-apples comparison: ./tools/test.py -J es-module
doesn't benefit from node:test
's parallelisation. I manually checked one of the largest tests, and the improvement is quite stark:
$> time ./node ./test/es-module/test-esm-loader-chaining.mjs
When | Duration |
---|---|
Before | 0m1.168s |
After | 0m0.442s |
Note to reviewers: enabling Hide whitespace
reduces the diff by about a third.
cc @nodejs/loaders