Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : 3 : : #include <fcntl.h> 4 : : #include <unistd.h> 5 : : 6 : : #include "async.h" 7 : : #include "macro.h" 8 : : #include "tmpfile-util.h" 9 : : #include "util.h" 10 : : 11 : : static bool test_async = false; 12 : : 13 : 0 : static void *async_func(void *arg) { 14 : 0 : test_async = true; 15 : : 16 : 0 : return NULL; 17 : : } 18 : : 19 : 4 : int main(int argc, char *argv[]) { 20 : : int fd; 21 : 4 : char name[] = "/tmp/test-asynchronous_close.XXXXXX"; 22 : : 23 : 4 : fd = mkostemp_safe(name); 24 [ - + ]: 4 : assert_se(fd >= 0); 25 : 4 : asynchronous_close(fd); 26 : : 27 [ - + ]: 4 : assert_se(asynchronous_job(async_func, NULL) >= 0); 28 : : 29 [ - + ]: 4 : assert_se(asynchronous_sync(NULL) >= 0); 30 : : 31 : 4 : sleep(1); 32 : : 33 [ - + ]: 4 : assert_se(fcntl(fd, F_GETFD) == -1); 34 [ - + ]: 4 : assert_se(test_async); 35 : : 36 : 4 : (void) unlink(name); 37 : : 38 : 4 : return 0; 39 : : }