diff options
author | Julius Werner <jwerner@chromium.org> | 2020-05-04 17:44:04 -0700 |
---|---|---|
committer | Julius Werner <jwerner@chromium.org> | 2020-05-19 03:21:44 +0000 |
commit | 21744811bb7638830a7ca495694d295acbadc150 (patch) | |
tree | a867e9b86d35c942a4154ca185a3c8c72aa2536c | |
parent | ed03371e76239dae16b6397efef4814f8c30451e (diff) |
tests: Add <tests/test.h> wrapper header and fix --gc-sections
<cmocka.h> requires a few standard headers to be explicitly included
before itself or it will throw compilation errors. Having to always
include these headers in the right order in every test is cumbersome.
Instead, this patch encapsulates the problem in a new <tests/test.h>
header that all tests should include (instead of <cmocka.h> directly).
Also fix --gc-sections in the test framework which needs to be passed
for linking, not for compiling.
Signed-off-by: Julius Werner <jwerner@chromium.org>
Change-Id: I4284d74c8673708e21a5266eb42f7b9ae19a1b12
Reviewed-on: https://review.coreboot.org/c/coreboot/+/41045
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Jan Dabros
Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org>
-rw-r--r-- | tests/Makefile.inc | 13 | ||||
-rw-r--r-- | tests/device/i2c-test.c | 8 | ||||
-rw-r--r-- | tests/include/tests/test.h | 18 | ||||
-rw-r--r-- | tests/lib/string-test.c | 6 |
4 files changed, 28 insertions, 17 deletions
diff --git a/tests/Makefile.inc b/tests/Makefile.inc index debb2f9868..9ee27cd831 100644 --- a/tests/Makefile.inc +++ b/tests/Makefile.inc @@ -1,5 +1,6 @@ # SPDX-License-Identifier: GPL-2.0-only +testsrc = $(top)/tests testobj = $(obj)/tests TEST_DEFAULT_CONFIG = $(top)/configs/config.emulation_qemu_x86_i440fx @@ -10,12 +11,12 @@ TEST_KCONFIG_DEPENDENCIES := $(testobj)/auto.conf.cmd TEST_KCONFIG_SPLITCONFIG := $(testobj)/config TEST_KCONFIG_TRISTATE := $(testobj)/tristate.conf -TEST_CFLAGS = -include$(src)/include/kconfig.h \ - -include$(src)/commonlib/bsd/include/commonlib/bsd/compiler.h \ - -include $(src)/include/rules.h \ +TEST_CFLAGS = -include $(src)/include/kconfig.h \ + -include $(src)/commonlib/bsd/include/commonlib/bsd/compiler.h \ + -include $(src)/include/rules.h # Include generic test mock headers, before original ones -TEST_CFLAGS += -Itests/include/mocks +TEST_CFLAGS += -I$(testsrc)/include/mocks -I$(testsrc)/include TEST_CFLAGS += -I$(src)/include -I$(src)/commonlib/include \ -I$(src)/commonlib/bsd/include -I$(src)/arch/x86/include \ @@ -24,10 +25,10 @@ TEST_CFLAGS += -I$(src)/include -I$(src)/commonlib/include \ TEST_CFLAGS += -I$(dir $(TEST_KCONFIG_AUTOHEADER)) TEST_CFLAGS += -std=gnu11 -Os -ffunction-sections -fdata-sections \ - -Wl,--gc-sections -fno-builtin + -fno-builtin # Link against Cmocka -TEST_LDFLAGS = -lcmocka +TEST_LDFLAGS = -lcmocka -Wl,--gc-sections # Extra attributes for unit tests, declared per test attributes:= srcs cflags mocks stage diff --git a/tests/device/i2c-test.c b/tests/device/i2c-test.c index 9303456261..acf7b0741d 100644 --- a/tests/device/i2c-test.c +++ b/tests/device/i2c-test.c @@ -1,12 +1,8 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -#include <stdarg.h> -#include <stddef.h> -#include <setjmp.h> -#include <limits.h> -#include <cmocka.h> - #include <device/i2c_simple.h> +#include <limits.h> +#include <tests/test.h> /* Simulate two i2c devices, both on bus 0, each with three uint8_t regs implemented. */ diff --git a/tests/include/tests/test.h b/tests/include/tests/test.h new file mode 100644 index 0000000000..b4e0dd2b5e --- /dev/null +++ b/tests/include/tests/test.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* This file is part of the coreboot project. */ + +#ifndef _TESTS_TEST_H +#define _TESTS_TEST_H + +/* + * Standard test header that should be included in all tests. For now it just encapsulates the + * include dependencies for Cmocka. Test-specific APIs that are so generic we would want them + * available everywhere could also be added here. + */ + +#include <stdarg.h> +#include <stddef.h> +#include <setjmp.h> +#include <cmocka.h> + +#endif /* _TESTS_TEST_H */ diff --git a/tests/lib/string-test.c b/tests/lib/string-test.c index 513b395283..08f4177ef6 100644 --- a/tests/lib/string-test.c +++ b/tests/lib/string-test.c @@ -1,11 +1,7 @@ /* SPDX-License-Identifier: GPL-2.0-only */ -#include <stdarg.h> -#include <stddef.h> -#include <setjmp.h> -#include <cmocka.h> - #include <string.h> +#include <tests/test.h> /* * Important note: In every particular test, don't use any string-related |