1 /*- 2 * SPDX-License-Identifier: BSD-2-Clause 3 * 4 * Copyright (c) 2025 Chelsio Communications, Inc. 5 * Written by: John Baldwin <jhb@FreeBSD.org> 6 */ 7 8 #include <atf-c++.hpp> 9 #include <sys/stat.h> 10 #include <libutil.h> 11 12 #include <libutil++.hh> 13 14 ATF_TEST_CASE_WITHOUT_HEAD(basic); ATF_TEST_CASE_BODY(basic)15ATF_TEST_CASE_BODY(basic) 16 { 17 pid_t other; 18 struct pidfh *pfh = pidfile_open("test_pidfile", 0600, &other); 19 ATF_REQUIRE(pfh != nullptr); 20 ATF_REQUIRE(pidfile_fileno(pfh) >= 0); 21 22 struct stat sb; 23 ATF_REQUIRE(fstat(pidfile_fileno(pfh), &sb) == 0); 24 ATF_REQUIRE_EQ(0, sb.st_size); 25 26 freebsd::pidfile pf(pfh); 27 ATF_REQUIRE_EQ(pidfile_fileno(pfh), pf.fileno()); 28 29 ATF_REQUIRE(pf.write() == 0); 30 31 ATF_REQUIRE(fstat(pf.fileno(), &sb) == 0); 32 ATF_REQUIRE(sb.st_size > 0); 33 34 ATF_REQUIRE(pf.close() == 0); 35 ATF_REQUIRE(pf.fileno() == -1); 36 ATF_REQUIRE_EQ(EDOOFUS, errno); 37 38 ATF_REQUIRE(unlink("test_pidfile") == 0); 39 } 40 ATF_INIT_TEST_CASES(tcs)41ATF_INIT_TEST_CASES(tcs) 42 { 43 ATF_ADD_TEST_CASE(tcs, basic); 44 } 45