106 lines
3.3 KiB
Makefile
106 lines
3.3 KiB
Makefile
# Copyright (C) 2012 The Android Open Source Project
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
# Definitions for the Android NDK build system's internal unit tests.
|
|
#
|
|
|
|
#
|
|
# A function which names begin with -test- (e.g. -test-foo) is assumed
|
|
# to be an internal unit test. It will be run automatically by ndk-build
|
|
# if NDK_UNIT_TESTS is defined in your environment.
|
|
#
|
|
# Each test should call one of the following functions that will
|
|
# register a failure:
|
|
#
|
|
# $(call test-expect,<expected-value>,<actual-value>)
|
|
#
|
|
# This will check that <actual-value> is equal to <expected-value>.
|
|
# If not, this will print an error message and increment the failure
|
|
# counter.
|
|
#
|
|
# $(call test-assert,<expected-value>,<actual-value>)
|
|
#
|
|
# This is similar to test-expect, though it will abort the program
|
|
# immediately after displaying an error message.
|
|
#
|
|
# Here's an example that checks that the 'filter' function works correctly:
|
|
#
|
|
# -test-filter = \
|
|
# $(call test-expect,foo,$(filter bar,foo bar))
|
|
#
|
|
#
|
|
|
|
-ndk-test-start = \
|
|
$(eval _test_name := $1)\
|
|
$(eval _test_list += $1)\
|
|
$(eval _test_failed :=)\
|
|
$(info [$1 RUN])
|
|
|
|
# End current unit test.
|
|
#
|
|
-ndk-test-end = \
|
|
$(if $(_test_failed),\
|
|
$(info [$(_test_name) FAIL])$(error Aborting)\
|
|
$(eval _test_failures += $$(_test_name))\
|
|
,\
|
|
$(info [$(_test_name) OK])\
|
|
)
|
|
|
|
# Define NDK_UNIT_TESTS to 2 to dump each test-expect/assert check.
|
|
#
|
|
ifeq (2,$(NDK_UNIT_TESTS))
|
|
-ndk-test-log = $(info . $(_test_name): $1)
|
|
else
|
|
-ndk-test-log = $(empty)
|
|
endif
|
|
|
|
test-expect = \
|
|
$(call -ndk-test-log,expect '$2' == '$1')\
|
|
$(if $(call sne,$1,$2),\
|
|
$(info ERROR <$(_test_name)>:$3)\
|
|
$(info . expected value:'$1')\
|
|
$(info . actual value: '$2')\
|
|
$(eval _test_failed := true)\
|
|
)
|
|
|
|
test-assert = \
|
|
$(call -ndk-test-log,assert '$2' == '$1')\
|
|
$(if $(call sne,$1,$2),\
|
|
$(info ASSERT <$(_test_name)>:$3)\
|
|
$(info . expected value:'$1')\
|
|
$(info . actual value: '$2')\
|
|
$(eval _test_failed := true)\
|
|
$(error Aborting.)\
|
|
)
|
|
|
|
# Run all the tests, i.e. all functions that are defined with a -test-
|
|
# prefix will be called now in succession.
|
|
ndk-run-all-tests = \
|
|
$(info ================= STARTING NDK-BUILD UNIT TESTS =================)\
|
|
$(eval _test_list :=)\
|
|
$(eval _test_failures :=)\
|
|
$(foreach _test,$(filter -test-%,$(.VARIABLES)),\
|
|
$(call -ndk-test-start,$(_test))\
|
|
$(call $(_test))\
|
|
$(call -ndk-test-end)\
|
|
)\
|
|
$(eval _test_count := $$(words $$(_test_list)))\
|
|
$(eval _test_fail_count := $$(words $$(_test_failures)))\
|
|
$(if $(_test_failures),\
|
|
$(info @@@@@@@@@@@ FAILED $(_test_fail_count) of $(_test_count) NDK-BUILD UNIT TESTS @@@@@@@)\
|
|
$(foreach _test_name,$(_test_failures),\
|
|
$(info . $(_test_name)))\
|
|
,\
|
|
$(info =================== PASSED $(_test_count) NDK-BUILD UNIT TESTS =================)\
|
|
)
|