MR !10753 breaks macOS build for plugin unit test as its linker doesn't
supports `--wrap` option, which is used in in order to mock the function
`isc_file_exits()`.
To work around the problem, a mocked `isc_file_exits()` is implemented
inside the plugin test as a static function before inlining the file
using it, which effectively links to this version rather than the isclib
one.
'plugin',
'query',
]
- linkargs = ''
- if unit == 'plugin'
- linkargs = [
- '-Wl,--wrap=isc_file_exists',
- ]
- endif
test_bin = executable(
unit,
files(f'@unit@_test.c', 'netmgr_wrap.c'),
cmocka_dep,
nghttp2_dep,
],
- link_args: linkargs,
)
test(
#include <dns/lib.h>
-#include "../ns/hooks.c"
-
-bool
-__wrap_isc_file_exists(const char *pathname);
-
-bool
-__wrap_isc_file_exists(const char *pathname) {
+/*
+ * Mocking isc_file_exists() as it's used inside the tested
+ * ns_plugin_expandpath() function defined in lib/ns/hooks.c
+ */
+static bool
+isc_file_exists(const char *pathname) {
UNUSED(pathname);
return mock();
}
+#include "../ns/hooks.c"
+
#include <tests/ns.h>
/*%
REQUIRE(test->result != ISC_R_SUCCESS || test->output != NULL);
if (test->result == ISC_R_SUCCESS) {
- will_return(__wrap_isc_file_exists, test->exists);
+ will_return(isc_file_exists, test->exists);
}
/*