• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1(function() {
2  var subTestStart = 0;
3  var subTestEnd = Infinity;
4  var match;
5  if (location.search) {
6    match = /(?:^\?|&)(\d+)-(\d+|last)(?:&|$)/.exec(location.search);
7    if (match) {
8      subTestStart = parseInt(match[1], 10);
9      if (match[2] !== "last") {
10          subTestEnd = parseInt(match[2], 10);
11      }
12    }
13    // Below is utility code to generate <meta> for copy/paste into tests.
14    // Sample usage:
15    // test.html?split=1000
16    match = /(?:^\?|&)split=(\d+)(?:&|$)/.exec(location.search);
17    if (match) {
18      var testsPerVariant = parseInt(match[1], 10);
19      add_completion_callback(tests => {
20        var total = tests.length;
21        var template = '<meta name="variant" content="?%s-%s">';
22        var metas = [];
23        for (var i = 1; i < total - testsPerVariant; i = i + testsPerVariant) {
24          metas.push(template.replace("%s", i).replace("%s", i + testsPerVariant - 1));
25        }
26        metas.push(template.replace("%s", i).replace("%s", "last"));
27        var pre = document.createElement('pre');
28        pre.textContent = metas.join('\n');
29        document.body.insertBefore(pre, document.body.firstChild);
30        document.getSelection().selectAllChildren(pre);
31      });
32    }
33  }
34  /**
35   * Check if `currentSubTest` is in the subset specified in the URL.
36   * @param {number} currentSubTest
37   * @returns {boolean}
38   */
39  function shouldRunSubTest(currentSubTest) {
40    return currentSubTest >= subTestStart && currentSubTest <= subTestEnd;
41  }
42  var currentSubTest = 0;
43  /**
44   * Only test a subset of tests with, e.g., `?1-10` in the URL.
45   * Can be used together with `<meta name="variant" content="...">`
46   * Sample usage:
47   * for (const test of tests) {
48   *   subsetTest(async_test, test.fn, test.name);
49   * }
50   */
51  function subsetTest(testFunc, ...args) {
52    currentSubTest++;
53    if (shouldRunSubTest(currentSubTest)) {
54      return testFunc(...args);
55    }
56    return null;
57  }
58  self.shouldRunSubTest = shouldRunSubTest;
59  self.subsetTest = subsetTest;
60})();
61