tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

sanity-checker.js (2042B)


      1 // The SanityChecker is used in debug mode to identify problems with the
      2 // structure of the testsuite and to force early test failures.
      3 // In release mode it is mocked out to do nothing.
      4 function SanityChecker()  {}
      5 
      6 SanityChecker.prototype.checkScenario = function(scenario, resourceInvoker) {
      7  // Check if scenario is valid.
      8  test(function() {
      9    var expectedFields = SPEC_JSON["test_expansion_schema"];
     10 
     11    for (var field in expectedFields) {
     12      if (field == "expansion")
     13        continue
     14 
     15      assert_own_property(scenario, field,
     16                          "The scenario should contain field '" + field + "'.")
     17 
     18      var expectedFieldList = expectedFields[field];
     19      if (!expectedFieldList.hasOwnProperty('length')) {
     20        var expectedFieldList = [];
     21        for (var key in expectedFields[field]) {
     22          expectedFieldList = expectedFieldList.concat(expectedFields[field][key])
     23        }
     24      }
     25      assert_in_array(scenario[field], expectedFieldList,
     26                      "Scenario's " + field + " is one of: " +
     27                      expectedFieldList.join(", ")) + "."
     28    }
     29 
     30    // Check if the protocol is matched.
     31    assert_equals(scenario["source_scheme"] + ":", location.protocol,
     32                  "Protocol of the test page should match the scenario.")
     33 
     34    assert_own_property(resourceInvoker, scenario.subresource,
     35                        "Subresource should be supported");
     36 
     37  }, "[MixedContentTestCase] The test scenario should be valid.");
     38 }
     39 
     40 // For easier debugging runs, we can fail a test earlier.
     41 SanityChecker.prototype.setFailTimeout = function(test, timeout) {
     42  // Due to missing implementations, tests time out, so we fail them early.
     43  // TODO(kristijanburnik): Once WPT rolled in:
     44  //   https://github.com/w3c/testharness.js/pull/127
     45  // Refactor to make use of step_timeout.
     46  setTimeout(function() {
     47    test.step(function() {
     48      assert_equals(test.phase, test.phases.COMPLETE,
     49                    "Expected test to complete.");
     50      test.done();
     51    })
     52  }, timeout || 1000);
     53 }