summaryrefslogtreecommitdiff
path: root/test/fixtures
diff options
context:
space:
mode:
authorJan Krems <jan.krems@gmail.com>2020-03-03 09:03:04 -0800
committerBradley Farias <bfarias@godaddy.com>2020-03-23 08:39:37 -0500
commit07a1fb953e1ecbd98c93cde96b6b0bca7e3aecbd (patch)
treea24fc380e7204caf4731d0f0cb1fbee4afc4ae23 /test/fixtures
parentecfb7b0988da93b1b140f7fbe877824296697364 (diff)
downloadnode-new-07a1fb953e1ecbd98c93cde96b6b0bca7e3aecbd.tar.gz
module: add hook for global preload code
PR-URL: https://github.com/nodejs/node/pull/32068 Reviewed-By: Bradley Farias <bradley.meck@gmail.com> Reviewed-By: Geoffrey Booth <webmaster@geoffreybooth.com>
Diffstat (limited to 'test/fixtures')
-rw-r--r--test/fixtures/es-module-loaders/loader-side-effect-require-preload.js6
-rw-r--r--test/fixtures/es-module-loaders/loader-side-effect.mjs32
2 files changed, 38 insertions, 0 deletions
diff --git a/test/fixtures/es-module-loaders/loader-side-effect-require-preload.js b/test/fixtures/es-module-loaders/loader-side-effect-require-preload.js
new file mode 100644
index 0000000000..98820b9379
--- /dev/null
+++ b/test/fixtures/es-module-loaders/loader-side-effect-require-preload.js
@@ -0,0 +1,6 @@
+/**
+ * This file is combined with `loader-side-effect.mjs` via `--require`. Its
+ * purpose is to test execution order of the two kinds of preload code.
+ */
+
+(globalThis.preloadOrder || (globalThis.preloadOrder = [])).push('--require');
diff --git a/test/fixtures/es-module-loaders/loader-side-effect.mjs b/test/fixtures/es-module-loaders/loader-side-effect.mjs
new file mode 100644
index 0000000000..5c80724fbb
--- /dev/null
+++ b/test/fixtures/es-module-loaders/loader-side-effect.mjs
@@ -0,0 +1,32 @@
+// Arrow function so it closes over the this-value of the preload scope.
+const globalPreload = () => {
+ /* global getBuiltin */
+ const assert = getBuiltin('assert');
+ const vm = getBuiltin('vm');
+
+ assert.strictEqual(typeof require, 'undefined');
+ assert.strictEqual(typeof module, 'undefined');
+ assert.strictEqual(typeof exports, 'undefined');
+ assert.strictEqual(typeof __filename, 'undefined');
+ assert.strictEqual(typeof __dirname, 'undefined');
+
+ assert.strictEqual(this, globalThis);
+ (globalThis.preloadOrder || (globalThis.preloadOrder = [])).push('loader');
+
+ vm.runInThisContext(`\
+var implicitGlobalProperty = 42;
+const implicitGlobalConst = 42 * 42;
+`);
+
+ assert.strictEqual(globalThis.implicitGlobalProperty, 42);
+ (implicitGlobalProperty).foo = 'bar'; // assert: not strict mode
+
+ globalThis.explicitGlobalProperty = 42 * 42 * 42;
+}
+
+export function getGlobalPreloadCode() {
+ return `\
+<!-- assert: inside of script goal -->
+(${globalPreload.toString()})();
+`;
+}