gecko/config/makefiles/mochitest.mk
2013-03-19 15:34:59 -04:00

72 lines
2.3 KiB
Makefile

# -*- makefile -*-
# vim:set ts=8 sw=8 sts=8 noet:
#
# 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/.
ifndef INCLUDED_TESTS_MOCHITEST_MK #{
# $1- test directory name
# $2- optional: if passed dot used to flatten directory hierarchy copy
# else- relativesrcdir
# else- determine relative path
mochitestdir = \
$(strip \
$(if $(2),$(DEPTH)/_tests/testing/mochitest/$1/. \
,$(if $(value relativesrcdir) \
,$(DEPTH)/_tests/testing/mochitest/$1/$(relativesrcdir) \
,$(DEPTH)/_tests/testing/mochitest/$1/$(subst $(topsrcdir),,$(srcdir)) \
)))
define mochitest-libs-rule-template
libs:: $$($(1))
$$(call install_cmd,$$(foreach f,$$^,"$$(f)") $$(call mochitestdir,$(2),$(3)))
endef
# Provide support for modules with such a large number of tests that
# installing them with a single $(INSTALL) invocation would overflow
# command-line length limits on some operating systems.
ifdef MOCHITEST_FILES_PARTS
ifdef MOCHITEST_FILES
$(error You must define only one of MOCHITEST_FILES_PARTS or MOCHITEST_FILES)
endif
$(foreach part,$(MOCHITEST_FILES_PARTS),$(eval $(call mochitest-libs-rule-template,$(part),tests)))
endif
ifdef MOCHITEST_FILES
$(eval $(call mochitest-libs-rule-template,MOCHITEST_FILES,tests))
endif
ifdef MOCHITEST_CHROME_FILES
$(eval $(call mochitest-libs-rule-template,MOCHITEST_CHROME_FILES,chrome))
endif
ifdef MOCHITEST_BROWSER_FILES_PARTS
ifdef MOCHITEST_BROWSER_FILES
$(error You must define only one of MOCHITEST_BROWSER_FILES_PARTS or MOCHITEST_BROWSER_FILES)
endif
$(foreach part,$(MOCHITEST_BROWSER_FILES_PARTS),$(eval $(call mochitest-libs-rule-template,$(part),browser)))
endif
ifdef MOCHITEST_BROWSER_FILES
$(eval $(call mochitest-libs-rule-template,MOCHITEST_BROWSER_FILES,browser))
endif
ifdef MOCHITEST_A11Y_FILES
$(eval $(call mochitest-libs-rule-template,MOCHITEST_A11Y_FILES,a11y))
endif
ifdef MOCHITEST_ROBOCOP_FILES
$(eval $(call mochitest-libs-rule-template,MOCHITEST_ROBOCOP_FILES,tests/robocop,flat_hierarchy))
endif
ifdef MOCHITEST_WEBAPPRT_CHROME_FILES
$(eval $(call mochitest-libs-rule-template,MOCHITEST_WEBAPPRT_CHROME_FILES,webapprtChrome))
endif
INCLUDED_TESTS_MOCHITEST_MK := 1
endif #} INCLUDED_TESTS_MOCHITEST_MK