summaryrefslogtreecommitdiff
path: root/scripts/test/node-esm-loader.mjs
diff options
context:
space:
mode:
authorDaniel Wirtz <dcode@dcode.io>2020-02-13 01:59:52 +0100
committerGitHub <noreply@github.com>2020-02-12 16:59:52 -0800
commit321f61c7c3975e902b6f1d2a606b6595aaf701c9 (patch)
treeaa73bcaa6c26543ff78241113660d380d1a48b72 /scripts/test/node-esm-loader.mjs
parent4dceacb6ff662e382f1385ec038b9fdd062c0ed0 (diff)
downloadbinaryen-321f61c7c3975e902b6f1d2a606b6595aaf701c9.tar.gz
binaryen-321f61c7c3975e902b6f1d2a606b6595aaf701c9.tar.bz2
binaryen-321f61c7c3975e902b6f1d2a606b6595aaf701c9.zip
Update node-esm-loader to work with latest node LTS (#2657)
An attempt to fix the node-esm-loader related [issues](https://travis-ci.org/WebAssembly/binaryen/jobs/649056649#L22931) seen on CI currently, apparently due to CI automatically picking up a newer node LTS (12.16.0 released 2020/02/11) where the API changed.
Diffstat (limited to 'scripts/test/node-esm-loader.mjs')
-rw-r--r--scripts/test/node-esm-loader.mjs51
1 files changed, 29 insertions, 22 deletions
diff --git a/scripts/test/node-esm-loader.mjs b/scripts/test/node-esm-loader.mjs
index 34649fd74..8a3b67d1c 100644
--- a/scripts/test/node-esm-loader.mjs
+++ b/scripts/test/node-esm-loader.mjs
@@ -2,34 +2,41 @@
import path from 'path';
import process from 'process';
-import Module from 'module';
-
-const builtins = Module.builtinModules;
const baseURL = new URL('file://');
const binaryen_root = path.dirname(path.dirname(process.cwd()));
baseURL.pathname = `${binaryen_root}/`;
-
-export function resolve(specifier, parentModuleURL = baseURL, defaultResolve) {
- if (builtins.includes(specifier)) {
- return {
- url: specifier,
- format: 'builtin'
- };
+const specialTestSuiteModules = {
+ 'spectest': {
+ url: new URL('scripts/test/spectest.js', baseURL).href,
+ format: 'module'
+ },
+ 'env': {
+ url: new URL('scripts/test/env.js', baseURL).href,
+ format: 'module'
+ },
+ 'mod.ule': {
+ url: new URL('scripts/test/mod.ule.js', baseURL).href,
+ format: 'module'
}
- // Resolve special modules used in our test suite.
- if (specifier == 'spectest' || specifier == 'env' || specifier == 'mod.ule') {
- const resolved = new URL('./scripts/test/' + specifier + '.js', baseURL);
- return {
- url: resolved.href,
- format: 'module'
- };
+};
+
+export async function resolve(specifier, context, defaultResolve) {
+ const specialModule = specialTestSuiteModules[specifier];
+ if (specialModule) {
+ return specialModule;
}
+ return defaultResolve(specifier, context, defaultResolve);
+}
- const resolved = new URL(specifier, parentModuleURL);
- return {
- url: resolved.href,
- format: 'module'
- };
+export async function getFormat(url, context, defaultGetFormat) {
+ const specifiers = Object.keys(specialTestSuiteModules);
+ for (let i = 0, k = specifiers.length; i < k; ++i) {
+ const specialModule = specialTestSuiteModules[specifiers[i]];
+ if (specialModule.url == url) {
+ return specialModule;
+ }
+ }
+ return defaultGetFormat(url, context, defaultGetFormat);
}