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 idunknown
push userunknown
push dateunknown
reviewersted
bugs516984
milestone1.9.3a5pre
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