diff options
author | Jan Krems <jan.krems@gmail.com> | 2020-03-03 09:03:04 -0800 |
---|---|---|
committer | Bradley Farias <bfarias@godaddy.com> | 2020-03-23 08:39:37 -0500 |
commit | 07a1fb953e1ecbd98c93cde96b6b0bca7e3aecbd (patch) | |
tree | a24fc380e7204caf4731d0f0cb1fbee4afc4ae23 /test/fixtures | |
parent | ecfb7b0988da93b1b140f7fbe877824296697364 (diff) | |
download | node-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.js | 6 | ||||
-rw-r--r-- | test/fixtures/es-module-loaders/loader-side-effect.mjs | 32 |
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()})(); +`; +} |