// This file just runs all test suites we've white-listed as being // compatible with E10s. Once we're done with the porting effort, // we'll just enable cfx's '--e10s' option by default and remove // this file. // This is just to serve as an indicator not to run these tests in // the addon process. require("chrome"); const E10S_COMPATIBLE_TEST_SUITES = [ 'test-api-utils.js', 'test-traits-core.js', 'test-traits.js', 'test-list.js', 'test-self.js' ]; exports.runE10SCompatibleTestSuites = function(test) { var xulApp = require("xul-app"); if (xulApp.is("Firefox") && xulApp.versionInRange(xulApp.version, "4.0b7", "4.0b8pre")) { test.pass("Due to bug 609066, Firefox 4.0b7 will never pass this test, " + "so we'll skip it."); return; } // If the "jetpack/service" XPCOM component is not present, then the host // application does not support e10s, so we can't run any e10s-compatible // test suites under e10s mode. if (!require("chrome").Cc["@mozilla.org/jetpack/service;1"]) { test.pass("This application does not support e10s."); return; } if (packaging.enableE10s) { // Don't worry about running these E10S-compatible test // suites, cfx will find them by default because its // '--e10s' option is enabled. test.pass("'cfx --e10s' detected, skipping this test."); return; } var {TestFinder} = require("unit-test-finder"); var {TestRunner} = require("unit-test"); var url = require("url"); var thisDir = url.toFilename(url.URL('./', __url__)); var finder = new TestFinder({ dirs: [thisDir], filter: function(name) { return E10S_COMPATIBLE_TEST_SUITES.indexOf(name) != -1; }, testInProcess: false, testOutOfProcess: true }); var runner = new TestRunner(); finder.findTests(function(tests) { test.assert(tests.length >= 1, "must find at least one test"); runner.startMany({ tests: tests, onDone: function(runner) { test.assertEqual(runner.failed, 0, "No tests in addon process should have failed"); test.assert(runner.passed > 0, "Some tests in addon process must have been run"); test.failed += runner.failed; test.passed += runner.passed; test.done(); } }); }); test.waitUntilDone(); };