bug 417516 - add top level Makefile targets to run test suites. add targets for mochitest. r=bsmedberg
--- a/Makefile.in
+++ b/Makefile.in
@@ -61,16 +61,21 @@ tier_base_dirs = \
build \
probes \
$(NULL)
ifdef MOZ_MEMORY
tier_base_dirs += memory/jemalloc
endif
+ifdef ENABLE_TESTS
+# Additional makefile targets to call automated test suites
+include $(topsrcdir)/testing/testsuite-targets.mk
+endif
+
include $(topsrcdir)/$(MOZ_BUILD_APP)/build.mk
TIERS += testharness
# test harnesses
ifdef ENABLE_TESTS
tier_testharness_dirs += tools/test-harness
endif
--- a/browser/build.mk
+++ b/browser/build.mk
@@ -54,8 +54,19 @@ tier_app_dirs += browser
installer:
@$(MAKE) -C browser/installer installer
package:
@$(MAKE) -C browser/installer
install::
@$(MAKE) -C browser/installer install
+
+ifdef ENABLE_TESTS
+# Implemented in testing/testsuite-targets.mk
+mochitest-browser-chrome:
+ $(RUN_MOCHITEST) --browser-chrome
+ $(CHECK_TEST_ERROR)
+
+mochitest:: mochitest-browser-chrome
+
+.PHONY: mochitest-browser-chrome
+endif
--- a/testing/mochitest/runtests.py.in
+++ b/testing/mochitest/runtests.py.in
@@ -326,25 +326,27 @@ Are you executing $objdir/_tests/testing
urlOpts.append("testPath=" + encodeURIComponent(options.testPath))
elif options.a11y:
testURL = A11YTESTS_URL
if options.testPath:
urlOpts.append("testPath=" + encodeURIComponent(options.testPath))
elif options.browserChrome:
testURL = "about:blank"
+ # allow relative paths for logFile
+ options.logFile = os.path.normpath(os.path.join(oldcwd, options.logFile))
if options.browserChrome:
makeTestConfig(options)
else:
if options.autorun:
urlOpts.append("autorun=1")
if options.closeWhenDone:
urlOpts.append("closeWhenDone=1")
if options.logFile:
- urlOpts.append("logFile=" + encodeURIComponent(os.path.normpath(os.path.join(oldcwd, options.logFile))))
+ urlOpts.append("logFile=" + encodeURIComponent(options.logFile))
urlOpts.append("fileLevel=" + encodeURIComponent(options.fileLevel))
if options.consoleLevel:
urlOpts.append("consoleLevel=" + encodeURIComponent(options.consoleLevel))
if len(urlOpts) > 0:
testURL += "?" + "&".join(urlOpts)
browserEnv["XPCOM_MEM_BLOAT_LOG"] = LEAK_REPORT_FILE
new file mode 100644
--- /dev/null
+++ b/testing/testsuite-targets.mk
@@ -0,0 +1,67 @@
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla Test Harnesses
+#
+# The Initial Developer of the Original Code is
+# The Mozilla Foundation
+# Portions created by the Initial Developer are Copyright (C) 2008
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Ted Mielczarek <ted.mielczarek@gmail.com>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either of the GNU General Public License Version 2 or later (the "GPL"),
+# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+mochitest:: mochitest-plain mochitest-chrome mochitest-a11y
+
+RUN_MOCHITEST = rm -f ./test-output.log && $(PYTHON) _tests/testing/mochitest/runtests.py --autorun --close-when-done --console-level=INFO --log-file=./test-output.log --file-level=INFO
+
+ifndef NO_FAIL_ON_TEST_ERRORS
+define CHECK_TEST_ERROR
+ @errors=`grep "TEST-UNEXPECTED-" test-output.log` ;\
+ if test "$$errors" ; then \
+ echo "$@ failed:"; \
+ echo "$$errors"; \
+ exit 1; \
+ else \
+ echo "$@ passed"; \
+ fi
+endef
+endif
+
+mochitest-plain:
+ $(RUN_MOCHITEST)
+ $(CHECK_TEST_ERROR)
+
+mochitest-chrome:
+ $(RUN_MOCHITEST) --chrome
+ $(CHECK_TEST_ERROR)
+
+mochitest-a11y:
+ $(RUN_MOCHITEST) --a11y
+ $(CHECK_TEST_ERROR)
+
+.PHONY: mochitest mochitest-plain mochitest-chrome mochitest-a11y