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>
This commit is contained in:
parent
ed03371e76
commit
21744811bb
|
@ -1,5 +1,6 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-only
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
|
|
||||||
|
testsrc = $(top)/tests
|
||||||
testobj = $(obj)/tests
|
testobj = $(obj)/tests
|
||||||
|
|
||||||
TEST_DEFAULT_CONFIG = $(top)/configs/config.emulation_qemu_x86_i440fx
|
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_SPLITCONFIG := $(testobj)/config
|
||||||
TEST_KCONFIG_TRISTATE := $(testobj)/tristate.conf
|
TEST_KCONFIG_TRISTATE := $(testobj)/tristate.conf
|
||||||
|
|
||||||
TEST_CFLAGS = -include$(src)/include/kconfig.h \
|
TEST_CFLAGS = -include $(src)/include/kconfig.h \
|
||||||
-include$(src)/commonlib/bsd/include/commonlib/bsd/compiler.h \
|
-include $(src)/commonlib/bsd/include/commonlib/bsd/compiler.h \
|
||||||
-include $(src)/include/rules.h \
|
-include $(src)/include/rules.h
|
||||||
|
|
||||||
# Include generic test mock headers, before original ones
|
# 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 \
|
TEST_CFLAGS += -I$(src)/include -I$(src)/commonlib/include \
|
||||||
-I$(src)/commonlib/bsd/include -I$(src)/arch/x86/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 += -I$(dir $(TEST_KCONFIG_AUTOHEADER))
|
||||||
|
|
||||||
TEST_CFLAGS += -std=gnu11 -Os -ffunction-sections -fdata-sections \
|
TEST_CFLAGS += -std=gnu11 -Os -ffunction-sections -fdata-sections \
|
||||||
-Wl,--gc-sections -fno-builtin
|
-fno-builtin
|
||||||
|
|
||||||
# Link against Cmocka
|
# Link against Cmocka
|
||||||
TEST_LDFLAGS = -lcmocka
|
TEST_LDFLAGS = -lcmocka -Wl,--gc-sections
|
||||||
|
|
||||||
# Extra attributes for unit tests, declared per test
|
# Extra attributes for unit tests, declared per test
|
||||||
attributes:= srcs cflags mocks stage
|
attributes:= srcs cflags mocks stage
|
||||||
|
|
|
@ -1,12 +1,8 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
/* 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 <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
|
/* Simulate two i2c devices, both on bus 0, each with three uint8_t regs
|
||||||
implemented. */
|
implemented. */
|
||||||
|
|
|
@ -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 */
|
|
@ -1,11 +1,7 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||||
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <setjmp.h>
|
|
||||||
#include <cmocka.h>
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <tests/test.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Important note: In every particular test, don't use any string-related
|
* Important note: In every particular test, don't use any string-related
|
||||||
|
|
Loading…
Reference in New Issue