Redesigned moudule system
* Top level private APIs (e.g. jasmine.private.whatever) are no longer exposed * jasmineRequire is no longer exposed * core is self-booting * Globals are automatically created in browsers. (They can subsequently be removed by user code if desired.) * Globals are *not* automatically created in Node. An installGlobals function is exported instead. The jasmine package calls installGlobals unless configured not to do so. * In Node, the same instance is returned each time jasmine-core is imported. A reset function is exported. It effectively resets all state by discarding the env and creating a new one. This allows mulitple sequential runs within the same process to be independent of each other, but does not allow multiple concurrent runs. (That probably never worked anyway.) Fixes #2094
This commit is contained in:
35
src/core/requireSuffix.js
Normal file
35
src/core/requireSuffix.js
Normal file
@@ -0,0 +1,35 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
|
||||
const isNode = typeof module !== 'undefined' && module.exports;
|
||||
const jasmineRequire = getJasmineRequireObj();
|
||||
|
||||
function bootJasmine(options) {
|
||||
const jasmine = jasmineRequire.core(jasmineRequire).jasmine;
|
||||
const env = jasmine.getEnv(options);
|
||||
const jasmineInterface = jasmineRequire.interface(jasmine, env);
|
||||
const globals = {
|
||||
jasmine,
|
||||
...jasmineInterface
|
||||
};
|
||||
|
||||
return {
|
||||
jasmine,
|
||||
globals,
|
||||
installGlobals(dest) {
|
||||
dest = dest ?? globalThis;
|
||||
|
||||
for (const [k, v] of Object.entries(globals)) {
|
||||
dest[k] = v;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
if (isNode) {
|
||||
module.exports = bootJasmine({ suppressLoadErrors: true });
|
||||
} else {
|
||||
// Browser
|
||||
bootJasmine().installGlobals();
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user