summaryrefslogtreecommitdiffstats
path: root/testing/testsuite-targets.mk
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /testing/testsuite-targets.mk
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'testing/testsuite-targets.mk')
-rw-r--r--testing/testsuite-targets.mk339
1 files changed, 339 insertions, 0 deletions
diff --git a/testing/testsuite-targets.mk b/testing/testsuite-targets.mk
new file mode 100644
index 000000000..c16bd9d8d
--- /dev/null
+++ b/testing/testsuite-targets.mk
@@ -0,0 +1,339 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# include automation-build.mk to get the path to the binary
+TARGET_DEPTH = $(DEPTH)
+include $(topsrcdir)/build/binary-location.mk
+
+SYMBOLS_PATH := --symbols-path=$(DIST)/crashreporter-symbols
+
+ifndef TEST_PACKAGE_NAME
+TEST_PACKAGE_NAME := $(ANDROID_PACKAGE_NAME)
+endif
+
+# Linking xul-gtest.dll takes too long, so we disable GTest on
+# Windows PGO builds (bug 1028035).
+ifneq (1_WINNT,$(MOZ_PGO)_$(OS_ARCH))
+BUILD_GTEST=1
+endif
+
+ifdef MOZ_B2G
+BUILD_GTEST=
+endif
+
+ifneq (browser,$(MOZ_BUILD_APP))
+BUILD_GTEST=
+endif
+
+ifndef COMPILE_ENVIRONMENT
+BUILD_GTEST=
+endif
+
+ifndef NO_FAIL_ON_TEST_ERRORS
+define check_test_error_internal
+ @errors=`grep 'TEST-UNEXPECTED-' $@.log` ;\
+ if test "$$errors" ; then \
+ echo '$@ failed:'; \
+ echo "$$errors"; \
+ $(if $(1),echo $(1);) \
+ exit 1; \
+ fi
+endef
+CHECK_TEST_ERROR = $(call check_test_error_internal)
+CHECK_TEST_ERROR_RERUN = $(call check_test_error_internal,'To rerun your failures please run "make $@-rerun-failures"')
+endif
+
+# Usage: |make [EXTRA_TEST_ARGS=...] *test|.
+RUN_REFTEST = rm -f ./$@.log && $(PYTHON) _tests/reftest/runreftest.py \
+ --extra-profile-file=$(DIST)/plugins \
+ $(SYMBOLS_PATH) $(EXTRA_TEST_ARGS) $(1) | tee ./$@.log
+
+REMOTE_REFTEST = rm -f ./$@.log && $(PYTHON) _tests/reftest/remotereftest.py \
+ --dm_trans=$(DM_TRANS) --ignore-window-size \
+ --app=$(TEST_PACKAGE_NAME) --deviceIP=${TEST_DEVICE} --xre-path=${MOZ_HOST_BIN} \
+ --httpd-path=_tests/modules --suite reftest \
+ --extra-profile-file=$(topsrcdir)/mobile/android/fonts \
+ $(SYMBOLS_PATH) $(EXTRA_TEST_ARGS) $(1) | tee ./$@.log
+
+RUN_REFTEST_B2G = rm -f ./$@.log && $(PYTHON) _tests/reftest/runreftestb2g.py \
+ --remote-webserver=10.0.2.2 --b2gpath=${B2G_PATH} --adbpath=${ADB_PATH} \
+ --xre-path=${MOZ_HOST_BIN} $(SYMBOLS_PATH) --ignore-window-size \
+ --httpd-path=_tests/modules \
+ $(EXTRA_TEST_ARGS) '$(1)' | tee ./$@.log
+
+ifeq ($(OS_ARCH),WINNT) #{
+# GPU-rendered shadow layers are unsupported here
+OOP_CONTENT = --setpref=layers.async-pan-zoom.enabled=true --setpref=browser.tabs.remote.autostart=true --setpref=layers.acceleration.disabled=true
+GPU_RENDERING =
+else
+OOP_CONTENT = --setpref=layers.async-pan-zoom.enabled=true --setpref=browser.tabs.remote.autostart=true
+GPU_RENDERING = --setpref=layers.acceleration.force-enabled=true
+endif #}
+
+reftest: TEST_PATH?=layout/reftests/reftest.list
+reftest:
+ $(call RUN_REFTEST,'$(topsrcdir)/$(TEST_PATH)')
+ $(CHECK_TEST_ERROR)
+
+reftest-remote: TEST_PATH?=layout/reftests/reftest.list
+reftest-remote: DM_TRANS?=adb
+reftest-remote:
+ @if [ '${MOZ_HOST_BIN}' = '' ]; then \
+ echo 'environment variable MOZ_HOST_BIN must be set to a directory containing host xpcshell'; \
+ elif [ ! -d ${MOZ_HOST_BIN} ]; then \
+ echo 'MOZ_HOST_BIN does not specify a directory'; \
+ elif [ ! -f ${MOZ_HOST_BIN}/xpcshell ]; then \
+ echo 'xpcshell not found in MOZ_HOST_BIN'; \
+ elif [ '${TEST_DEVICE}' = '' -a '$(DM_TRANS)' != 'adb' ]; then \
+ echo 'please prepare your host with the environment variable TEST_DEVICE'; \
+ else \
+ ln -s $(abspath $(topsrcdir)) _tests/reftest/tests; \
+ $(call REMOTE_REFTEST,'tests/$(TEST_PATH)'); \
+ $(CHECK_TEST_ERROR); \
+ fi
+
+reftest-b2g: TEST_PATH?=layout/reftests/reftest.list
+reftest-b2g:
+ @if [ '${MOZ_HOST_BIN}' = '' ]; then \
+ echo 'environment variable MOZ_HOST_BIN must be set to a directory containing host xpcshell'; \
+ elif [ ! -d ${MOZ_HOST_BIN} ]; then \
+ echo 'MOZ_HOST_BIN does not specify a directory'; \
+ elif [ ! -f ${MOZ_HOST_BIN}/xpcshell ]; then \
+ echo 'xpcshell not found in MOZ_HOST_BIN'; \
+ elif [ '${B2G_PATH}' = '' -o '${ADB_PATH}' = '' ]; then \
+ echo 'please set the B2G_PATH and ADB_PATH environment variables'; \
+ else \
+ ln -s $(abspath $(topsrcdir)) _tests/reftest/tests; \
+ if [ '${REFTEST_PATH}' != '' ]; then \
+ $(call RUN_REFTEST_B2G,tests/${REFTEST_PATH}); \
+ else \
+ $(call RUN_REFTEST_B2G,tests/$(TEST_PATH)); \
+ fi; \
+ $(CHECK_TEST_ERROR); \
+ fi
+
+crashtest: TEST_PATH?=testing/crashtest/crashtests.list
+crashtest:
+ $(call RUN_REFTEST,'$(topsrcdir)/$(TEST_PATH)')
+ $(CHECK_TEST_ERROR)
+
+jstestbrowser: TESTS_PATH?=test-stage/jsreftest/tests/
+jstestbrowser:
+ $(MAKE) -C $(DEPTH)/config
+ $(MAKE) stage-jstests
+ $(call RUN_REFTEST,'$(DIST)/$(TESTS_PATH)/jstests.list' --extra-profile-file=$(DIST)/test-stage/jsreftest/tests/user.js)
+ $(CHECK_TEST_ERROR)
+
+GARBAGE += $(addsuffix .log,$(MOCHITESTS) reftest crashtest jstestbrowser)
+
+REMOTE_CPPUNITTESTS = \
+ $(PYTHON) -u $(topsrcdir)/testing/remotecppunittests.py \
+ --xre-path=$(DEPTH)/dist/bin \
+ --localLib=$(DEPTH)/dist/fennec \
+ --dm_trans=$(DM_TRANS) \
+ --deviceIP=${TEST_DEVICE} \
+ $(TEST_PATH) $(EXTRA_TEST_ARGS)
+
+# Usage: |make [TEST_PATH=...] [EXTRA_TEST_ARGS=...] cppunittests-remote|.
+cppunittests-remote: DM_TRANS?=adb
+cppunittests-remote:
+ @if [ '${TEST_DEVICE}' != '' -o '$(DM_TRANS)' = 'adb' ]; \
+ then $(call REMOTE_CPPUNITTESTS); \
+ else \
+ echo 'please prepare your host with environment variables for TEST_DEVICE'; \
+ fi
+
+jetpack-tests:
+ cd $(topsrcdir)/addon-sdk/source && $(PYTHON) bin/cfx -b $(abspath $(browser_path)) --parseable testpkgs
+
+pgo-profile-run:
+ $(PYTHON) $(topsrcdir)/build/pgo/profileserver.py $(EXTRA_TEST_ARGS)
+
+# Package up the tests and test harnesses
+include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
+
+PKG_STAGE = $(DIST)/test-stage
+
+stage-all: \
+ stage-config \
+ stage-mach \
+ stage-extensions \
+ stage-mochitest \
+ stage-jstests \
+ stage-jetpack \
+ test-packages-manifest \
+ $(NULL)
+ifdef MOZ_WEBRTC
+stage-all: stage-steeplechase
+endif
+
+ifdef COMPILE_ENVIRONMENT
+stage-all: stage-cppunittests
+endif
+
+TEST_PKGS := \
+ common \
+ cppunittest \
+ mochitest \
+ reftest \
+ talos \
+ web-platform \
+ xpcshell \
+ $(NULL)
+
+ifdef BUILD_GTEST
+stage-all: stage-gtest
+TEST_PKGS += gtest
+endif
+
+PKG_ARG = --$(1) '$(PKG_BASENAME).$(1).tests.zip'
+
+test-packages-manifest:
+ @rm -f $(MOZ_TEST_PACKAGES_FILE)
+ $(NSINSTALL) -D $(dir $(MOZ_TEST_PACKAGES_FILE))
+ $(PYTHON) $(topsrcdir)/build/gen_test_packages_manifest.py \
+ --jsshell $(JSSHELL_NAME) \
+ --dest-file '$(MOZ_TEST_PACKAGES_FILE)' \
+ $(call PKG_ARG,common) \
+ $(foreach pkg,$(TEST_PKGS),$(call PKG_ARG,$(pkg)))
+
+package-tests-prepare-dest:
+ @rm -f '$(DIST)/$(PKG_PATH)$(TEST_PACKAGE)'
+ $(NSINSTALL) -D $(DIST)/$(PKG_PATH)
+
+define package_archive
+package-tests-$(1): stage-all package-tests-prepare-dest
+ $$(call py_action,test_archive, \
+ $(1) \
+ '$$(abspath $$(DIST))/$$(PKG_PATH)/$$(PKG_BASENAME).$(1).tests.zip')
+package-tests: package-tests-$(1)
+endef
+
+$(foreach name,$(TEST_PKGS),$(eval $(call package_archive,$(name))))
+
+ifeq ($(MOZ_BUILD_APP),mobile/android)
+stage-all: stage-android
+stage-all: stage-instrumentation-tests
+endif
+
+ifeq ($(MOZ_WIDGET_TOOLKIT),gonk)
+stage-all: stage-b2g
+endif
+
+# Prepare _tests before any of the other staging/packaging steps.
+# make-stage-dir is a prerequisite to all the stage-* targets in testsuite-targets.mk.
+make-stage-dir: install-test-files
+ rm -rf $(PKG_STAGE)
+ $(NSINSTALL) -D $(PKG_STAGE)
+ $(NSINSTALL) -D $(PKG_STAGE)/bin
+ $(NSINSTALL) -D $(PKG_STAGE)/bin/components
+ $(NSINSTALL) -D $(PKG_STAGE)/certs
+ $(NSINSTALL) -D $(PKG_STAGE)/config
+ $(NSINSTALL) -D $(PKG_STAGE)/jetpack
+ $(NSINSTALL) -D $(PKG_STAGE)/modules
+ $(NSINSTALL) -D $(PKG_STAGE)/tools/mach
+
+stage-b2g: make-stage-dir
+ $(NSINSTALL) $(topsrcdir)/b2g/test/b2g-unittest-requirements.txt $(PKG_STAGE)/b2g
+
+stage-config: make-stage-dir
+ $(NSINSTALL) -D $(PKG_STAGE)/config
+ @(cd $(topsrcdir)/testing/config && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/config && tar -xf -)
+
+stage-mach: make-stage-dir
+ @(cd $(topsrcdir)/python/mach && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/tools/mach && tar -xf -)
+ cp $(topsrcdir)/testing/tools/mach_test_package_bootstrap.py $(PKG_STAGE)/tools/mach_bootstrap.py
+ cp $(topsrcdir)/mach $(PKG_STAGE)
+
+stage-mochitest: make-stage-dir
+ifeq ($(MOZ_BUILD_APP),mobile/android)
+ $(MAKE) -C $(DEPTH)/testing/mochitest stage-package
+endif
+
+stage-jstests: make-stage-dir
+ $(MAKE) -C $(DEPTH)/js/src/tests stage-package
+
+stage-gtest: make-stage-dir
+# FIXME: (bug 1200311) We should be generating the gtest xul as part of the build.
+ $(MAKE) -C $(DEPTH)/testing/gtest gtest
+ $(NSINSTALL) -D $(PKG_STAGE)/gtest/gtest_bin
+ cp -RL $(DIST)/bin/gtest $(PKG_STAGE)/gtest/gtest_bin
+ cp -RL $(DEPTH)/_tests/gtest $(PKG_STAGE)
+ cp $(topsrcdir)/testing/gtest/rungtests.py $(PKG_STAGE)/gtest
+ cp $(DIST)/bin/dependentlibs.list.gtest $(PKG_STAGE)/gtest
+ cp $(DEPTH)/mozinfo.json $(PKG_STAGE)/gtest
+
+stage-android: make-stage-dir
+ $(NSINSTALL) $(topsrcdir)/mobile/android/fonts $(DEPTH)/_tests/reftest
+ $(NSINSTALL) $(topsrcdir)/mobile/android/fonts $(DEPTH)/_tests/testing/mochitest
+
+stage-jetpack: make-stage-dir
+ $(MAKE) -C $(DEPTH)/addon-sdk stage-tests-package
+
+CPP_UNIT_TEST_BINS=$(wildcard $(DIST)/cppunittests/*)
+
+ifdef OBJCOPY
+ifneq ($(OBJCOPY), :) # see build/autoconf/toolchain.m4:102 for why this is necessary
+ifndef PKG_SKIP_STRIP
+STRIP_CPP_TESTS := 1
+endif
+endif
+endif
+
+stage-cppunittests: make-stage-dir
+ $(NSINSTALL) -D $(PKG_STAGE)/cppunittest
+ifdef STRIP_CPP_TESTS
+ $(foreach bin,$(CPP_UNIT_TEST_BINS),$(OBJCOPY) $(or $(STRIP_FLAGS),--strip-unneeded) $(bin) $(bin:$(DIST)/cppunittests/%=$(PKG_STAGE)/cppunittest/%);)
+else
+ cp -RL $(CPP_UNIT_TEST_BINS) $(PKG_STAGE)/cppunittest
+endif
+ifdef STRIP_CPP_TESTS
+ $(OBJCOPY) $(or $(STRIP_FLAGS),--strip-unneeded) $(DIST)/bin/jsapi-tests$(BIN_SUFFIX) $(PKG_STAGE)/cppunittest/jsapi-tests$(BIN_SUFFIX)
+else
+ cp -RL $(DIST)/bin/jsapi-tests$(BIN_SUFFIX) $(PKG_STAGE)/cppunittest
+endif
+
+stage-steeplechase: make-stage-dir
+ $(NSINSTALL) -D $(PKG_STAGE)/steeplechase/
+ cp -RL $(DEPTH)/_tests/steeplechase $(PKG_STAGE)/steeplechase/tests
+ cp -RL $(DIST)/xpi-stage/specialpowers $(PKG_STAGE)/steeplechase
+ cp -RL $(topsrcdir)/testing/profiles/prefs_general.js $(PKG_STAGE)/steeplechase
+
+stage-instrumentation-tests: make-stage-dir
+ $(MAKE) -C $(DEPTH)/testing/instrumentation stage-package
+
+TEST_EXTENSIONS := \
+ specialpowers@mozilla.org.xpi \
+ $(NULL)
+
+stage-extensions: make-stage-dir
+ $(NSINSTALL) -D $(PKG_STAGE)/extensions/
+ @$(foreach ext,$(TEST_EXTENSIONS), cp -RL $(DIST)/xpi-stage/$(ext) $(PKG_STAGE)/extensions;)
+
+
+check::
+ @$(topsrcdir)/mach --log-no-times python-test
+
+
+.PHONY: \
+ reftest \
+ crashtest \
+ xpcshell-tests \
+ jstestbrowser \
+ package-tests \
+ package-tests-prepare-dest \
+ package-tests-common \
+ make-stage-dir \
+ stage-all \
+ stage-b2g \
+ stage-config \
+ stage-mochitest \
+ stage-jstests \
+ stage-android \
+ stage-jetpack \
+ stage-steeplechase \
+ stage-instrumentation-tests \
+ test-packages-manifest \
+ check \
+ $(NULL)