/
run-karma.js
103 lines (89 loc) · 2.88 KB
/
run-karma.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/* global global:true, __dirname, jasmineRequire */
/*jshint evil:true */
// reassigning causes eval to not use lexical scope.
var globalEval = eval,
global = globalEval('this');
/*jshint evil:false */
// Bootsrap Karma
if (global.__karma__) {
//jasmine.DEFAULT_TIMEOUT_INTERVAL = 100000;
global.__karma__.loaded = function() {
console.log('karma loaded');
};
// Bootstrap Browser fallback
} else {
// Init
var jasmine = jasmineRequire.core(jasmineRequire);
var jasmineEnv = jasmine.getEnv();
// Export interface
var jasmineInterface = jasmineRequire.interface(jasmine, jasmineEnv);
global.jasmine = jasmine;
for (var property in jasmineInterface) {
if (jasmineInterface.hasOwnProperty(property)) {
global[property] = jasmineInterface[property];
}
}
// Default reporter
jasmineEnv.addReporter(jasmineInterface.jsApiReporter);
// Html reporter
jasmineRequire.html(jasmine);
var htmlReporter = new jasmine.HtmlReporter({
env: jasmineEnv,
getContainer: function() { return document.body; },
createElement: function() { return document.createElement.apply(document, arguments); },
createTextNode: function() { return document.createTextNode.apply(document, arguments); },
timer: new jasmine.Timer()
});
htmlReporter.initialize();
jasmineEnv.addReporter(htmlReporter);
}
global.queryString = function queryString(parameter) {
var i, key, value, equalSign;
var loc = location.search.substring(1, location.search.length);
var params = loc.split('&');
for (i=0; i<params.length;i++) {
equalSign = params[i].indexOf('=');
if (equalSign < 0) {
key = params[i];
if (key === parameter) {
value = true;
break;
}
}
else {
key = params[i].substring(0, equalSign);
if (key === parameter) {
value = decodeURIComponent(params[i].substring(equalSign+1));
break;
}
}
}
return value;
};
function injectScript(src, module, callback) {
var script = document.createElement('script');
script.async = true;
script.src = src;
script.setAttribute('data-module', module);
script.addEventListener('load', function () {
callback(null, module);
});
script.addEventListener('error', function(err) {
callback(err, module);
});
script.addEventListener('abort', function(err) {
callback(err, module);
});
document.head.appendChild(script);
}
function injectBase(href) {
var script = document.createElement('base');
script.href = href;
document.head.appendChild(script);
}
injectBase('/base/test/');
injectScript('../node_modules/montage/montage.js', 'all', function (err) {
if (err) {
throw err;
}
});