From 8a503d5950272761cf85fcb59b3ccdd62e8bffdb Mon Sep 17 00:00:00 2001 From: Ted Mielczarek Date: Wed, 23 Jul 2008 15:01:37 -0400 Subject: [PATCH] bug 417516 - add top level Makefile targets to run test suites. add targets for mochitest. r=bsmedberg --- Makefile.in | 5 +++ browser/build.mk | 11 ++++++ testing/mochitest/runtests.py.in | 4 +- testing/testsuite-targets.mk | 67 ++++++++++++++++++++++++++++++++ 4 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 testing/testsuite-targets.mk diff --git a/Makefile.in b/Makefile.in index b9375f469c11..d0fa0634b83d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -66,6 +66,11 @@ 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 diff --git a/browser/build.mk b/browser/build.mk index b5bd9310defb..717e9878bb47 100644 --- a/browser/build.mk +++ b/browser/build.mk @@ -59,3 +59,14 @@ package: 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 diff --git a/testing/mochitest/runtests.py.in b/testing/mochitest/runtests.py.in index 5ccb911e4d8b..8c84c0dd04d8 100644 --- a/testing/mochitest/runtests.py.in +++ b/testing/mochitest/runtests.py.in @@ -331,6 +331,8 @@ Are you executing $objdir/_tests/testing/mochitest/runtests.py?""" 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: @@ -339,7 +341,7 @@ Are you executing $objdir/_tests/testing/mochitest/runtests.py?""" 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)) diff --git a/testing/testsuite-targets.mk b/testing/testsuite-targets.mk new file mode 100644 index 000000000000..ca5149ccc9da --- /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 +# +# 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