| // 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); |
| } |