From 46f2d4e488db66b37e892b8fa621eeed0fe2f284 Mon Sep 17 00:00:00 2001 From: Edward O'Callaghan Date: Wed, 20 May 2020 20:10:20 +1000 Subject: tests/: Add CMocka unit-test infrastructure This adds the CMocka unit-testing infrastructure into the meson build system which we will latter follow up with unit-tests for flashrom's core logic. BUG=b:157280555 BRANCH=none TEST=builds Change-Id: I66665f56627b3d99049176bfbebbd771b080370a Signed-off-by: Edward O'Callaghan Reviewed-on: https://review.coreboot.org/c/flashrom/+/41622 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer --- tests/include/test.h | 18 ++++++++++++++++++ tests/meson.build | 28 ++++++++++++++++++++++++++++ tests/tests.c | 25 +++++++++++++++++++++++++ tests/tests.h | 4 ++++ 4 files changed, 75 insertions(+) create mode 100644 tests/include/test.h create mode 100644 tests/meson.build create mode 100644 tests/tests.c create mode 100644 tests/tests.h (limited to 'tests') diff --git a/tests/include/test.h b/tests/include/test.h new file mode 100644 index 00000000..b4e0dd2b --- /dev/null +++ b/tests/include/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 +#include +#include +#include + +#endif /* _TESTS_TEST_H */ diff --git a/tests/meson.build b/tests/meson.build new file mode 100644 index 00000000..0c21cb9c --- /dev/null +++ b/tests/meson.build @@ -0,0 +1,28 @@ +root_includes = include_directories('../subprojects') + +srcs = [ + 'tests.c', +] + +mocks = [ + '-Wl,--wrap=physunmap', + '-Wl,--wrap=physmap', + '-Wl,--gc-sections', +] + +flashrom_tests = executable('flashrom_unit_tests', + srcs, + include_directories : root_includes, + c_args : [ + cargs, + '-ffunction-sections', + '-fdata-sections', + # '-DSTANDALONE', + '-DCONFIG_DEFAULT_PROGRAMMER=PROGRAMMER_DUMMY', + '-DCONFIG_DEFAULT_PROGRAMMER_ARGS=""', + ], + export_dynamic : true, + link_args : mocks, + dependencies : [cmocka_dep, flashrom_test_dep], +) +test('cmocka test flashrom', flashrom_tests) diff --git a/tests/tests.c b/tests/tests.c new file mode 100644 index 00000000..32353fa6 --- /dev/null +++ b/tests/tests.c @@ -0,0 +1,25 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* This file is part of the coreboot project. */ + +#include +#include "tests.h" + +#include + +/* redefinitions/wrapping */ +void __wrap_physunmap(void *virt_addr, size_t len) +{ + fprintf(stderr, "%s\n", __func__); +} +void *__wrap_physmap(const char *descr, uintptr_t phys_addr, size_t len) +{ + fprintf(stderr, "%s\n", __func__); + return NULL; +} + +int main(void) +{ + int ret = 0; + + return ret; +} diff --git a/tests/tests.h b/tests/tests.h new file mode 100644 index 00000000..b088e24e --- /dev/null +++ b/tests/tests.h @@ -0,0 +1,4 @@ +#ifndef TESTS_H +#define TESTS_H + +#endif /* TESTS_H */ -- cgit v1.2.3