Fix overeager onload handler in Jasmine plugin

All of this is needed to enable the Jasmine plugin to work in environment with an asynchronous startup, as seen in the sqlite3 wiki store
This commit is contained in:
jeremy@jermolene.com 2023-07-06 11:52:33 +01:00
parent 29b5b064d6
commit 6c7c21a87b
2 changed files with 10 additions and 3 deletions

View File

@ -94,7 +94,11 @@ exports.runTests = function(callback,specFilter) {
if($tw.browser) {
window.jasmineRequire = jasmineCore;
$tw.modules.execute("$:/plugins/tiddlywiki/jasmine/jasmine-core/jasmine-core/jasmine-html.js");
var previousOnloadHandler = window.onload;
window.onload = function() {};
$tw.modules.execute("$:/plugins/tiddlywiki/jasmine/jasmine-core/jasmine-core/boot.js");
var jasmineOnloadHandler = window.onload;
window.onload = function() {};
jasmine = window.jasmine;
} else {
// Add missing properties to `jasmineCore` in order to call the Jasmine
@ -144,9 +148,11 @@ exports.runTests = function(callback,specFilter) {
// Iterate through all the test modules
var tests = $tw.wiki.filterTiddlers(TEST_TIDDLER_FILTER);
$tw.utils.each(tests,evalInContext);
// In a browser environment, jasmine-core/boot.js calls `execute()` for us.
// In a browser environment, we use jasmine-core/boot.js to call `execute()` for us.
// In Node.js, we call it manually.
if(!$tw.browser) {
if($tw.browser) {
jasmineOnloadHandler();
} else {
nodeJasmineWrapper.execute(null,specFilter);
}
};

View File

@ -17,8 +17,9 @@ var jasmine = require("./jasmine-plugin.js");
exports.name = "jasmine";
if($tw.browser) {
// Jasmine is run automatically on the browser, so always add it here.
exports.startup = jasmine.runTests;
exports.before = ["render"];
exports.after = ["story"];
} else {
// However, if we're on node.js, the tests are explciitly run with the
// --test command. This didn't used to be the case, so if they're