gecko/testing/mochitest/Makefile.in
Gregory Szorc e08d71c0b8 Bug 1208320 - Produce mochitest test archive without staging test files; r=glandium
This is very similar to what we did for xpcshell. Like xpcshell, there
are still some staged files. However, about 73MB of copies are
eliminated with this change. On my machine, overall execution time of
test packaging appears to decrease, although CPU usage is up slightly.
2015-09-30 09:46:35 -07:00

121 lines
3.5 KiB
Makefile

#
# 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/.
_DEST_DIR = $(DEPTH)/_tests/$(relativesrcdir)
include $(topsrcdir)/config/rules.mk
# We're installing to _tests/testing/mochitest, so this is the depth
# necessary for relative objdir paths.
TARGET_DEPTH = ../../..
include $(topsrcdir)/build/automation-build.mk
libs::
(cd $(DIST)/xpi-stage && tar $(TAR_CREATE_FLAGS) - mochijar) | (cd $(_DEST_DIR) && tar -xf -)
# Binaries and scripts that don't get packaged with the build,
# but that we need for the test harness
TEST_HARNESS_BINS := \
xpcshell$(BIN_SUFFIX) \
ssltunnel$(BIN_SUFFIX) \
certutil$(BIN_SUFFIX) \
pk12util$(BIN_SUFFIX) \
BadCertServer$(BIN_SUFFIX) \
OCSPStaplingServer$(BIN_SUFFIX) \
GenerateOCSPResponse$(BIN_SUFFIX) \
fix_stack_using_bpsyms.py \
$(NULL)
ifeq ($(OS_ARCH),WINNT)
TEST_HARNESS_BINS += \
crashinject$(BIN_SUFFIX) \
crashinjectdll$(DLL_SUFFIX) \
$(NULL)
endif
ifeq ($(OS_ARCH),Darwin)
TEST_HARNESS_BINS += fix_macosx_stack.py
endif
ifeq ($(OS_ARCH),Linux)
TEST_HARNESS_BINS += fix_linux_stack.py
endif
ifdef MOZ_X11
ifneq (,$(filter gtk%,$(MOZ_WIDGET_TOOLKIT)))
TEST_HARNESS_BINS += screentopng
endif
endif
ifeq (windows,$(MOZ_WIDGET_TOOLKIT))
TEST_HARNESS_BINS += screenshot$(BIN_SUFFIX)
endif
ifdef MOZ_DMD
TEST_HARNESS_BINS += \
dmd.py \
SmokeDMD$(BIN_SUFFIX) \
$(NULL)
endif
# Components / typelibs that don't get packaged with
# the build, but that we need for the test harness.
TEST_HARNESS_COMPONENTS := \
test_necko.xpt \
$(NULL)
# We need the test plugin as some tests rely on it
ifeq (Darwin,$(OS_TARGET))
TEST_HARNESS_PLUGINS := \
Test.plugin/ \
SecondTest.plugin/ \
ThirdTest.plugin/ \
npswftest.plugin/ \
JavaTest.plugin/
else
TEST_HARNESS_PLUGINS := \
$(DLL_PREFIX)nptest$(DLL_SUFFIX) \
$(DLL_PREFIX)npsecondtest$(DLL_SUFFIX) \
$(DLL_PREFIX)npthirdtest$(DLL_SUFFIX) \
$(DLL_PREFIX)nptestjava$(DLL_SUFFIX) \
$(DLL_PREFIX)npswftest$(DLL_SUFFIX)
endif
# Rules for staging the necessary harness bits for a test package
PKG_STAGE = $(DIST)/test-stage
DIST_BIN = $(DIST)/bin
GMP_TEST_PLUGIN_DIRS := \
$(DIST_BIN)/gmp-fake \
$(DIST_BIN)/gmp-fakeopenh264 \
$(DIST_BIN)/gmp-clearkey \
$(NULL)
$(_DEST_DIR):
$(NSINSTALL) -D $@
# On Android only, include a release signed Robocop APK in the test package.
ifeq ($(MOZ_BUILD_APP),mobile/android)
include $(topsrcdir)/config/android-common.mk
stage-package-android:
$(NSINSTALL) -D $(_DEST_DIR)
$(call RELEASE_SIGN_ANDROID_APK,\
$(DEPTH)/build/mobile/robocop/robocop-debug-unsigned-unaligned.apk,\
$(_DEST_DIR)/robocop.apk)
stage-package: stage-package-android
endif
stage-package:
$(NSINSTALL) -D $(PKG_STAGE)/mochitest && $(NSINSTALL) -D $(PKG_STAGE)/bin/plugins && $(NSINSTALL) -D $(DIST)/plugins
cp $(DEPTH)/mozinfo.json $(PKG_STAGE)/mochitest
@cp $(DEPTH)/mozinfo.json $(PKG_STAGE)/mochitest
@(cd $(DIST_BIN) && tar $(TAR_CREATE_FLAGS) - $(TEST_HARNESS_BINS)) | (cd $(PKG_STAGE)/bin && tar -xf -)
@(cd $(DIST_BIN)/components && tar $(TAR_CREATE_FLAGS) - $(TEST_HARNESS_COMPONENTS)) | (cd $(PKG_STAGE)/bin/components && tar -xf -)
(cd $(topsrcdir)/build/pgo && tar $(TAR_CREATE_FLAGS) - certs) | (cd $(PKG_STAGE) && tar -xf -)
@(cd $(DIST)/plugins && tar $(TAR_CREATE_FLAGS) - $(TEST_HARNESS_PLUGINS)) | (cd $(PKG_STAGE)/bin/plugins && tar -xf -)
$(foreach x,$(GMP_TEST_PLUGIN_DIRS),cp -RL $(x) $(PKG_STAGE)/bin/plugins;)