diff --git a/tests/init_shutdown.c b/tests/init_shutdown.c index 84699025b..79918e65a 100644 --- a/tests/init_shutdown.c +++ b/tests/init_shutdown.c @@ -23,13 +23,17 @@ static void run_lifecycle(void **state, const struct programmer_entry *prog, con { (void) state; /* unused */ + char *param_dup = strdup(param); + printf("Testing programmer_init for programmer=%s ...\n", prog->name); - assert_int_equal(0, programmer_init(prog, strdup(param))); + assert_int_equal(0, programmer_init(prog, param_dup)); printf("... programmer_init for programmer=%s successful\n", prog->name); printf("Testing programmer_shutdown for programmer=%s ...\n", prog->name); assert_int_equal(0, programmer_shutdown()); printf("... programmer_shutdown for programmer=%s successful\n", prog->name); + + free(param_dup); } void dummy_init_and_shutdown_test_success(void **state) diff --git a/tests/meson.build b/tests/meson.build index a18bc4556..0bc05607c 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -22,6 +22,7 @@ srcs = [ ] mocks = [ + '-Wl,--wrap=strdup', '-Wl,--wrap=physunmap', '-Wl,--wrap=physmap', '-Wl,--wrap=spi_send_command', diff --git a/tests/tests.c b/tests/tests.c index cde696f4d..592d896c0 100644 --- a/tests/tests.c +++ b/tests/tests.c @@ -18,6 +18,7 @@ #include "tests.h" #include +#include #include /* redefinitions/wrapping */ @@ -31,6 +32,16 @@ void io_mock_register(const struct io_mock *io) current_io = io; } +/* Workaround for https://github.com/clibs/cmocka/issues/17 */ +char *__wrap_strdup(const char *s) +{ + size_t len = strlen(s) + 1; + void *new = malloc(len); + if (new == NULL) + return NULL; + return (char *)memcpy(new, s, len); +} + void __wrap_physunmap(void *virt_addr, size_t len) { LOG_ME;