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:
@@ -1,9 +1,11 @@
|
||||
(function() {
|
||||
// By the time onload is called, jasmineRequire will be redefined to point
|
||||
// to the Jasmine source files (and not jasmine.js). So re-require
|
||||
window.jasmineUnderTest = jasmineRequire.core(jasmineRequire);
|
||||
jasmineRequire.html(jasmineUnderTest);
|
||||
// By the time onload is called, getJasmineRequireObj() and
|
||||
// getJasmineHtmlRequireObj() will be redefined to point
|
||||
// to the Jasmine source files (and not jasmine.js). So re-require.
|
||||
const jasmineRequire = getJasmineRequireObj();
|
||||
const coreUnderTest = jasmineRequire.core(jasmineRequire);
|
||||
window.jasmineUnderTest = coreUnderTest.jasmine;
|
||||
window.privateUnderTest = coreUnderTest.private;
|
||||
|
||||
// Alias the private namespace so tests can be less verbose
|
||||
window.privateUnderTest = window.jasmineUnderTest.private;
|
||||
getJasmineHtmlRequireObj().html(jasmineUnderTest, privateUnderTest);
|
||||
})();
|
||||
|
||||
@@ -42,9 +42,9 @@
|
||||
: 'Expected runnable "' +
|
||||
fullName +
|
||||
'" to have failures ' +
|
||||
jasmine.private.basicPrettyPrinter(expectedFailures) +
|
||||
jasmine.pp(expectedFailures) +
|
||||
' but it had ' +
|
||||
jasmine.private.basicPrettyPrinter(foundFailures)
|
||||
jasmine.pp(foundFailures)
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
@@ -7,24 +7,29 @@
|
||||
'../../src/core/requireCore.js'
|
||||
));
|
||||
|
||||
// Individual source files call getJasmineRequireObj. It's normally defined
|
||||
// by requireCore.js which is concatenated into jasmine.js before other source
|
||||
// files. Since we're bypassing that mechanism, we need to provide our own.
|
||||
global.getJasmineRequireObj = function() {
|
||||
return jasmineUnderTestRequire;
|
||||
};
|
||||
|
||||
function getSourceFiles() {
|
||||
const globs = ['../../src/core/**/*.js', '../../src/version.js'];
|
||||
const srcFiles = globs.flatMap(g => glob.sync(g, { cwd: __dirname }));
|
||||
const srcFiles = [
|
||||
...glob.sync('../../src/core/**/*.js', {
|
||||
ignore: '../../src/core/requireSuffix.js',
|
||||
cwd: __dirname
|
||||
}),
|
||||
'../../src/version.js',
|
||||
'../../src/core/requireCore.js'
|
||||
];
|
||||
|
||||
for (const file of srcFiles) {
|
||||
require(file);
|
||||
}
|
||||
for (const file of srcFiles) {
|
||||
require(file);
|
||||
}
|
||||
|
||||
getSourceFiles();
|
||||
global.jasmineUnderTest = jasmineUnderTestRequire.core(
|
||||
jasmineUnderTestRequire
|
||||
);
|
||||
delete global.getJasmineRequireObj;
|
||||
|
||||
// Alias the private namespace so tests can be less verbose
|
||||
global.privateUnderTest = global.jasmineUnderTest.private;
|
||||
const built = jasmineUnderTestRequire.core(jasmineUnderTestRequire);
|
||||
global.jasmineUnderTest = built.jasmine;
|
||||
global.privateUnderTest = built.private;
|
||||
})();
|
||||
|
||||
Reference in New Issue
Block a user