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