From a70877d8815819563f624a2a7973a18174361544 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 3 Nov 2021 15:56:48 +0100 Subject: [PATCH] test: add test that ensures TAKE_FD() works as it should --- src/test/test-fd-util.c | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/test/test-fd-util.c b/src/test/test-fd-util.c index 0aa229fbc9a..3638103bf14 100644 --- a/src/test/test-fd-util.c +++ b/src/test/test-fd-util.c @@ -1,6 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include +#include #include #include "alloc-util.h" @@ -486,6 +487,47 @@ static void test_fd_reopen(void) { fd1 = -1; } +static void test_take_fd(void) { + _cleanup_close_ int fd1 = -1, fd2 = -1; + int array[2] = { -1, -1 }, i = 0; + + log_info("/* %s */", __func__); + + assert_se(fd1 == -1); + assert_se(fd2 == -1); + + fd1 = eventfd(0, EFD_CLOEXEC); + assert_se(fd1 >= 0); + + fd2 = TAKE_FD(fd1); + assert_se(fd1 == -1); + assert_se(fd2 >= 0); + + assert_se(array[0] == -1); + assert_se(array[1] == -1); + + array[0] = TAKE_FD(fd2); + assert_se(fd1 == -1); + assert_se(fd2 == -1); + assert_se(array[0] >= 0); + assert_se(array[1] == -1); + + array[1] = TAKE_FD(array[i]); + assert_se(array[0] == -1); + assert_se(array[1] >= 0); + + i = 1 - i; + array[0] = TAKE_FD(*(array + i)); + assert_se(array[0] >= 0); + assert_se(array[1] == -1); + + i = 1 - i; + fd1 = TAKE_FD(array[i]); + assert_se(fd1 >= 0); + assert_se(array[0] == -1); + assert_se(array[1] == -1); +} + int main(int argc, char *argv[]) { test_setup_logging(LOG_DEBUG); @@ -500,6 +542,7 @@ int main(int argc, char *argv[]) { test_close_all_fds(); test_format_proc_fd_path(); test_fd_reopen(); + test_take_fd(); return 0; } -- 2.47.3