From: Lennart Poettering Date: Mon, 3 Dec 2018 12:37:18 +0000 (+0100) Subject: test: add test for static destructor X-Git-Tag: v240~148^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f36c39aae548a9189e5acbfdc010e4e347b5de84;p=thirdparty%2Fsystemd.git test: add test for static destructor --- diff --git a/src/test/meson.build b/src/test/meson.build index f1115d7b641..9863ecc8f03 100644 --- a/src/test/meson.build +++ b/src/test/meson.build @@ -177,6 +177,10 @@ tests += [ [], []], + [['src/test/test-static-destruct.c'], + [], + []], + [['src/test/test-sigbus.c'], [], []], diff --git a/src/test/test-static-destruct.c b/src/test/test-static-destruct.c new file mode 100644 index 00000000000..eb0523d87ae --- /dev/null +++ b/src/test/test-static-destruct.c @@ -0,0 +1,34 @@ +/* SPDX-License-Identifier: LGPL-2.1+ */ + +#include "alloc-util.h" +#include "static-destruct.h" +#include "tests.h" + +static int foo = 0; +static int bar = 0; +static int baz = 0; +static char* memory = NULL; + +static void test_destroy(int *b) { + (*b)++; +} + +STATIC_DESTRUCTOR_REGISTER(foo, test_destroy); +STATIC_DESTRUCTOR_REGISTER(bar, test_destroy); +STATIC_DESTRUCTOR_REGISTER(bar, test_destroy); +STATIC_DESTRUCTOR_REGISTER(baz, test_destroy); +STATIC_DESTRUCTOR_REGISTER(baz, test_destroy); +STATIC_DESTRUCTOR_REGISTER(baz, test_destroy); +STATIC_DESTRUCTOR_REGISTER(memory, freep); + +int main(int argc, char *argv[]) { + test_setup_logging(LOG_INFO); + + assert_se(memory = strdup("hallo")); + + assert_se(foo == 0 && bar == 0 && baz == 0); + static_destruct(); + assert_se(foo == 1 && bar == 2 && baz == 3); + + return EXIT_SUCCESS; +}