tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

testsuite-targets.mk (8903B)


      1 # This Source Code Form is subject to the terms of the Mozilla Public
      2 # License, v. 2.0. If a copy of the MPL was not distributed with this
      3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      4 
      5 # include automation-build.mk to get the path to the binary
      6 TARGET_DEPTH = $(DEPTH)
      7 include $(topsrcdir)/build/binary-location.mk
      8 
      9 SYMBOLS_PATH := --symbols-path=$(DIST)/crashreporter-symbols
     10 
     11 ifndef NO_FAIL_ON_TEST_ERRORS
     12 define check_test_error_internal
     13  @errors=`grep 'TEST-UNEXPECTED-' $@.log` ;\
     14  if test "$$errors" ; then \
     15   echo '$@ failed:'; \
     16   echo "$$errors"; \
     17          $(if $(1),echo $(1);) \
     18   exit 1; \
     19  fi
     20 endef
     21 CHECK_TEST_ERROR = $(call check_test_error_internal)
     22 CHECK_TEST_ERROR_RERUN = $(call check_test_error_internal,'To rerun your failures please run "make $@-rerun-failures"')
     23 endif
     24 
     25 # Usage: |make [EXTRA_TEST_ARGS=...] *test|.
     26 RUN_REFTEST = rm -f ./$@.log && $(PYTHON3) _tests/reftest/runreftest.py \
     27  --extra-profile-file=$(DIST)/plugins \
     28  $(SYMBOLS_PATH) $(EXTRA_TEST_ARGS) $(1) | tee ./$@.log
     29 
     30 REMOTE_REFTEST = rm -f ./$@.log && $(PYTHON3) _tests/reftest/remotereftest.py \
     31  --ignore-window-size \
     32  --deviceIP=${TEST_DEVICE} --xre-path=${MOZ_HOST_BIN} \
     33  --httpd-path=_tests/modules --suite reftest \
     34  --extra-profile-file=$(topsrcdir)/mobile/android/fonts \
     35  $(SYMBOLS_PATH) $(EXTRA_TEST_ARGS) $(1) | tee ./$@.log
     36 
     37 ifeq ($(OS_ARCH),WINNT) #{
     38 # GPU-rendered shadow layers are unsupported here
     39 OOP_CONTENT = --setpref=layers.async-pan-zoom.enabled=true --setpref=layers.acceleration.disabled=true
     40 GPU_RENDERING =
     41 else
     42 OOP_CONTENT = --setpref=layers.async-pan-zoom.enabled=true
     43 GPU_RENDERING = --setpref=layers.acceleration.force-enabled=true
     44 endif #}
     45 
     46 reftest: TEST_PATH?=layout/reftests/reftest.list
     47 reftest:
     48 $(call RUN_REFTEST,'$(topsrcdir)/$(TEST_PATH)')
     49 $(CHECK_TEST_ERROR)
     50 
     51 reftest-remote: TEST_PATH?=layout/reftests/reftest.list
     52 reftest-remote:
     53 @if [ '${MOZ_HOST_BIN}' = '' ]; then \
     54        echo 'environment variable MOZ_HOST_BIN must be set to a directory containing host xpcshell'; \
     55    elif [ ! -d ${MOZ_HOST_BIN} ]; then \
     56        echo 'MOZ_HOST_BIN does not specify a directory'; \
     57    elif [ ! -f ${MOZ_HOST_BIN}/xpcshell ]; then \
     58        echo 'xpcshell not found in MOZ_HOST_BIN'; \
     59    else \
     60        ln -s $(abspath $(topsrcdir)) _tests/reftest/tests; \
     61        $(call REMOTE_REFTEST,'tests/$(TEST_PATH)'); \
     62        $(CHECK_TEST_ERROR); \
     63    fi
     64 
     65 crashtest: TEST_PATH?=testing/crashtest/crashtests.list
     66 crashtest:
     67 $(call RUN_REFTEST,'$(topsrcdir)/$(TEST_PATH)')
     68 $(CHECK_TEST_ERROR)
     69 
     70 jstestbrowser: TESTS_PATH?=test-stage/jsreftest/tests/
     71 jstestbrowser:
     72 $(MAKE) -C $(DEPTH)/config
     73 $(MAKE) stage-jstests
     74 $(call RUN_REFTEST,'$(DIST)/$(TESTS_PATH)/jstests.list' --extra-profile-file=$(DIST)/test-stage/jsreftest/tests/user.js)
     75 $(CHECK_TEST_ERROR)
     76 
     77 REMOTE_CPPUNITTESTS = \
     78 $(PYTHON3) -u $(topsrcdir)/testing/remotecppunittests.py \
     79   --xre-path=$(DEPTH)/dist/bin \
     80   --localLib=$(DEPTH)/dist/geckoview \
     81   --deviceIP=${TEST_DEVICE} \
     82   $(TEST_PATH) $(EXTRA_TEST_ARGS)
     83 
     84 # Usage: |make [TEST_PATH=...] [EXTRA_TEST_ARGS=...] cppunittests-remote|.
     85 cppunittests-remote:
     86 $(call REMOTE_CPPUNITTESTS);
     87 
     88 # Package up the tests and test harnesses
     89 include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
     90 
     91 PKG_STAGE = $(DIST)/test-stage
     92 
     93 stage-all: \
     94  stage-config \
     95  stage-mach \
     96  stage-extensions \
     97  stage-mochitest \
     98  stage-jstests \
     99  test-packages-manifest \
    100  $(NULL)
    101 
    102 ifdef COMPILE_ENVIRONMENT
    103 stage-all: stage-cppunittests
    104 endif
    105 
    106 TEST_PKGS_TARZST := \
    107  common \
    108  condprof \
    109  cppunittest \
    110  mochitest \
    111  reftest \
    112  talos \
    113  raptor \
    114  awsy \
    115  xpcshell \
    116  web-platform \
    117  updater-dep \
    118  jsreftest \
    119  jittest \
    120  perftests \
    121  fuzztest \
    122  trainhop \
    123  $(NULL)
    124 
    125 ifdef LINK_GTEST_DURING_COMPILE
    126 stage-all: stage-gtest
    127 TEST_PKGS_TARZST += gtest
    128 endif
    129 
    130 PKG_ARG = --$(1) '$(PKG_BASENAME).$(1).tests.$(2)'
    131 
    132 test-packages-manifest:
    133 @rm -f $(MOZ_TEST_PACKAGES_FILE)
    134 $(NSINSTALL) -D $(dir $(MOZ_TEST_PACKAGES_FILE))
    135 $(PYTHON3) $(topsrcdir)/build/gen_test_packages_manifest.py \
    136      --jsshell $(JSSHELL_NAME) \
    137      --dest-file '$(MOZ_TEST_PACKAGES_FILE)' \
    138      $(call PKG_ARG,common,zip) \
    139      $(foreach pkg,$(TEST_PKGS_TARZST),$(call PKG_ARG,$(pkg),tar.zst))
    140 
    141 ifdef UPLOAD_PATH
    142 test_archive_dir = $(UPLOAD_PATH)
    143 else
    144 test_archive_dir = $(DIST)/$(PKG_PATH)
    145 endif
    146 
    147 package-tests-prepare-dest:
    148 $(NSINSTALL) -D $(test_archive_dir)
    149 
    150 download-wpt-manifest:
    151 $(call py_action,download_wpt_manifest)
    152 
    153 define package_archive
    154 package-tests-$(1): stage-all package-tests-prepare-dest
    155 $$(call py_action,test_archive, \
    156 	$(1) \
    157 	'$$(abspath $$(test_archive_dir))/$$(PKG_BASENAME).$(1).tests.$(2)')
    158 package-tests: package-tests-$(1)
    159 endef
    160 
    161 $(foreach name,$(TEST_PKGS_TARZST),$(eval $(call package_archive,$(name),tar.zst)))
    162 
    163 ifeq ($(MOZ_BUILD_APP),mobile/android)
    164 stage-all: stage-android
    165 endif
    166 
    167 # Prepare _tests before any of the other staging/packaging steps.
    168 # make-stage-dir is a prerequisite to all the stage-* targets in testsuite-targets.mk.
    169 make-stage-dir: install-test-files
    170 rm -rf $(PKG_STAGE)
    171 $(NSINSTALL) -D $(PKG_STAGE)
    172 $(NSINSTALL) -D $(PKG_STAGE)/bin
    173 $(NSINSTALL) -D $(PKG_STAGE)/bin/components
    174 $(NSINSTALL) -D $(PKG_STAGE)/certs
    175 $(NSINSTALL) -D $(PKG_STAGE)/config
    176 $(NSINSTALL) -D $(PKG_STAGE)/modules
    177 $(NSINSTALL) -D $(PKG_STAGE)/tools/mach
    178 
    179 stage-config: make-stage-dir
    180 $(NSINSTALL) -D $(PKG_STAGE)/config
    181 @(cd $(topsrcdir)/testing/config && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/config && tar -xf -)
    182 
    183 stage-mach: make-stage-dir
    184 @(cd $(topsrcdir)/python/mach && tar $(TAR_CREATE_FLAGS) - *) | (cd $(PKG_STAGE)/tools/mach && tar -xf -)
    185 cp $(topsrcdir)/testing/tools/mach_test_package_initialize.py $(PKG_STAGE)/tools/mach_initialize.py
    186 cp $(topsrcdir)/mach $(PKG_STAGE)
    187 
    188 stage-mochitest: make-stage-dir ;
    189 
    190 stage-jstests: make-stage-dir
    191 $(MAKE) -C $(DEPTH)/js/src/tests stage-package
    192 
    193 ifdef OBJCOPY
    194 ifneq ($(OBJCOPY), :) # see build/autoconf/toolchain.m4:102 for why this is necessary
    195 ifdef PKG_STRIP
    196 STRIP_COMPILED_TESTS := 1
    197 endif
    198 endif
    199 endif
    200 
    201 stage-gtest: make-stage-dir
    202 $(NSINSTALL) -D $(PKG_STAGE)/gtest/gtest_bin/gtest
    203 ifdef STRIP_COMPILED_TESTS
    204 # The libxul file basename will vary per platform. Fortunately
    205 # dependentlibs.list always lists the library name as its final line, so we
    206 # can get the value from there.
    207 LIBXUL_BASE=`tail -1 $(DIST)/bin/dependentlibs.list` && \
    208        $(OBJCOPY) $(or $(STRIP_FLAGS),--strip-unneeded) \
    209        $(DIST)/bin/gtest/$$LIBXUL_BASE $(PKG_STAGE)/gtest/gtest_bin/gtest/$$LIBXUL_BASE
    210 else
    211 cp -RL $(DIST)/bin/gtest $(PKG_STAGE)/gtest/gtest_bin
    212 endif
    213 cp -RL $(DIST)/bin/gtest/*buildid.* $(PKG_STAGE)/gtest/gtest_bin/gtest
    214 cp -RL $(DEPTH)/_tests/gtest $(PKG_STAGE)
    215 cp $(topsrcdir)/testing/gtest/gtest_filter_sets.py $(PKG_STAGE)/gtest
    216 cp $(topsrcdir)/testing/gtest/gtest_filter_sets.yml $(PKG_STAGE)/gtest
    217 cp $(topsrcdir)/testing/gtest/rungtests.py $(PKG_STAGE)/gtest
    218 cp $(topsrcdir)/testing/gtest/remotegtests.py $(PKG_STAGE)/gtest
    219 cp $(topsrcdir)/testing/gtest/mach_test_package_commands.py $(PKG_STAGE)/gtest
    220 cp $(DIST)/bin/dependentlibs.list.gtest $(PKG_STAGE)/gtest
    221 cp $(DEPTH)/mozinfo.json $(PKG_STAGE)/gtest
    222 
    223 stage-android: make-stage-dir
    224 $(NSINSTALL) $(topsrcdir)/mobile/android/fonts $(DEPTH)/_tests/reftest
    225 $(NSINSTALL) $(topsrcdir)/mobile/android/fonts $(DEPTH)/_tests/testing/mochitest
    226 
    227 ifdef MOZ_COPY_PDBS
    228 CPP_UNIT_TEST_BINS=$(filter-out $(wildcard $(DIST)/cppunittests/*.pdb), $(wildcard $(DIST)/cppunittests/*))
    229 else
    230 CPP_UNIT_TEST_BINS=$(wildcard $(DIST)/cppunittests/*)
    231 endif
    232 
    233 stage-cppunittests: make-stage-dir
    234 $(NSINSTALL) -D $(PKG_STAGE)/cppunittest
    235 ifdef STRIP_COMPILED_TESTS
    236 $(foreach bin,$(CPP_UNIT_TEST_BINS),$(OBJCOPY) $(or $(STRIP_FLAGS),--strip-unneeded) $(bin) $(bin:$(DIST)/cppunittests/%=$(PKG_STAGE)/cppunittest/%);)
    237 else
    238 cp -RL $(CPP_UNIT_TEST_BINS) $(PKG_STAGE)/cppunittest
    239 endif
    240 ifdef MOZ_COPY_PDBS
    241 cp -RL $(addsuffix .pdb,$(basename $(CPP_UNIT_TEST_BINS))) $(PKG_STAGE)/cppunittest
    242 endif
    243 ifdef STRIP_COMPILED_TESTS
    244 $(OBJCOPY) $(or $(STRIP_FLAGS),--strip-unneeded) $(DIST)/bin/jsapi-tests$(BIN_SUFFIX) $(PKG_STAGE)/cppunittest/jsapi-tests$(BIN_SUFFIX)
    245 else
    246 cp -RL $(DIST)/bin/jsapi-tests$(BIN_SUFFIX) $(PKG_STAGE)/cppunittest
    247 endif
    248 ifdef MOZ_COPY_PDBS
    249 cp -RL $(DIST)/bin/jsapi-tests.pdb $(PKG_STAGE)/cppunittest
    250 endif
    251 
    252 TEST_EXTENSIONS := \
    253    specialpowers@mozilla.org.xpi \
    254 $(NULL)
    255 
    256 stage-extensions: make-stage-dir
    257 $(NSINSTALL) -D $(PKG_STAGE)/extensions/
    258 @$(foreach ext,$(TEST_EXTENSIONS), cp -RL $(DIST)/xpi-stage/$(ext) $(PKG_STAGE)/extensions;)
    259 
    260 
    261 .PHONY: \
    262  reftest \
    263  crashtest \
    264  xpcshell-tests \
    265  jstestbrowser \
    266  package-tests \
    267  download-wpt-manifest \
    268  package-tests-prepare-dest \
    269  package-tests-common \
    270  make-stage-dir \
    271  stage-all \
    272  stage-config \
    273  stage-mochitest \
    274  stage-jstests \
    275  stage-android \
    276  test-packages-manifest \
    277  check \
    278  $(NULL)