blob: 55a103adf0f29c615d40bc47943be1aec25c8f1e [file] [log] [blame]
// The SanityChecker is used in debug mode to identify problems with the
// structure of the testsuite and to force early test failures.
// In release mode it is mocked out to do nothing.
function SanityChecker() {}
SanityChecker.prototype.checkScenario = function(scenario, resourceInvoker) {
// Check if scenario is valid.
test(function() {
var expectedFields = SPEC_JSON["test_expansion_schema"];
for (var field in expectedFields) {
if (field == "expansion")
continue
assert_own_property(scenario, field,
"The scenario should contain field '" + field + "'.")
var expectedFieldList = expectedFields[field];
if (!expectedFieldList.hasOwnProperty('length')) {
var expectedFieldList = [];
for (var key in expectedFields[field]) {
expectedFieldList = expectedFieldList.concat(expectedFields[field][key])
}
}
assert_in_array(scenario[field], expectedFieldList,
"Scenario's " + field + " is one of: " +
expectedFieldList.join(", ")) + "."
}
// Check if the protocol is matched.
assert_equals(scenario["source_scheme"] + ":", location.protocol,
"Protocol of the test page should match the scenario.")
assert_own_property(resourceInvoker, scenario.subresource,
"Subresource should be supported");
}, "[MixedContentTestCase] The test scenario should be valid.");
}
// For easier debugging runs, we can fail a test earlier.
SanityChecker.prototype.setFailTimeout = function(test, timeout) {
// Due to missing implementations, tests time out, so we fail them early.
// TODO(kristijanburnik): Once WPT rolled in:
// https://github.com/w3c/testharness.js/pull/127
// Refactor to make use of step_timeout.
setTimeout(function() {
test.step(function() {
assert_equals(test.phase, test.phases.COMPLETE,
"Expected test to complete.");
test.done();
})
}, timeout || 1000);
}