summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/init_shutdown.c6
-rw-r--r--tests/meson.build1
-rw-r--r--tests/tests.c11
3 files changed, 17 insertions, 1 deletions
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 <stdio.h>
+#include <string.h>
#include <stdint.h>
/* 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;