testing/testsuite-targets.mk

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/testing/testsuite-targets.mk	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,571 @@
     1.4 +# This Source Code Form is subject to the terms of the Mozilla Public
     1.5 +# License, v. 2.0. If a copy of the MPL was not distributed with this
     1.6 +# file, You can obtain one at http://mozilla.org/MPL/2.0/.
     1.7 +
     1.8 +
     1.9 +# Shortcut for mochitest* and xpcshell-tests targets,
    1.10 +# replaces 'EXTRA_TEST_ARGS=--test-path=...'.
    1.11 +ifdef TEST_PATH
    1.12 +TEST_PATH_ARG := --test-path='$(TEST_PATH)'
    1.13 +IPCPLUGINS_PATH_ARG := --test-path='$(TEST_PATH)'
    1.14 +else
    1.15 +TEST_PATH_ARG :=
    1.16 +IPCPLUGINS_PATH_ARG := --test-path=dom/plugins/test
    1.17 +endif
    1.18 +
    1.19 +# include automation-build.mk to get the path to the binary
    1.20 +TARGET_DEPTH = $(DEPTH)
    1.21 +include $(topsrcdir)/build/binary-location.mk
    1.22 +
    1.23 +SYMBOLS_PATH := --symbols-path=$(DIST)/crashreporter-symbols
    1.24 +
    1.25 +# Usage: |make [TEST_PATH=...] [EXTRA_TEST_ARGS=...] mochitest*|.
    1.26 +MOCHITESTS := mochitest-plain mochitest-chrome mochitest-devtools mochitest-a11y mochitest-ipcplugins
    1.27 +mochitest:: $(MOCHITESTS)
    1.28 +
    1.29 +ifndef TEST_PACKAGE_NAME
    1.30 +TEST_PACKAGE_NAME := $(ANDROID_PACKAGE_NAME)
    1.31 +endif
    1.32 +
    1.33 +RUN_MOCHITEST_B2G_DESKTOP = \
    1.34 +  rm -f ./$@.log && \
    1.35 +  $(PYTHON) _tests/testing/mochitest/runtestsb2g.py --autorun --close-when-done \
    1.36 +    --console-level=INFO --log-file=./$@.log --file-level=INFO \
    1.37 +    --desktop --profile ${GAIA_PROFILE_DIR} \
    1.38 +    --failure-file=$(abspath _tests/testing/mochitest/makefailures.json) \
    1.39 +    $(TEST_PATH_ARG) $(EXTRA_TEST_ARGS)
    1.40 +
    1.41 +RUN_MOCHITEST = \
    1.42 +  rm -f ./$@.log && \
    1.43 +  $(PYTHON) _tests/testing/mochitest/runtests.py --autorun --close-when-done \
    1.44 +    --console-level=INFO --log-file=./$@.log --file-level=INFO \
    1.45 +    --failure-file=$(abspath _tests/testing/mochitest/makefailures.json) \
    1.46 +    --testing-modules-dir=$(abspath _tests/modules) \
    1.47 +    --extra-profile-file=$(DIST)/plugins \
    1.48 +    $(SYMBOLS_PATH) $(TEST_PATH_ARG) $(EXTRA_TEST_ARGS)
    1.49 +
    1.50 +RERUN_MOCHITEST = \
    1.51 +  rm -f ./$@.log && \
    1.52 +  $(PYTHON) _tests/testing/mochitest/runtests.py --autorun --close-when-done \
    1.53 +    --console-level=INFO --log-file=./$@.log --file-level=INFO \
    1.54 +    --run-only-tests=makefailures.json \
    1.55 +    --testing-modules-dir=$(abspath _tests/modules) \
    1.56 +    --extra-profile-file=$(DIST)/plugins \
    1.57 +    $(SYMBOLS_PATH) $(TEST_PATH_ARG) $(EXTRA_TEST_ARGS)
    1.58 +
    1.59 +RUN_MOCHITEST_REMOTE = \
    1.60 +  rm -f ./$@.log && \
    1.61 +  $(PYTHON) _tests/testing/mochitest/runtestsremote.py --autorun --close-when-done \
    1.62 +    --console-level=INFO --log-file=./$@.log --file-level=INFO $(DM_FLAGS) --dm_trans=$(DM_TRANS) \
    1.63 +    --app=$(TEST_PACKAGE_NAME) --deviceIP=${TEST_DEVICE} --xre-path=${MOZ_HOST_BIN} \
    1.64 +    --testing-modules-dir=$(abspath _tests/modules) \
    1.65 +    $(SYMBOLS_PATH) $(TEST_PATH_ARG) $(EXTRA_TEST_ARGS)
    1.66 +
    1.67 +RUN_MOCHITEST_ROBOCOP = \
    1.68 +  rm -f ./$@.log && \
    1.69 +  $(PYTHON) _tests/testing/mochitest/runtestsremote.py \
    1.70 +    --robocop-apk=$(DEPTH)/build/mobile/robocop/robocop-debug.apk \
    1.71 +    --robocop-ids=$(DEPTH)/mobile/android/base/fennec_ids.txt \
    1.72 +    --robocop-ini=$(DEPTH)/build/mobile/robocop/robocop.ini \
    1.73 +    --console-level=INFO --log-file=./$@.log --file-level=INFO $(DM_FLAGS) --dm_trans=$(DM_TRANS) \
    1.74 +    --app=$(TEST_PACKAGE_NAME) --deviceIP=${TEST_DEVICE} --xre-path=${MOZ_HOST_BIN} \
    1.75 +    $(SYMBOLS_PATH) $(TEST_PATH_ARG) $(EXTRA_TEST_ARGS)
    1.76 +
    1.77 +ifndef NO_FAIL_ON_TEST_ERRORS
    1.78 +define check_test_error_internal
    1.79 +  @errors=`grep 'TEST-UNEXPECTED-' $@.log` ;\
    1.80 +  if test "$$errors" ; then \
    1.81 +	  echo '$@ failed:'; \
    1.82 +	  echo "$$errors"; \
    1.83 +          $(if $(1),echo $(1);) \
    1.84 +	  exit 1; \
    1.85 +  fi
    1.86 +endef
    1.87 +CHECK_TEST_ERROR = $(call check_test_error_internal)
    1.88 +CHECK_TEST_ERROR_RERUN = $(call check_test_error_internal,'To rerun your failures please run "make $@-rerun-failures"')
    1.89 +endif
    1.90 +
    1.91 +mochitest-remote: DM_TRANS?=adb
    1.92 +mochitest-remote:
    1.93 +	@if [ '${MOZ_HOST_BIN}' = '' ]; then \
    1.94 +        echo 'environment variable MOZ_HOST_BIN must be set to a directory containing host xpcshell'; \
    1.95 +    elif [ ! -d ${MOZ_HOST_BIN} ]; then \
    1.96 +        echo 'MOZ_HOST_BIN does not specify a directory'; \
    1.97 +    elif [ ! -f ${MOZ_HOST_BIN}/xpcshell ]; then \
    1.98 +        echo 'xpcshell not found in MOZ_HOST_BIN'; \
    1.99 +    elif [ '${TEST_DEVICE}' = '' -a '$(DM_TRANS)' != 'adb' ]; then \
   1.100 +        echo 'please prepare your host with the environment variable TEST_DEVICE'; \
   1.101 +    else \
   1.102 +        $(RUN_MOCHITEST_REMOTE); \
   1.103 +    fi
   1.104 +
   1.105 +mochitest-robotium: mochitest-robocop
   1.106 +	@echo 'mochitest-robotium is deprecated -- please use mochitest-robocop'
   1.107 +
   1.108 +mochitest-robocop: DM_TRANS?=adb
   1.109 +mochitest-robocop:
   1.110 +	@if [ '${MOZ_HOST_BIN}' = '' ]; then \
   1.111 +        echo 'environment variable MOZ_HOST_BIN must be set to a directory containing host xpcshell'; \
   1.112 +    elif [ ! -d ${MOZ_HOST_BIN} ]; then \
   1.113 +        echo 'MOZ_HOST_BIN does not specify a directory'; \
   1.114 +    elif [ ! -f ${MOZ_HOST_BIN}/xpcshell ]; then \
   1.115 +        echo 'xpcshell not found in MOZ_HOST_BIN'; \
   1.116 +    elif [ '${TEST_DEVICE}' = '' -a '$(DM_TRANS)' != 'adb' ]; then \
   1.117 +        echo 'please prepare your host with the environment variable TEST_DEVICE'; \
   1.118 +    else \
   1.119 +        $(RUN_MOCHITEST_ROBOCOP); \
   1.120 +    fi
   1.121 +
   1.122 +ifdef MOZ_B2G
   1.123 +mochitest-plain:
   1.124 +	@if [ '${GAIA_PROFILE_DIR}'  = '' ]; then \
   1.125 +        echo 'please specify the GAIA_PROFILE_DIR env variable'; \
   1.126 +    else \
   1.127 +        $(RUN_MOCHITEST_B2G_DESKTOP); \
   1.128 +        $(CHECK_TEST_ERROR_RERUN); \
   1.129 +    fi
   1.130 +else
   1.131 +mochitest-plain:
   1.132 +	$(RUN_MOCHITEST)
   1.133 +	$(CHECK_TEST_ERROR_RERUN)
   1.134 +endif
   1.135 +
   1.136 +mochitest-plain-rerun-failures:
   1.137 +	$(RERUN_MOCHITEST)
   1.138 +	$(CHECK_TEST_ERROR_RERUN)
   1.139 +
   1.140 +# Allow mochitest-1 ... mochitest-5 for developer ease
   1.141 +mochitest-1 mochitest-2 mochitest-3 mochitest-4 mochitest-5: mochitest-%:
   1.142 +	echo 'mochitest: $* / 5'
   1.143 +	$(RUN_MOCHITEST) --chunk-by-dir=4 --total-chunks=5 --this-chunk=$*
   1.144 +	$(CHECK_TEST_ERROR)
   1.145 +
   1.146 +mochitest-chrome:
   1.147 +	$(RUN_MOCHITEST) --chrome
   1.148 +	$(CHECK_TEST_ERROR)
   1.149 +
   1.150 +mochitest-devtools:
   1.151 +	$(RUN_MOCHITEST) --subsuite=devtools
   1.152 +	$(CHECK_TEST_ERROR)
   1.153 +
   1.154 +mochitest-a11y:
   1.155 +	$(RUN_MOCHITEST) --a11y
   1.156 +	$(CHECK_TEST_ERROR)
   1.157 +
   1.158 +mochitest-ipcplugins:
   1.159 +ifeq (Darwin,$(OS_ARCH))
   1.160 +ifeq (i386,$(TARGET_CPU))
   1.161 +	$(RUN_MOCHITEST) --setpref=dom.ipc.plugins.enabled.i386.test.plugin=false $(IPCPLUGINS_PATH_ARG)
   1.162 +endif
   1.163 +ifeq (x86_64,$(TARGET_CPU))
   1.164 +	$(RUN_MOCHITEST) --setpref=dom.ipc.plugins.enabled.x86_64.test.plugin=false $(IPCPLUGINS_PATH_ARG)
   1.165 +endif
   1.166 +ifeq (powerpc,$(TARGET_CPU))
   1.167 +	$(RUN_MOCHITEST) --setpref=dom.ipc.plugins.enabled.ppc.test.plugin=false $(IPCPLUGINS_PATH_ARG)
   1.168 +endif
   1.169 +else
   1.170 +	$(RUN_MOCHITEST) --setpref=dom.ipc.plugins.enabled=false --test-path=dom/plugins/test
   1.171 +endif
   1.172 +	$(CHECK_TEST_ERROR)
   1.173 +
   1.174 +ifeq ($(OS_ARCH),Darwin)
   1.175 +webapprt_stub_path = $(TARGET_DIST)/$(MOZ_MACBUNDLE_NAME)/Contents/MacOS/webapprt-stub$(BIN_SUFFIX)
   1.176 +endif
   1.177 +ifeq ($(OS_ARCH),WINNT)
   1.178 +webapprt_stub_path = $(TARGET_DIST)/bin/webapprt-stub$(BIN_SUFFIX)
   1.179 +endif
   1.180 +ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
   1.181 +webapprt_stub_path = $(TARGET_DIST)/bin/webapprt-stub$(BIN_SUFFIX)
   1.182 +endif
   1.183 +
   1.184 +ifdef webapprt_stub_path
   1.185 +webapprt-test-content:
   1.186 +	$(RUN_MOCHITEST) --webapprt-content --appname $(webapprt_stub_path)
   1.187 +	$(CHECK_TEST_ERROR)
   1.188 +webapprt-test-chrome:
   1.189 +	$(RUN_MOCHITEST) --webapprt-chrome --appname $(webapprt_stub_path) --browser-arg -test-mode
   1.190 +	$(CHECK_TEST_ERROR)
   1.191 +endif
   1.192 +
   1.193 +# Usage: |make [EXTRA_TEST_ARGS=...] *test|.
   1.194 +RUN_REFTEST = rm -f ./$@.log && $(PYTHON) _tests/reftest/runreftest.py \
   1.195 +  --extra-profile-file=$(DIST)/plugins \
   1.196 +  $(SYMBOLS_PATH) $(EXTRA_TEST_ARGS) $(1) | tee ./$@.log
   1.197 +
   1.198 +REMOTE_REFTEST = rm -f ./$@.log && $(PYTHON) _tests/reftest/remotereftest.py \
   1.199 +  --dm_trans=$(DM_TRANS) --ignore-window-size \
   1.200 +  --app=$(TEST_PACKAGE_NAME) --deviceIP=${TEST_DEVICE} --xre-path=${MOZ_HOST_BIN} \
   1.201 +  --httpd-path=_tests/reftest/reftest/components \
   1.202 +  $(SYMBOLS_PATH) $(EXTRA_TEST_ARGS) '$(1)' | tee ./$@.log
   1.203 +
   1.204 +RUN_REFTEST_B2G = rm -f ./$@.log && $(PYTHON) _tests/reftest/runreftestb2g.py \
   1.205 +  --remote-webserver=10.0.2.2 --b2gpath=${B2G_PATH} --adbpath=${ADB_PATH} \
   1.206 +  --xre-path=${MOZ_HOST_BIN} $(SYMBOLS_PATH) --ignore-window-size \
   1.207 +  --httpd-path=_tests/reftest/reftest/components \
   1.208 +  $(EXTRA_TEST_ARGS) '$(1)' | tee ./$@.log
   1.209 +
   1.210 +ifeq ($(OS_ARCH),WINNT) #{
   1.211 +# GPU-rendered shadow layers are unsupported here
   1.212 +OOP_CONTENT = --setpref=browser.tabs.remote=true --setpref=browser.tabs.remote.autostart=true --setpref=layers.acceleration.disabled=true
   1.213 +GPU_RENDERING =
   1.214 +else
   1.215 +OOP_CONTENT = --setpref=browser.tabs.remote=true --setpref=browser.tabs.remote.autostart=true
   1.216 +GPU_RENDERING = --setpref=layers.acceleration.force-enabled=true
   1.217 +endif #}
   1.218 +
   1.219 +reftest: TEST_PATH?=layout/reftests/reftest.list
   1.220 +reftest:
   1.221 +	$(call RUN_REFTEST,'$(topsrcdir)/$(TEST_PATH)')
   1.222 +	$(CHECK_TEST_ERROR)
   1.223 +
   1.224 +reftest-remote: TEST_PATH?=layout/reftests/reftest.list
   1.225 +reftest-remote: DM_TRANS?=adb
   1.226 +reftest-remote:
   1.227 +	@if [ '${MOZ_HOST_BIN}' = '' ]; then \
   1.228 +        echo 'environment variable MOZ_HOST_BIN must be set to a directory containing host xpcshell'; \
   1.229 +    elif [ ! -d ${MOZ_HOST_BIN} ]; then \
   1.230 +        echo 'MOZ_HOST_BIN does not specify a directory'; \
   1.231 +    elif [ ! -f ${MOZ_HOST_BIN}/xpcshell ]; then \
   1.232 +        echo 'xpcshell not found in MOZ_HOST_BIN'; \
   1.233 +    elif [ '${TEST_DEVICE}' = '' -a '$(DM_TRANS)' != 'adb' ]; then \
   1.234 +        echo 'please prepare your host with the environment variable TEST_DEVICE'; \
   1.235 +    else \
   1.236 +        ln -s $(abspath $(topsrcdir)) _tests/reftest/tests; \
   1.237 +        $(call REMOTE_REFTEST,tests/$(TEST_PATH)); \
   1.238 +        $(CHECK_TEST_ERROR); \
   1.239 +    fi
   1.240 +
   1.241 +reftest-b2g: TEST_PATH?=layout/reftests/reftest.list
   1.242 +reftest-b2g:
   1.243 +	@if [ '${MOZ_HOST_BIN}' = '' ]; then \
   1.244 +		echo 'environment variable MOZ_HOST_BIN must be set to a directory containing host xpcshell'; \
   1.245 +	elif [ ! -d ${MOZ_HOST_BIN} ]; then \
   1.246 +		echo 'MOZ_HOST_BIN does not specify a directory'; \
   1.247 +	elif [ ! -f ${MOZ_HOST_BIN}/xpcshell ]; then \
   1.248 +		echo 'xpcshell not found in MOZ_HOST_BIN'; \
   1.249 +	elif [ '${B2G_PATH}' = '' -o '${ADB_PATH}' = '' ]; then \
   1.250 +		echo 'please set the B2G_PATH and ADB_PATH environment variables'; \
   1.251 +	else \
   1.252 +        ln -s $(abspath $(topsrcdir)) _tests/reftest/tests; \
   1.253 +		if [ '${REFTEST_PATH}' != '' ]; then \
   1.254 +			$(call RUN_REFTEST_B2G,tests/${REFTEST_PATH}); \
   1.255 +		else \
   1.256 +			$(call RUN_REFTEST_B2G,tests/$(TEST_PATH)); \
   1.257 +		fi; \
   1.258 +        $(CHECK_TEST_ERROR); \
   1.259 +	fi
   1.260 +
   1.261 +reftest-ipc: TEST_PATH?=layout/reftests/reftest.list
   1.262 +reftest-ipc:
   1.263 +	$(call RUN_REFTEST,'$(topsrcdir)/$(TEST_PATH)' $(OOP_CONTENT))
   1.264 +	$(CHECK_TEST_ERROR)
   1.265 +
   1.266 +reftest-ipc-gpu: TEST_PATH?=layout/reftests/reftest.list
   1.267 +reftest-ipc-gpu:
   1.268 +	$(call RUN_REFTEST,'$(topsrcdir)/$(TEST_PATH)' $(OOP_CONTENT) $(GPU_RENDERING))
   1.269 +	$(CHECK_TEST_ERROR)
   1.270 +
   1.271 +crashtest: TEST_PATH?=testing/crashtest/crashtests.list
   1.272 +crashtest:
   1.273 +	$(call RUN_REFTEST,'$(topsrcdir)/$(TEST_PATH)')
   1.274 +	$(CHECK_TEST_ERROR)
   1.275 +
   1.276 +crashtest-ipc: TEST_PATH?=testing/crashtest/crashtests.list
   1.277 +crashtest-ipc:
   1.278 +	$(call RUN_REFTEST,'$(topsrcdir)/$(TEST_PATH)' $(OOP_CONTENT))
   1.279 +	$(CHECK_TEST_ERROR)
   1.280 +
   1.281 +crashtest-ipc-gpu: TEST_PATH?=testing/crashtest/crashtests.list
   1.282 +crashtest-ipc-gpu:
   1.283 +	$(call RUN_REFTEST,'$(topsrcdir)/$(TEST_PATH)' $(OOP_CONTENT) $(GPU_RENDERING))
   1.284 +	$(CHECK_TEST_ERROR)
   1.285 +
   1.286 +jstestbrowser: TESTS_PATH?=test-package-stage/jsreftest/tests/
   1.287 +jstestbrowser:
   1.288 +	$(MAKE) -C $(DEPTH)/config
   1.289 +	$(MAKE) stage-jstests
   1.290 +	$(call RUN_REFTEST,'$(DIST)/$(TESTS_PATH)/jstests.list' --extra-profile-file=$(DIST)/test-package-stage/jsreftest/tests/user.js)
   1.291 +	$(CHECK_TEST_ERROR)
   1.292 +
   1.293 +GARBAGE += $(addsuffix .log,$(MOCHITESTS) reftest crashtest jstestbrowser)
   1.294 +
   1.295 +# Execute all xpcshell tests in the directories listed in the manifest.
   1.296 +# See also config/rules.mk 'xpcshell-tests' target for local execution.
   1.297 +# Usage: |make [TEST_PATH=...] [EXTRA_TEST_ARGS=...] xpcshell-tests|.
   1.298 +xpcshell-tests:
   1.299 +	$(info Have you considered running xpcshell tests via |mach xpcshell-test|? mach is easier to use and has more features than make and it will eventually be the only way to run xpcshell tests. Please consider using mach today!)
   1.300 +	$(PYTHON) -u $(topsrcdir)/config/pythonpath.py \
   1.301 +	  -I$(DEPTH)/build \
   1.302 +	  -I$(topsrcdir)/build \
   1.303 +	  -I$(DEPTH)/_tests/mozbase/mozinfo \
   1.304 +	  $(topsrcdir)/testing/xpcshell/runxpcshelltests.py \
   1.305 +	  --manifest=$(DEPTH)/_tests/xpcshell/xpcshell.ini \
   1.306 +	  --build-info-json=$(DEPTH)/mozinfo.json \
   1.307 +	  --no-logfiles \
   1.308 +	  --test-plugin-path='$(DIST)/plugins' \
   1.309 +	  --tests-root-dir=$(abspath _tests/xpcshell) \
   1.310 +	  --testing-modules-dir=$(abspath _tests/modules) \
   1.311 +	  --xunit-file=$(abspath _tests/xpcshell/results.xml) \
   1.312 +	  --xunit-suite-name=xpcshell \
   1.313 +          $(SYMBOLS_PATH) \
   1.314 +	  $(TEST_PATH_ARG) $(EXTRA_TEST_ARGS) \
   1.315 +	  $(LIBXUL_DIST)/bin/xpcshell
   1.316 +
   1.317 +B2G_XPCSHELL = \
   1.318 +	rm -f ./@.log && \
   1.319 +	$(PYTHON) -u $(topsrcdir)/config/pythonpath.py \
   1.320 +	  -I$(DEPTH)/build \
   1.321 +	  -I$(topsrcdir)/build \
   1.322 +	  $(topsrcdir)/testing/xpcshell/runtestsb2g.py \
   1.323 +	  --manifest=$(DEPTH)/_tests/xpcshell/xpcshell.ini \
   1.324 +	  --build-info-json=$(DEPTH)/mozinfo.json \
   1.325 +	  --no-logfiles \
   1.326 +	  --use-device-libs \
   1.327 +	  --no-clean \
   1.328 +	  --objdir=$(DEPTH) \
   1.329 +	  $$EXTRA_XPCSHELL_ARGS \
   1.330 +	  --b2gpath=${B2G_HOME} \
   1.331 +	  $(TEST_PATH_ARG) $(EXTRA_TEST_ARGS)
   1.332 +
   1.333 +xpcshell-tests-b2g: ADB_PATH?=$(shell which adb)
   1.334 +xpcshell-tests-b2g:
   1.335 +	@if [ '${B2G_HOME}' = '' ]; then \
   1.336 +		echo 'Please set the B2G_HOME variable'; exit 1; \
   1.337 +	elif [ ! -f '${ADB_PATH}' ]; then \
   1.338 +		echo 'Please set the ADB_PATH variable'; exit 1; \
   1.339 +	elif [ '${EMULATOR}' != '' ]; then \
   1.340 +		EXTRA_XPCSHELL_ARGS=--emulator=${EMULATOR}; \
   1.341 +		$(call B2G_XPCSHELL); \
   1.342 +		exit 0; \
   1.343 +	else \
   1.344 +		EXTRA_XPCSHELL_ARGS=--address=localhost:2828; \
   1.345 +		$(call B2G_XPCSHELL); \
   1.346 +		exit 0; \
   1.347 +	fi
   1.348 +
   1.349 +xpcshell-tests-remote: DM_TRANS?=adb
   1.350 +xpcshell-tests-remote:
   1.351 +	@if [ '${TEST_DEVICE}' != '' -o '$(DM_TRANS)' = 'adb' ]; \
   1.352 +          then $(PYTHON) -u $(topsrcdir)/testing/xpcshell/remotexpcshelltests.py \
   1.353 +	    --manifest=$(DEPTH)/_tests/xpcshell/xpcshell_android.ini \
   1.354 +	    --build-info-json=$(DEPTH)/mozinfo.json \
   1.355 +	    --no-logfiles \
   1.356 +	    --testing-modules-dir=$(abspath _tests/modules) \
   1.357 +	    --dm_trans=$(DM_TRANS) \
   1.358 +	    --deviceIP=${TEST_DEVICE} \
   1.359 +	    --objdir=$(DEPTH) \
   1.360 +	    $(SYMBOLS_PATH) \
   1.361 +	    $(TEST_PATH_ARG) $(EXTRA_TEST_ARGS); \
   1.362 +	    $(CHECK_TEST_ERROR); \
   1.363 +        else \
   1.364 +          echo 'please prepare your host with environment variables for TEST_DEVICE'; \
   1.365 +        fi
   1.366 +
   1.367 +REMOTE_CPPUNITTESTS = \
   1.368 +	$(PYTHON) -u $(topsrcdir)/testing/remotecppunittests.py \
   1.369 +	  --xre-path=$(DEPTH)/dist/bin \
   1.370 +	  --localLib=$(DEPTH)/dist/fennec \
   1.371 +	  --dm_trans=$(DM_TRANS) \
   1.372 +	  --deviceIP=${TEST_DEVICE} \
   1.373 +	  $(TEST_PATH) $(EXTRA_TEST_ARGS)
   1.374 +
   1.375 +# Usage: |make [TEST_PATH=...] [EXTRA_TEST_ARGS=...] cppunittests-remote|.
   1.376 +cppunittests-remote: DM_TRANS?=adb
   1.377 +cppunittests-remote:
   1.378 +	@if [ '${TEST_DEVICE}' != '' -o '$(DM_TRANS)' = 'adb' ]; \
   1.379 +          then $(call REMOTE_CPPUNITTESTS); \
   1.380 +        else \
   1.381 +          echo 'please prepare your host with environment variables for TEST_DEVICE'; \
   1.382 +        fi
   1.383 +
   1.384 +jetpack-tests:
   1.385 +	$(PYTHON) $(topsrcdir)/addon-sdk/source/bin/cfx -b $(browser_path) --parseable testpkgs
   1.386 +
   1.387 +# -- -register
   1.388 +# -- --trace-malloc malloc.log --shutdown-leaks=sdleak.log
   1.389 +leaktest:
   1.390 +	$(PYTHON) _leaktest/leaktest.py $(LEAKTEST_ARGS)
   1.391 +
   1.392 +pgo-profile-run:
   1.393 +	$(PYTHON) $(topsrcdir)/build/pgo/profileserver.py $(EXTRA_TEST_ARGS)
   1.394 +
   1.395 +# Package up the tests and test harnesses
   1.396 +include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
   1.397 +
   1.398 +ifndef UNIVERSAL_BINARY
   1.399 +PKG_STAGE = $(DIST)/test-package-stage
   1.400 +package-tests: \
   1.401 +  stage-config \
   1.402 +  stage-mochitest \
   1.403 +  stage-reftest \
   1.404 +  stage-xpcshell \
   1.405 +  stage-jstests \
   1.406 +  stage-jetpack \
   1.407 +  stage-mozbase \
   1.408 +  stage-tps \
   1.409 +  stage-modules \
   1.410 +  stage-marionette \
   1.411 +  stage-cppunittests \
   1.412 +  stage-jittest \
   1.413 +  stage-steeplechase \
   1.414 +  $(NULL)
   1.415 +else
   1.416 +# This staging area has been built for us by universal/flight.mk
   1.417 +PKG_STAGE = $(DIST)/universal/test-package-stage
   1.418 +endif
   1.419 +
   1.420 +package-tests:
   1.421 +	@rm -f '$(DIST)/$(PKG_PATH)$(TEST_PACKAGE)'
   1.422 +ifndef UNIVERSAL_BINARY
   1.423 +	$(NSINSTALL) -D $(DIST)/$(PKG_PATH)
   1.424 +endif
   1.425 +	find $(PKG_STAGE) -name '*.pyc' -exec rm {} \;
   1.426 +	$(MKDIR) -p $(abspath $(DIST))/$(PKG_PATH) && \
   1.427 +	cd $(PKG_STAGE) && \
   1.428 +	  zip -rq9D '$(abspath $(DIST))/$(PKG_PATH)$(TEST_PACKAGE)' \
   1.429 +	  * -x \*/.mkdir.done
   1.430 +
   1.431 +ifeq ($(MOZ_WIDGET_TOOLKIT),android)
   1.432 +package-tests: stage-android
   1.433 +endif
   1.434 +
   1.435 +ifeq ($(MOZ_WIDGET_TOOLKIT),gonk)
   1.436 +package-tests: stage-b2g
   1.437 +endif
   1.438 +
   1.439 +make-stage-dir:
   1.440 +	rm -rf $(PKG_STAGE)
   1.441 +	$(NSINSTALL) -D $(PKG_STAGE)
   1.442 +	$(NSINSTALL) -D $(PKG_STAGE)/bin
   1.443 +	$(NSINSTALL) -D $(PKG_STAGE)/bin/components
   1.444 +	$(NSINSTALL) -D $(PKG_STAGE)/certs
   1.445 +	$(NSINSTALL) -D $(PKG_STAGE)/config
   1.446 +	$(NSINSTALL) -D $(PKG_STAGE)/jetpack
   1.447 +	$(NSINSTALL) -D $(PKG_STAGE)/mozbase
   1.448 +	$(NSINSTALL) -D $(PKG_STAGE)/modules
   1.449 +
   1.450 +stage-b2g: make-stage-dir
   1.451 +	$(NSINSTALL) $(topsrcdir)/b2g/test/b2g-unittest-requirements.txt $(PKG_STAGE)/b2g
   1.452 +
   1.453 +stage-config: make-stage-dir
   1.454 +	$(NSINSTALL) -D $(PKG_STAGE)/config
   1.455 +	@(cd $(topsrcdir)/testing/config && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/config && tar -xf -)
   1.456 +
   1.457 +stage-mochitest: make-stage-dir
   1.458 +	$(MAKE) -C $(DEPTH)/testing/mochitest stage-package
   1.459 +ifeq ($(MOZ_BUILD_APP),mobile/android)
   1.460 +	$(NSINSTALL) $(DEPTH)/mobile/android/base/fennec_ids.txt $(PKG_STAGE)/mochitest
   1.461 +endif
   1.462 +
   1.463 +stage-reftest: make-stage-dir
   1.464 +	$(MAKE) -C $(DEPTH)/layout/tools/reftest stage-package
   1.465 +
   1.466 +stage-xpcshell: make-stage-dir
   1.467 +	$(MAKE) -C $(DEPTH)/testing/xpcshell stage-package
   1.468 +
   1.469 +stage-jstests: make-stage-dir
   1.470 +	$(MAKE) -C $(DEPTH)/js/src/tests stage-package
   1.471 +
   1.472 +stage-android: make-stage-dir
   1.473 +ifdef MOZ_ENABLE_SZIP
   1.474 +# Tinderbox scripts are not unzipping everything, so the file needs to be in a directory it unzips
   1.475 +	$(NSINSTALL) $(DIST)/host/bin/szip $(PKG_STAGE)/bin/host
   1.476 +endif
   1.477 +	$(NSINSTALL) $(DEPTH)/build/mobile/sutagent/android/sutAgentAndroid.apk $(PKG_STAGE)/bin
   1.478 +	$(NSINSTALL) $(DEPTH)/build/mobile/sutagent/android/watcher/Watcher.apk $(PKG_STAGE)/bin
   1.479 +	$(NSINSTALL) $(DEPTH)/build/mobile/sutagent/android/fencp/FenCP.apk $(PKG_STAGE)/bin
   1.480 +	$(NSINSTALL) $(DEPTH)/build/mobile/sutagent/android/ffxcp/FfxCP.apk $(PKG_STAGE)/bin
   1.481 +
   1.482 +stage-jetpack: make-stage-dir
   1.483 +	$(MAKE) -C $(DEPTH)/addon-sdk stage-tests-package
   1.484 +
   1.485 +stage-tps: make-stage-dir
   1.486 +	$(NSINSTALL) -D $(PKG_STAGE)/tps/tests
   1.487 +	@(cd $(topsrcdir)/testing/tps && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/tps && tar -xf -)
   1.488 +	@(cd $(topsrcdir)/services/sync/tps && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/tps && tar -xf -)
   1.489 +	(cd $(topsrcdir)/services/sync/tests/tps && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/tps/tests && tar -xf -)
   1.490 +
   1.491 +stage-modules: make-stage-dir
   1.492 +	$(NSINSTALL) -D $(PKG_STAGE)/modules
   1.493 +	cp -RL $(DEPTH)/_tests/modules $(PKG_STAGE)
   1.494 +
   1.495 +CPP_UNIT_TEST_BINS=$(wildcard $(DIST)/cppunittests/*)
   1.496 +
   1.497 +ifdef OBJCOPY
   1.498 +ifndef PKG_SKIP_STRIP
   1.499 +STRIP_CPP_TESTS := 1
   1.500 +endif
   1.501 +endif
   1.502 +
   1.503 +stage-cppunittests: make-stage-dir
   1.504 +	$(NSINSTALL) -D $(PKG_STAGE)/cppunittests
   1.505 +ifdef STRIP_CPP_TESTS
   1.506 +	$(foreach bin,$(CPP_UNIT_TEST_BINS),$(OBJCOPY) $(or $(STRIP_FLAGS),--strip-unneeded) $(bin) $(bin:$(DIST)/%=$(PKG_STAGE)/%);)
   1.507 +else
   1.508 +	cp -RL $(DIST)/cppunittests $(PKG_STAGE)
   1.509 +endif
   1.510 +	$(NSINSTALL) $(topsrcdir)/testing/runcppunittests.py $(PKG_STAGE)/cppunittests
   1.511 +	$(NSINSTALL) $(topsrcdir)/testing/remotecppunittests.py $(PKG_STAGE)/cppunittests
   1.512 +ifeq ($(MOZ_WIDGET_TOOLKIT),android)
   1.513 +	$(NSINSTALL) $(topsrcdir)/testing/android_cppunittest_manifest.txt $(PKG_STAGE)/cppunittests
   1.514 +endif
   1.515 +	$(NSINSTALL) $(topsrcdir)/startupcache/test/TestStartupCacheTelemetry.js $(PKG_STAGE)/cppunittests
   1.516 +	$(NSINSTALL) $(topsrcdir)/startupcache/test/TestStartupCacheTelemetry.manifest $(PKG_STAGE)/cppunittests
   1.517 +	cp -RL $(DIST)/bin/jsapi-tests$(BIN_SUFFIX) $(PKG_STAGE)/cppunittests
   1.518 +
   1.519 +stage-jittest: make-stage-dir
   1.520 +	$(NSINSTALL) -D $(PKG_STAGE)/jit-test/tests
   1.521 +	cp -RL $(topsrcdir)/js/src/jsapi.h $(PKG_STAGE)/jit-test
   1.522 +	cp -RL $(topsrcdir)/js/src/jit-test $(PKG_STAGE)/jit-test/jit-test
   1.523 +	cp -RL $(topsrcdir)/js/src/tests/ecma_6 $(PKG_STAGE)/jit-test/tests/ecma_6
   1.524 +	cp -RL $(topsrcdir)/js/src/tests/js1_8_5 $(PKG_STAGE)/jit-test/tests/js1_8_5
   1.525 +	cp -RL $(topsrcdir)/js/src/tests/lib $(PKG_STAGE)/jit-test/tests/lib
   1.526 +
   1.527 +stage-steeplechase: make-stage-dir
   1.528 +	$(NSINSTALL) -D $(PKG_STAGE)/steeplechase/
   1.529 +	cp -RL $(DEPTH)/_tests/steeplechase $(PKG_STAGE)/steeplechase/tests
   1.530 +	cp -RL $(DIST)/xpi-stage/specialpowers $(PKG_STAGE)/steeplechase
   1.531 +	cp -RL $(topsrcdir)/testing/profiles/prefs_general.js $(PKG_STAGE)/steeplechase
   1.532 +
   1.533 +MARIONETTE_DIR=$(PKG_STAGE)/marionette
   1.534 +stage-marionette: make-stage-dir
   1.535 +	$(NSINSTALL) -D $(MARIONETTE_DIR)/tests
   1.536 +	$(NSINSTALL) -D $(MARIONETTE_DIR)/transport
   1.537 +	@(cd $(topsrcdir)/testing/marionette/client && tar --exclude marionette/tests $(TAR_CREATE_FLAGS) - *) | (cd $(MARIONETTE_DIR)/ && tar -xf -)
   1.538 +	@(cd $(topsrcdir)/testing/marionette/transport && tar $(TAR_CREATE_FLAGS) - *) | (cd $(MARIONETTE_DIR)/transport && tar -xf -)
   1.539 +	$(PYTHON) $(topsrcdir)/testing/marionette/client/marionette/tests/print-manifest-dirs.py \
   1.540 +          $(topsrcdir) \
   1.541 +          $(topsrcdir)/testing/marionette/client/marionette/tests/unit-tests.ini \
   1.542 +          | (cd $(topsrcdir) && xargs tar $(TAR_CREATE_FLAGS) -) \
   1.543 +          | (cd $(MARIONETTE_DIR)/tests && tar -xf -)
   1.544 +
   1.545 +stage-mozbase: make-stage-dir
   1.546 +	$(MAKE) -C $(DEPTH)/testing/mozbase stage-package
   1.547 +.PHONY: \
   1.548 +  mochitest \
   1.549 +  mochitest-plain \
   1.550 +  mochitest-chrome \
   1.551 +  mochitest-devtools \
   1.552 +  mochitest-a11y \
   1.553 +  mochitest-ipcplugins \
   1.554 +  reftest \
   1.555 +  crashtest \
   1.556 +  xpcshell-tests \
   1.557 +  jstestbrowser \
   1.558 +  package-tests \
   1.559 +  make-stage-dir \
   1.560 +  stage-b2g \
   1.561 +  stage-config \
   1.562 +  stage-mochitest \
   1.563 +  stage-reftest \
   1.564 +  stage-xpcshell \
   1.565 +  stage-jstests \
   1.566 +  stage-android \
   1.567 +  stage-jetpack \
   1.568 +  stage-mozbase \
   1.569 +  stage-tps \
   1.570 +  stage-modules \
   1.571 +  stage-marionette \
   1.572 +  stage-steeplechase \
   1.573 +  $(NULL)
   1.574 +

mercurial