summaryrefslogtreecommitdiffstats
path: root/testing/testsuite-targets.mk
diff options
context:
space:
mode:
Diffstat (limited to 'testing/testsuite-targets.mk')
-rw-r--r--testing/testsuite-targets.mk278
1 files changed, 278 insertions, 0 deletions
diff --git a/testing/testsuite-targets.mk b/testing/testsuite-targets.mk
new file mode 100644
index 0000000000..cba88a1d6f
--- /dev/null
+++ b/testing/testsuite-targets.mk
@@ -0,0 +1,278 @@
+# 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
+
+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 && $(PYTHON3) _tests/reftest/runreftest.py \
+ --extra-profile-file=$(DIST)/plugins \
+ $(SYMBOLS_PATH) $(EXTRA_TEST_ARGS) $(1) | tee ./$@.log
+
+REMOTE_REFTEST = rm -f ./$@.log && $(PYTHON3) _tests/reftest/remotereftest.py \
+ --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
+
+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:
+ @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'; \
+ else \
+ ln -s $(abspath $(topsrcdir)) _tests/reftest/tests; \
+ $(call REMOTE_REFTEST,'tests/$(TEST_PATH)'); \
+ $(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)
+
+REMOTE_CPPUNITTESTS = \
+ $(PYTHON3) -u $(topsrcdir)/testing/remotecppunittests.py \
+ --xre-path=$(DEPTH)/dist/bin \
+ --localLib=$(DEPTH)/dist/geckoview \
+ --deviceIP=${TEST_DEVICE} \
+ $(TEST_PATH) $(EXTRA_TEST_ARGS)
+
+# Usage: |make [TEST_PATH=...] [EXTRA_TEST_ARGS=...] cppunittests-remote|.
+cppunittests-remote:
+ $(call REMOTE_CPPUNITTESTS);
+
+# 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 \
+ test-packages-manifest \
+ $(NULL)
+
+ifdef COMPILE_ENVIRONMENT
+stage-all: stage-cppunittests
+endif
+
+TEST_PKGS_TARGZ := \
+ common \
+ condprof \
+ cppunittest \
+ mochitest \
+ reftest \
+ talos \
+ raptor \
+ awsy \
+ xpcshell \
+ web-platform \
+ updater-dep \
+ jsreftest \
+ jittest \
+ perftests \
+ fuzztest \
+ $(NULL)
+
+ifdef LINK_GTEST_DURING_COMPILE
+stage-all: stage-gtest
+TEST_PKGS_TARGZ += gtest
+endif
+
+PKG_ARG = --$(1) '$(PKG_BASENAME).$(1).tests.$(2)'
+
+test-packages-manifest:
+ @rm -f $(MOZ_TEST_PACKAGES_FILE)
+ $(NSINSTALL) -D $(dir $(MOZ_TEST_PACKAGES_FILE))
+ $(PYTHON3) $(topsrcdir)/build/gen_test_packages_manifest.py \
+ --jsshell $(JSSHELL_NAME) \
+ --dest-file '$(MOZ_TEST_PACKAGES_FILE)' \
+ $(call PKG_ARG,common,zip) \
+ $(foreach pkg,$(TEST_PKGS_TARGZ),$(call PKG_ARG,$(pkg),tar.gz))
+
+ifdef UPLOAD_PATH
+test_archive_dir = $(UPLOAD_PATH)
+else
+test_archive_dir = $(DIST)/$(PKG_PATH)
+endif
+
+package-tests-prepare-dest:
+ $(NSINSTALL) -D $(test_archive_dir)
+
+download-wpt-manifest:
+ $(call py_action,download_wpt_manifest)
+
+define package_archive
+package-tests-$(1): stage-all package-tests-prepare-dest download-wpt-manifest
+ $$(call py_action,test_archive, \
+ $(1) \
+ '$$(abspath $$(test_archive_dir))/$$(PKG_BASENAME).$(1).tests.$(2)')
+package-tests: package-tests-$(1)
+endef
+
+$(foreach name,$(TEST_PKGS_TARGZ),$(eval $(call package_archive,$(name),tar.gz)))
+
+ifeq ($(MOZ_BUILD_APP),mobile/android)
+stage-all: stage-android
+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)/modules
+ $(NSINSTALL) -D $(PKG_STAGE)/tools/mach
+
+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_initialize.py $(PKG_STAGE)/tools/mach_initialize.py
+ cp $(topsrcdir)/mach $(PKG_STAGE)
+
+stage-mochitest: make-stage-dir ;
+
+stage-jstests: make-stage-dir
+ $(MAKE) -C $(DEPTH)/js/src/tests stage-package
+
+ifdef OBJCOPY
+ifneq ($(OBJCOPY), :) # see build/autoconf/toolchain.m4:102 for why this is necessary
+ifdef PKG_STRIP
+STRIP_COMPILED_TESTS := 1
+endif
+endif
+endif
+
+stage-gtest: make-stage-dir
+ $(NSINSTALL) -D $(PKG_STAGE)/gtest/gtest_bin/gtest
+ifdef STRIP_COMPILED_TESTS
+# The libxul file basename will vary per platform. Fortunately
+# dependentlibs.list always lists the library name as its final line, so we
+# can get the value from there.
+ LIBXUL_BASE=`tail -1 $(DIST)/bin/dependentlibs.list` && \
+ $(OBJCOPY) $(or $(STRIP_FLAGS),--strip-unneeded) \
+ $(DIST)/bin/gtest/$$LIBXUL_BASE $(PKG_STAGE)/gtest/gtest_bin/gtest/$$LIBXUL_BASE
+else
+ cp -RL $(DIST)/bin/gtest $(PKG_STAGE)/gtest/gtest_bin
+endif
+ cp -RL $(DEPTH)/_tests/gtest $(PKG_STAGE)
+ cp $(topsrcdir)/testing/gtest/rungtests.py $(PKG_STAGE)/gtest
+ cp $(topsrcdir)/testing/gtest/remotegtests.py $(PKG_STAGE)/gtest
+ cp $(topsrcdir)/testing/gtest/mach_test_package_commands.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
+
+ifdef MOZ_COPY_PDBS
+CPP_UNIT_TEST_BINS=$(filter-out $(wildcard $(DIST)/cppunittests/*.pdb), $(wildcard $(DIST)/cppunittests/*))
+else
+CPP_UNIT_TEST_BINS=$(wildcard $(DIST)/cppunittests/*)
+endif
+
+stage-cppunittests: make-stage-dir
+ $(NSINSTALL) -D $(PKG_STAGE)/cppunittest
+ifdef STRIP_COMPILED_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 MOZ_COPY_PDBS
+ cp -RL $(addsuffix .pdb,$(basename $(CPP_UNIT_TEST_BINS))) $(PKG_STAGE)/cppunittest
+endif
+ifdef STRIP_COMPILED_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
+ifdef MOZ_COPY_PDBS
+ cp -RL $(DIST)/bin/jsapi-tests.pdb $(PKG_STAGE)/cppunittest
+endif
+
+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;)
+
+
+.PHONY: \
+ reftest \
+ crashtest \
+ xpcshell-tests \
+ jstestbrowser \
+ package-tests \
+ download-wpt-manifest \
+ package-tests-prepare-dest \
+ package-tests-common \
+ make-stage-dir \
+ stage-all \
+ stage-config \
+ stage-mochitest \
+ stage-jstests \
+ stage-android \
+ test-packages-manifest \
+ check \
+ $(NULL)