bug 417516 - add top level Makefile targets to run test suites. add targets for mochitest. r=bsmedberg
☠☠ backed out by ebe0f840cdd9 ☠ ☠
authorTed Mielczarek <ted.mielczarek@gmail.com>
Wed, 23 Jul 2008 15:01:37 -0400
changeset 16157 7f2b90c30b796844fb0a833651afbe12b1e09cc4
parent 16156 640290e9059cccf7aeb649762a1c3c001fe0e81f
child 16158 8f8ef1209c4c05dbc17aabb3f13eff126adff97a
child 16161 ebe0f840cdd9e55afee59d60e046bca51dba0728
push idunknown
push userunknown
push dateunknown
reviewersbsmedberg
bugs417516
milestone1.9.1a2pre
bug 417516 - add top level Makefile targets to run test suites. add targets for mochitest. r=bsmedberg
Makefile.in
browser/build.mk
testing/mochitest/runtests.py.in
testing/testsuite-targets.mk
--- 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