mirror of
https://gitlab.silvrtree.co.uk/martind2000/ft-webplatform.git
synced 2025-01-11 00:45:08 +00:00
78 lines
1.9 KiB
JavaScript
78 lines
1.9 KiB
JavaScript
/* eslint-disable no-var */
|
|
(function(global) {
|
|
var karma = global.__karma__;
|
|
var requirejs = global.requirejs;
|
|
var locationPathname = global.location.pathname;
|
|
|
|
if (!karma || !requirejs) {
|
|
return;
|
|
}
|
|
|
|
function normalizePath(path) {
|
|
var i = 0;
|
|
var normalized = [];
|
|
var parts = path
|
|
.split('?')[0] // cut off GET params, used by noext requirejs plugin
|
|
.split('/');
|
|
|
|
for (i; i < parts.length; i++) {
|
|
if (parts[i] === '.') {
|
|
continue;
|
|
}
|
|
|
|
if (parts[i] === '..' && normalized.length && normalized[normalized.length - 1] !== '..') {
|
|
normalized.pop();
|
|
continue;
|
|
}
|
|
|
|
normalized.push(parts[i]);
|
|
}
|
|
|
|
return normalized.join('/');
|
|
}
|
|
|
|
function patchRequireJS(files, originalLoadFn) {
|
|
var IS_DEBUG = /debug\.html$/.test(locationPathname);
|
|
|
|
requirejs.load = function(context, moduleName, url) {
|
|
url = normalizePath(url);
|
|
|
|
if (files.hasOwnProperty(url) && !IS_DEBUG) {
|
|
url = url + '?' + files[url];
|
|
}
|
|
|
|
if (url.indexOf('/base') !== 0) {
|
|
url = '/base/' + url;
|
|
}
|
|
|
|
return originalLoadFn.call(this, context, moduleName, url);
|
|
};
|
|
|
|
let originalDefine = global.define;
|
|
global.define = function(name, deps, m) {
|
|
if (typeof name === 'string') {
|
|
originalDefine('/base/src/' + name, [name], function(result) { return result; });
|
|
}
|
|
|
|
return originalDefine(name, deps, m);
|
|
};
|
|
}
|
|
|
|
function requireTests() {
|
|
var TEST_REGEXP = /(spec)\.js$/i;
|
|
var allTestFiles = ['/base/test/unit/setup.js'];
|
|
|
|
Object.keys(window.__karma__.files).forEach(function(file) {
|
|
if (TEST_REGEXP.test(file)) {
|
|
allTestFiles.push(file);
|
|
}
|
|
});
|
|
|
|
require(allTestFiles, window.__karma__.start);
|
|
}
|
|
|
|
karma.loaded = function() {}; // make it async
|
|
patchRequireJS(karma.files, requirejs.load);
|
|
requireTests();
|
|
})(window);
|