Bug 1093834 - Ensure _TEST_NAME is passed to the child process in xpcshell's head.js. r=ted

This commit is contained in:
Chris Manchester 2014-11-04 20:02:13 -05:00
parent e53d01ea81
commit 733221f8b6
2 changed files with 29 additions and 1 deletions

View File

@ -1071,6 +1071,7 @@ function do_load_child_test_harness()
+ "const _HTTPD_JS_PATH=" + uneval(_HTTPD_JS_PATH) + "; "
+ "const _HEAD_FILES=" + uneval(_HEAD_FILES) + "; "
+ "const _TAIL_FILES=" + uneval(_TAIL_FILES) + "; "
+ "const _TEST_NAME=" + uneval(_TEST_NAME) + "; "
+ "const _XPCSHELL_PROCESS='child';";
if (this._TESTING_MODULES_DIR) {
@ -1104,7 +1105,6 @@ function run_test_in_child(testFile, optionalCallback)
do_test_pending("run in child");
sendCommand("_testLogger.info('CHILD-TEST-STARTED'); "
+ "const _TEST_FILE=['" + testPath + "']; "
+ "const _TEST_NAME=" + uneval(_TEST_NAME) + "; "
+ "_execute_test(); "
+ "_testLogger.info('CHILD-TEST-COMPLETED');",
callback);

View File

@ -71,6 +71,16 @@ add_test(function test_child_simple () {
});
'''
CHILD_HARNESS_SIMPLE = '''
function run_test () { run_next_test(); }
add_test(function test_child_assert () {
do_load_child_test_harness();
sendCommand("Assert.ok(true);");
run_next_test();
});
'''
CHILD_TEST_HANG = '''
function run_test () { run_next_test(); }
@ -455,6 +465,24 @@ tail =
self.assertNotInLog("CHILD-TEST-COMPLETED")
self.assertNotInLog(TEST_PASS_STRING)
@unittest.skipIf(build_obj.defines.get('MOZ_B2G'),
'selftests with child processes fail on b2g desktop builds')
def testChild(self):
"""
Checks that calling do_load_child_test_harness without run_test_in_child
results in a usable test state.
"""
self.writeFile("test_child_assertions.js", CHILD_HARNESS_SIMPLE)
self.writeManifest(["test_child_assertions.js"])
self.assertTestResult(True)
self.assertEquals(1, self.x.testCount)
self.assertEquals(1, self.x.passCount)
self.assertEquals(0, self.x.failCount)
self.assertEquals(0, self.x.todoCount)
self.assertInLog(TEST_PASS_STRING)
self.assertNotInLog(TEST_FAIL_STRING)
def testSyntaxError(self):
"""
Check that running a test file containing a syntax error produces