mirror of
https://github.com/nasa/openmct.git
synced 2024-12-23 15:02:23 +00:00
6dea66558f
Provide Promise polyfill in test runner. This allows tests of objects which use Promise directly to be run in environments which don't yet implement Promise (including command line test environment.) Completing test suite for framework layer, WTD-518.
145 lines
5.3 KiB
HTML
145 lines
5.3 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<link rel="stylesheet"
|
|
type="text/css"
|
|
href="platform/framework/test/lib/css/jasmine.css">
|
|
<script type="text/javascript"
|
|
src="platform/framework/lib/es6-promise-2.0.0.min.js">
|
|
</script>
|
|
<script type="text/javascript"
|
|
src="platform/framework/lib/require.js">
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<script>
|
|
window.Promise = window.Promise || ES6Promise.Promise;
|
|
require(
|
|
{
|
|
paths: {
|
|
'jasmine': 'platform/framework/test/lib/jasmine',
|
|
'jasmine-html': 'platform/framework/test/lib/jasmine-html',
|
|
'blanket-jasmine': 'platform/framework/test/lib/blanket_jasmine',
|
|
'console-runner': 'platform/framework/test/lib/console-runner'
|
|
},
|
|
shim: {
|
|
'jasmine': {
|
|
'exports': 'jasmine'
|
|
},
|
|
'jasmine-html': {
|
|
'exports': 'jasmine',
|
|
'deps': ['jasmine']
|
|
},
|
|
'console-runner': {
|
|
'exports': 'jasmine',
|
|
'deps': ['jasmine']
|
|
},
|
|
'blanket-jasmine': {
|
|
'exports': 'blanket',
|
|
'deps': ['jasmine']
|
|
}
|
|
}
|
|
},
|
|
[
|
|
'blanket-jasmine',
|
|
'jasmine-html',
|
|
'console-runner'
|
|
],
|
|
function () {
|
|
"use strict";
|
|
|
|
// Utility function; load a JSON definition
|
|
function loadJSON(file, callback) {
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open("GET", file);
|
|
xhr.onreadystatechange = function () {
|
|
if (xhr.readyState === 4) { // DONE
|
|
try {
|
|
callback(JSON.parse(xhr.response));
|
|
} catch (e) {
|
|
// No suite defined, so no tests
|
|
callback([]);
|
|
}
|
|
}
|
|
}
|
|
xhr.send();
|
|
}
|
|
|
|
// Run Jasmine upon full declared suite.
|
|
// Called after all tests loaded.
|
|
function runJasmine() {
|
|
var jasmineEnv = jasmine.getEnv(),
|
|
htmlReporter,
|
|
titleReporter;
|
|
jasmineEnv.updateInterval = 250;
|
|
|
|
htmlReporter = new jasmine.HtmlReporter();
|
|
//https://github.com/jcarver989/phantom-jasmine/issues/2
|
|
window.console_reporter = new jasmine.ConsoleReporter();
|
|
|
|
titleReporter = new jasmine.Reporter();
|
|
titleReporter.reportRunnerResults = function (runner) {
|
|
document.title = runner.results().passed() ?
|
|
"PASSING" : "FAILING";
|
|
};
|
|
|
|
jasmineEnv.addReporter(htmlReporter);
|
|
jasmineEnv.addReporter(new jasmine.BlanketReporter());
|
|
jasmineEnv.addReporter(window.console_reporter);
|
|
jasmineEnv.addReporter(titleReporter);
|
|
jasmineEnv.specFilter = function (spec) {
|
|
return htmlReporter.specFilter(spec);
|
|
};
|
|
jasmineEnv.currentRunner().execute();
|
|
}
|
|
|
|
function lookupSource(component) {
|
|
return component.src;
|
|
}
|
|
|
|
function lookupSpec(component) {
|
|
return component.spec;
|
|
}
|
|
|
|
// Run a full list of specs.
|
|
// Should be done after loading and path-correcting all specs
|
|
function runSpecs(components) {
|
|
blanket.options({'filter': components.map(lookupSource)});
|
|
require(components.map(lookupSpec), runJasmine);
|
|
}
|
|
|
|
// Run all test suites contained in all bundles
|
|
function runSuites(bundles) {
|
|
var components = [], count = 0;
|
|
|
|
function addSuite(bundle) {
|
|
function fixPath(name) {
|
|
return {
|
|
spec: bundle + "/test/" + name + "Spec",
|
|
src: bundle + "/src/" + name
|
|
};
|
|
}
|
|
|
|
function addSpecs(suiteSpecs) {
|
|
components = components.concat(suiteSpecs.map(fixPath));
|
|
count += 1;
|
|
if (count === bundles.length) {
|
|
runSpecs(components);
|
|
}
|
|
}
|
|
|
|
loadJSON(bundle + "/test/suite.json", addSpecs);
|
|
}
|
|
|
|
bundles.forEach(addSuite);
|
|
}
|
|
|
|
// Set the ball rolling; load and run all test suites
|
|
loadJSON("bundles.json", runSuites);
|
|
}
|
|
);
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|