зеркало из https://github.com/mozilla/pjs.git
Bug 748490 - Part 2: Register testing modules with xpcshell test runner; r=ted
This commit is contained in:
Родитель
d2d45f613b
Коммит
eed17d433e
|
@ -117,6 +117,7 @@ xpcshell-tests:
|
||||||
--symbols-path=$(DIST)/crashreporter-symbols \
|
--symbols-path=$(DIST)/crashreporter-symbols \
|
||||||
--build-info-json=$(DEPTH)/mozinfo.json \
|
--build-info-json=$(DEPTH)/mozinfo.json \
|
||||||
--tests-root-dir=$(testxpcobjdir) \
|
--tests-root-dir=$(testxpcobjdir) \
|
||||||
|
--tests-modules-dir=$(DEPTH)/_tests/modules \
|
||||||
--xunit-file=$(testxpcobjdir)/$(relativesrcdir)/results.xml \
|
--xunit-file=$(testxpcobjdir)/$(relativesrcdir)/results.xml \
|
||||||
--xunit-suite-name=xpcshell \
|
--xunit-suite-name=xpcshell \
|
||||||
$(EXTRA_TEST_ARGS) \
|
$(EXTRA_TEST_ARGS) \
|
||||||
|
@ -147,6 +148,7 @@ check-interactive:
|
||||||
--symbols-path=$(DIST)/crashreporter-symbols \
|
--symbols-path=$(DIST)/crashreporter-symbols \
|
||||||
--build-info-json=$(DEPTH)/mozinfo.json \
|
--build-info-json=$(DEPTH)/mozinfo.json \
|
||||||
--test-path=$(SOLO_FILE) \
|
--test-path=$(SOLO_FILE) \
|
||||||
|
--tests-modules-dir=$(DEPTH)/_tests/modules \
|
||||||
--profile-name=$(MOZ_APP_NAME) \
|
--profile-name=$(MOZ_APP_NAME) \
|
||||||
--interactive \
|
--interactive \
|
||||||
$(LIBXUL_DIST)/bin/xpcshell \
|
$(LIBXUL_DIST)/bin/xpcshell \
|
||||||
|
@ -160,6 +162,7 @@ check-one:
|
||||||
--symbols-path=$(DIST)/crashreporter-symbols \
|
--symbols-path=$(DIST)/crashreporter-symbols \
|
||||||
--build-info-json=$(DEPTH)/mozinfo.json \
|
--build-info-json=$(DEPTH)/mozinfo.json \
|
||||||
--test-path=$(SOLO_FILE) \
|
--test-path=$(SOLO_FILE) \
|
||||||
|
--tests-modules-dir=$(DEPTH)/_tests/modules \
|
||||||
--profile-name=$(MOZ_APP_NAME) \
|
--profile-name=$(MOZ_APP_NAME) \
|
||||||
--verbose \
|
--verbose \
|
||||||
$(EXTRA_TEST_ARGS) \
|
$(EXTRA_TEST_ARGS) \
|
||||||
|
|
|
@ -117,6 +117,7 @@ xpcshell-tests:
|
||||||
--symbols-path=$(DIST)/crashreporter-symbols \
|
--symbols-path=$(DIST)/crashreporter-symbols \
|
||||||
--build-info-json=$(DEPTH)/mozinfo.json \
|
--build-info-json=$(DEPTH)/mozinfo.json \
|
||||||
--tests-root-dir=$(testxpcobjdir) \
|
--tests-root-dir=$(testxpcobjdir) \
|
||||||
|
--tests-modules-dir=$(DEPTH)/_tests/modules \
|
||||||
--xunit-file=$(testxpcobjdir)/$(relativesrcdir)/results.xml \
|
--xunit-file=$(testxpcobjdir)/$(relativesrcdir)/results.xml \
|
||||||
--xunit-suite-name=xpcshell \
|
--xunit-suite-name=xpcshell \
|
||||||
$(EXTRA_TEST_ARGS) \
|
$(EXTRA_TEST_ARGS) \
|
||||||
|
@ -147,6 +148,7 @@ check-interactive:
|
||||||
--symbols-path=$(DIST)/crashreporter-symbols \
|
--symbols-path=$(DIST)/crashreporter-symbols \
|
||||||
--build-info-json=$(DEPTH)/mozinfo.json \
|
--build-info-json=$(DEPTH)/mozinfo.json \
|
||||||
--test-path=$(SOLO_FILE) \
|
--test-path=$(SOLO_FILE) \
|
||||||
|
--tests-modules-dir=$(DEPTH)/_tests/modules \
|
||||||
--profile-name=$(MOZ_APP_NAME) \
|
--profile-name=$(MOZ_APP_NAME) \
|
||||||
--interactive \
|
--interactive \
|
||||||
$(LIBXUL_DIST)/bin/xpcshell \
|
$(LIBXUL_DIST)/bin/xpcshell \
|
||||||
|
@ -160,6 +162,7 @@ check-one:
|
||||||
--symbols-path=$(DIST)/crashreporter-symbols \
|
--symbols-path=$(DIST)/crashreporter-symbols \
|
||||||
--build-info-json=$(DEPTH)/mozinfo.json \
|
--build-info-json=$(DEPTH)/mozinfo.json \
|
||||||
--test-path=$(SOLO_FILE) \
|
--test-path=$(SOLO_FILE) \
|
||||||
|
--tests-modules-dir=$(DEPTH)/_tests/modules \
|
||||||
--profile-name=$(MOZ_APP_NAME) \
|
--profile-name=$(MOZ_APP_NAME) \
|
||||||
--verbose \
|
--verbose \
|
||||||
$(EXTRA_TEST_ARGS) \
|
$(EXTRA_TEST_ARGS) \
|
||||||
|
|
|
@ -245,6 +245,7 @@ xpcshell-tests:
|
||||||
--build-info-json=$(DEPTH)/mozinfo.json \
|
--build-info-json=$(DEPTH)/mozinfo.json \
|
||||||
--no-logfiles \
|
--no-logfiles \
|
||||||
--tests-root-dir=$(call core_abspath,_tests/xpcshell) \
|
--tests-root-dir=$(call core_abspath,_tests/xpcshell) \
|
||||||
|
--tests-modules-dir=$(call core_abspath,_tests/modules) \
|
||||||
--xunit-file=$(call core_abspath,_tests/xpcshell/results.xml) \
|
--xunit-file=$(call core_abspath,_tests/xpcshell/results.xml) \
|
||||||
--xunit-suite-name=xpcshell \
|
--xunit-suite-name=xpcshell \
|
||||||
$(SYMBOLS_PATH) \
|
$(SYMBOLS_PATH) \
|
||||||
|
|
|
@ -302,7 +302,8 @@ function do_get_idle() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function _execute_test() {
|
function _execute_test() {
|
||||||
// Map resource://test/ to the current working directory.
|
// Map resource://test/ to current working directory and
|
||||||
|
// resource://testing/ to the shared test modules directory.
|
||||||
let (ios = Components.classes["@mozilla.org/network/io-service;1"]
|
let (ios = Components.classes["@mozilla.org/network/io-service;1"]
|
||||||
.getService(Components.interfaces.nsIIOService)) {
|
.getService(Components.interfaces.nsIIOService)) {
|
||||||
let protocolHandler =
|
let protocolHandler =
|
||||||
|
@ -310,6 +311,15 @@ function _execute_test() {
|
||||||
.QueryInterface(Components.interfaces.nsIResProtocolHandler);
|
.QueryInterface(Components.interfaces.nsIResProtocolHandler);
|
||||||
let curDirURI = ios.newFileURI(do_get_cwd());
|
let curDirURI = ios.newFileURI(do_get_cwd());
|
||||||
protocolHandler.setSubstitution("test", curDirURI);
|
protocolHandler.setSubstitution("test", curDirURI);
|
||||||
|
|
||||||
|
if (this._TESTING_MODULES_DIR) {
|
||||||
|
let modulesFile = Components.classes["@mozilla.org/file/local;1"].
|
||||||
|
createInstance(Components.interfaces.nsILocalFile);
|
||||||
|
modulesFile.initWithPath(_TESTING_MODULES_DIR);
|
||||||
|
|
||||||
|
let modulesURI = ios.newFileURI(modulesFile);
|
||||||
|
protocolHandler.setSubstitution("testing", modulesURI);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Override idle service by default.
|
// Override idle service by default.
|
||||||
|
@ -820,13 +830,20 @@ function do_load_child_test_harness()
|
||||||
|
|
||||||
_XPCSHELL_PROCESS = "parent";
|
_XPCSHELL_PROCESS = "parent";
|
||||||
|
|
||||||
sendCommand(
|
let command =
|
||||||
"const _HEAD_JS_PATH='" + _HEAD_JS_PATH + "'; "
|
"const _HEAD_JS_PATH='" + _HEAD_JS_PATH + "'; "
|
||||||
+ "const _HTTPD_JS_PATH='" + _HTTPD_JS_PATH + "'; "
|
+ "const _HTTPD_JS_PATH='" + _HTTPD_JS_PATH + "'; "
|
||||||
+ "const _HEAD_FILES=[" + quoted_head_files.join() + "];"
|
+ "const _HEAD_FILES=[" + quoted_head_files.join() + "];"
|
||||||
+ "const _TAIL_FILES=[" + quoted_tail_files.join() + "];"
|
+ "const _TAIL_FILES=[" + quoted_tail_files.join() + "];"
|
||||||
+ "const _XPCSHELL_PROCESS='child';"
|
+ "const _XPCSHELL_PROCESS='child';";
|
||||||
+ "load(_HEAD_JS_PATH);");
|
|
||||||
|
if (this._TESTING_MODULES_DIR) {
|
||||||
|
command += "const _TESTING_MODULES_DIR='" + _TESTING_MODULES_DIR + "'; ";
|
||||||
|
}
|
||||||
|
|
||||||
|
command += "load(_HEAD_JS_PATH);";
|
||||||
|
|
||||||
|
sendCommand(command);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -222,10 +222,26 @@ class XPCShellTests(object):
|
||||||
# do_load_child_test_harness() in head.js
|
# do_load_child_test_harness() in head.js
|
||||||
if not self.appPath:
|
if not self.appPath:
|
||||||
self.appPath = self.xrePath
|
self.appPath = self.xrePath
|
||||||
self.xpcsCmd = [self.xpcshell, '-g', self.xrePath, '-a', self.appPath, '-r', self.httpdManifest, '-m', '-n', '-s'] + \
|
|
||||||
['-e', 'const _HTTPD_JS_PATH = "%s";' % self.httpdJSPath,
|
self.xpcsCmd = [
|
||||||
'-e', 'const _HEAD_JS_PATH = "%s";' % self.headJSPath,
|
self.xpcshell,
|
||||||
'-f', os.path.join(self.testharnessdir, 'head.js')]
|
'-g', self.xrePath,
|
||||||
|
'-a', self.appPath,
|
||||||
|
'-r', self.httpdManifest,
|
||||||
|
'-m',
|
||||||
|
'-n',
|
||||||
|
'-s',
|
||||||
|
'-e', 'const _HTTPD_JS_PATH = "%s";' % self.httpdJSPath,
|
||||||
|
'-e', 'const _HEAD_JS_PATH = "%s";' % self.headJSPath
|
||||||
|
]
|
||||||
|
|
||||||
|
if self.testingModulesDir is not None:
|
||||||
|
self.xpcsCmd.extend([
|
||||||
|
'-e',
|
||||||
|
'const _TESTING_MODULES_DIR = "%s";' % self.testingModulesDir
|
||||||
|
])
|
||||||
|
|
||||||
|
self.xpcsCmd.extend(['-f', os.path.join(self.testharnessdir, 'head.js')])
|
||||||
|
|
||||||
if self.debuggerInfo:
|
if self.debuggerInfo:
|
||||||
self.xpcsCmd = [self.debuggerInfo["path"]] + self.debuggerInfo["args"] + self.xpcsCmd
|
self.xpcsCmd = [self.debuggerInfo["path"]] + self.debuggerInfo["args"] + self.xpcsCmd
|
||||||
|
@ -553,7 +569,7 @@ class XPCShellTests(object):
|
||||||
debuggerArgs=None, debuggerInteractive=False,
|
debuggerArgs=None, debuggerInteractive=False,
|
||||||
profileName=None, mozInfo=None, shuffle=False,
|
profileName=None, mozInfo=None, shuffle=False,
|
||||||
testsRootDir=None, xunitFilename=None, xunitName=None,
|
testsRootDir=None, xunitFilename=None, xunitName=None,
|
||||||
**otherOptions):
|
testingModulesDir=None, **otherOptions):
|
||||||
"""Run xpcshell tests.
|
"""Run xpcshell tests.
|
||||||
|
|
||||||
|xpcshell|, is the xpcshell executable to use to run the tests.
|
|xpcshell|, is the xpcshell executable to use to run the tests.
|
||||||
|
@ -584,6 +600,8 @@ class XPCShellTests(object):
|
||||||
results.
|
results.
|
||||||
|xunitName|, if outputting an xUnit XML file, the str value to use for the
|
|xunitName|, if outputting an xUnit XML file, the str value to use for the
|
||||||
testsuite name.
|
testsuite name.
|
||||||
|
|testingModulesDir|, if provided, specifies where JS modules reside.
|
||||||
|
xpcshell will register a resource handler mapping this path.
|
||||||
|otherOptions| may be present for the convenience of subclasses
|
|otherOptions| may be present for the convenience of subclasses
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -603,6 +621,10 @@ class XPCShellTests(object):
|
||||||
raise Exception("testsRootDir path does not exists: %s" %
|
raise Exception("testsRootDir path does not exists: %s" %
|
||||||
testsRootDir)
|
testsRootDir)
|
||||||
|
|
||||||
|
if testingModulesDir is not None:
|
||||||
|
if not os.path.isabs(testingModulesDir):
|
||||||
|
testingModulesDir = os.path.abspath(testingModulesDir)
|
||||||
|
|
||||||
self.xpcshell = xpcshell
|
self.xpcshell = xpcshell
|
||||||
self.xrePath = xrePath
|
self.xrePath = xrePath
|
||||||
self.appPath = appPath
|
self.appPath = appPath
|
||||||
|
@ -619,6 +641,7 @@ class XPCShellTests(object):
|
||||||
self.debuggerInfo = getDebuggerInfo(self.oldcwd, debugger, debuggerArgs, debuggerInteractive)
|
self.debuggerInfo = getDebuggerInfo(self.oldcwd, debugger, debuggerArgs, debuggerInteractive)
|
||||||
self.profileName = profileName or "xpcshell"
|
self.profileName = profileName or "xpcshell"
|
||||||
self.mozInfo = mozInfo
|
self.mozInfo = mozInfo
|
||||||
|
self.testingModulesDir = testingModulesDir
|
||||||
|
|
||||||
# If we have an interactive debugger, disable ctrl-c.
|
# If we have an interactive debugger, disable ctrl-c.
|
||||||
if self.debuggerInfo and self.debuggerInfo["interactive"]:
|
if self.debuggerInfo and self.debuggerInfo["interactive"]:
|
||||||
|
@ -877,6 +900,9 @@ class XPCShellOptions(OptionParser):
|
||||||
self.add_option("--tests-root-dir",
|
self.add_option("--tests-root-dir",
|
||||||
type="string", dest="testsRootDir", default=None,
|
type="string", dest="testsRootDir", default=None,
|
||||||
help="absolute path to directory where all tests are located. this is typically $(objdir)/_tests")
|
help="absolute path to directory where all tests are located. this is typically $(objdir)/_tests")
|
||||||
|
self.add_option("--tests-modules-dir",
|
||||||
|
dest="testingModulesDir", default=None,
|
||||||
|
help="Directory where testing modules are located.")
|
||||||
self.add_option("--total-chunks",
|
self.add_option("--total-chunks",
|
||||||
type = "int", dest = "totalChunks", default=1,
|
type = "int", dest = "totalChunks", default=1,
|
||||||
help = "how many chunks to split the tests up into")
|
help = "how many chunks to split the tests up into")
|
||||||
|
|
Загрузка…
Ссылка в новой задаче