Bug 516984 - Make file changes for Mozmill support in buildbot r=ted
authorJeff Hammel <jhammel@mozilla.com>
Tue, 01 Jun 2010 13:45:01 -0700
changeset 42997 d0f822ada75fe1ce8ac4e480c92ca1dc50b0c806
parent 42996 209cc2fb76085dada4150ade29eecb4cd91a73ac
child 42998 7d5c3c3647c32618f8600e259948d292b1f93e6c
push id1
push userroot
push dateTue, 26 Apr 2011 22:38:44 +0000
treeherdermozilla-beta@bfdb6e623a36 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersted
bugs516984
milestone1.9.3a5pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 516984 - Make file changes for Mozmill support in buildbot r=ted
Makefile.in
testing/mozmill/Makefile.in
testing/mozmill/README.txt
testing/mozmill/installmozmill.py
testing/testsuite-targets.mk
toolkit/toolkit-tiers.mk
--- a/Makefile.in
+++ b/Makefile.in
@@ -69,22 +69,16 @@ tier_base_dirs += \
 	memory \
 	$(NULL)
 endif
 
 ifdef COMPILE_ENVIRONMENT
 include $(topsrcdir)/$(MOZ_BUILD_APP)/build.mk
 endif
 
-TIERS += testharness
-
-# test harnesses
-ifdef ENABLE_TESTS
-tier_testharness_dirs += testing/xpcshell
-endif
 
 include $(topsrcdir)/config/config.mk
 
 GARBAGE_DIRS += dist _javagen _profile _tests staticlib
 DIST_GARBAGE = config.cache config.log config.status config-defs.h \
    dependencies.beos config/autoconf.mk \
    unallmakefiles mozilla-config.h \
    netwerk/necko-config.h xpcom/xpcom-config.h xpcom/xpcom-private.h \
new file mode 100644
--- /dev/null
+++ b/testing/mozmill/Makefile.in
@@ -0,0 +1,82 @@
+#
+# ***** 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.org code.
+#
+# The Initial Developer of the Original Code is
+# Mozilla.org.
+# Portions created by the Initial Developer are Copyright (C) 2010
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#     Jeff Hammel <jhammel@mozilla.com>     (Original author)
+#     Clint Talbert <ctalbert@mozilla.com>  (Original author)
+#
+# 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 *****
+
+DEPTH		= ../..
+topsrcdir	= @top_srcdir@
+srcdir		= @srcdir@
+VPATH		= @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+MODULE		= testing_mozmill
+
+include $(topsrcdir)/config/rules.mk
+
+
+# Harness packages from the srcdir;
+# python packages to be installed IN INSTALLATION ORDER.
+# Packages later in the list can depend only on packages earlier in the list.
+# Since jsbridge depends on simplejson and mozrunner, these
+# must be installed before jsbridge is installed.  Likewise, 
+# mozmill depends on jsbridge.  If the dependencies are not
+# found installed, pip will download them from the internet
+# which is normally not desirable,
+TEST_HARNESS_PACKAGES = \
+  simplejson-2.1.1 \
+  mozrunner-2.4.2 \
+  jsbridge-2.3.5 \
+  mozmill-1.4.1 \
+  $(NULL)
+
+TEST_FILES := \
+  $(TEST_HARNESS_PACKAGES) \
+  virtualenv \
+  README.txt \
+  installmozmill.py \
+  tests \
+  $(NULL)
+
+# Rules for staging the necessary harness bits for a test package
+PKG_STAGE = $(DIST)/test-package-stage
+
+stage-package:
+	$(NSINSTALL) -D $(PKG_STAGE)/mozmill
+	echo $(TEST_HARNESS_PACKAGES) > $(PKG_STAGE)/mozmill/PACKAGES
+	(cd $(srcdir) && tar $(TAR_CREATE_FLAGS) - $(TEST_FILES)) | (cd $(PKG_STAGE)/mozmill && tar -xf -)
+
new file mode 100644
--- /dev/null
+++ b/testing/mozmill/README.txt
@@ -0,0 +1,5 @@
+Simple mozmill test harness
+
+See https://developer.mozilla.org/en/Mozmill
+
+The tests are from http://hg.mozilla.org/qa/mozmill-tests
new file mode 100755
--- /dev/null
+++ b/testing/mozmill/installmozmill.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+
+# ***** 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.org code.
+#
+# The Initial Developer of the Original Code is
+# Mozilla.org.
+# Portions created by the Initial Developer are Copyright (C) 2010
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#     Jeff Hammel <jhammel@mozilla.com>     (Original author)
+#
+# 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 *****
+
+"""
+install mozmill and its dependencies
+"""
+
+import os
+import sys
+from subprocess import call
+
+def main(args=None):
+  """command line front-end function"""
+
+  args = args or sys.argv[1:]
+
+  # The data is kept in the same directory as the script
+  source=os.path.abspath(os.path.dirname(__file__))
+
+  # directory to install to
+  if not len(args):
+    destination = source
+  elif len(args) == 1:
+    destination = os.path.abspath(args[0])
+  else:
+    print "Usage: %s [destination]" % sys.argv[0]
+    sys.exit(1)
+
+  os.chdir(source)
+
+  # check for existence of necessary files
+  required = ('PACKAGES', 'virtualenv')
+  for f in required:
+    if not os.path.exists(f):
+      print "File not found: " + f
+      sys.exit(1)
+
+  # packages to install in dependency order
+  PACKAGES=file('PACKAGES').read().split()
+  assert PACKAGES
+  
+  # create the virtualenv and install packages
+  os.environ.pop('PYTHONHOME', None)
+  call([sys.executable, 'virtualenv/virtualenv.py', destination])
+  pip = os.path.join(destination, 'bin', 'pip')
+  call([pip, 'install'] + PACKAGES)
+
+if __name__ == '__main__':
+  main()
--- a/testing/testsuite-targets.mk
+++ b/testing/testsuite-targets.mk
@@ -115,23 +115,22 @@ xpcshell-tests:
 	  -I$(topsrcdir)/build \
 	  $(topsrcdir)/testing/xpcshell/runxpcshelltests.py \
 	  --manifest=$(DEPTH)/_tests/xpcshell/all-test-dirs.list \
 	  --no-logfiles \
           $(SYMBOLS_PATH) \
 	  $(TEST_PATH_ARG) $(EXTRA_TEST_ARGS) \
 	  $(DIST)/bin/xpcshell
 
-
 # Package up the tests and test harnesses
 include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
 
 ifndef UNIVERSAL_BINARY
 PKG_STAGE = $(DIST)/test-package-stage
-package-tests: stage-mochitest stage-reftest stage-xpcshell stage-jstests
+package-tests: stage-mochitest stage-reftest stage-xpcshell stage-jstests stage-mozmill
 else
 # This staging area has been built for us by universal/flight.mk
 PKG_STAGE = $(DIST)/universal/test-package-stage
 endif
 
 package-tests:
 	$(NSINSTALL) -D $(DIST)/$(PKG_PATH)
 	@rm -f "$(DIST)/$(PKG_PATH)$(TEST_PACKAGE)"
@@ -148,14 +147,17 @@ stage-reftest: make-stage-dir
 	$(MAKE) -C $(DEPTH)/layout/tools/reftest stage-package
 
 stage-xpcshell: make-stage-dir
 	$(MAKE) -C $(DEPTH)/testing/xpcshell stage-package
 
 stage-jstests: make-stage-dir
 	$(MAKE) -C $(DEPTH)/js/src/tests stage-package
 
+stage-mozmill: make-stage-dir
+	$(MAKE) -C $(DEPTH)/testing/mozmill stage-package
+
 .PHONY: \
   mochitest mochitest-plain mochitest-chrome mochitest-a11y mochitest-ipcplugins \
   reftest crashtest \
   xpcshell-tests \
   jstestbrowser \
-  package-tests make-stage-dir stage-mochitest stage-reftest stage-xpcshell stage-jstests
+  package-tests make-stage-dir stage-mochitest stage-reftest stage-xpcshell stage-jstests stage-mozmill
--- a/toolkit/toolkit-tiers.mk
+++ b/toolkit/toolkit-tiers.mk
@@ -255,11 +255,13 @@ ifdef MOZ_LEAKY
 tier_platform_dirs        += tools/leaky
 endif
 
 ifdef MOZ_MAPINFO
 tier_platform_dirs	+= tools/codesighs
 endif
 
 ifdef ENABLE_TESTS
-tier_platform_dirs	+= testing/mochitest
+tier_platform_dirs += testing/mochitest
+tier_platform_dirs += testing/xpcshell 
+tier_platform_dirs += testing/mozmill
 endif