17be913e0SJohn Baldwin /*- 27be913e0SJohn Baldwin * SPDX-License-Identifier: BSD-2-Clause 37be913e0SJohn Baldwin * 47be913e0SJohn Baldwin * Copyright (c) 2025 Chelsio Communications, Inc. 57be913e0SJohn Baldwin * Written by: John Baldwin <jhb@FreeBSD.org> 67be913e0SJohn Baldwin */ 77be913e0SJohn Baldwin 87be913e0SJohn Baldwin #include <atf-c++.hpp> 97be913e0SJohn Baldwin #include <sys/stat.h> 107be913e0SJohn Baldwin #include <libutil.h> 117be913e0SJohn Baldwin 127be913e0SJohn Baldwin #include <libutil++.hh> 137be913e0SJohn Baldwin 147be913e0SJohn Baldwin ATF_TEST_CASE_WITHOUT_HEAD(basic); ATF_TEST_CASE_BODY(basic)157be913e0SJohn BaldwinATF_TEST_CASE_BODY(basic) 167be913e0SJohn Baldwin { 177be913e0SJohn Baldwin pid_t other; 187be913e0SJohn Baldwin struct pidfh *pfh = pidfile_open("test_pidfile", 0600, &other); 197be913e0SJohn Baldwin ATF_REQUIRE(pfh != nullptr); 207be913e0SJohn Baldwin ATF_REQUIRE(pidfile_fileno(pfh) >= 0); 217be913e0SJohn Baldwin 227be913e0SJohn Baldwin struct stat sb; 237be913e0SJohn Baldwin ATF_REQUIRE(fstat(pidfile_fileno(pfh), &sb) == 0); 247be913e0SJohn Baldwin ATF_REQUIRE_EQ(0, sb.st_size); 257be913e0SJohn Baldwin 267be913e0SJohn Baldwin freebsd::pidfile pf(pfh); 277be913e0SJohn Baldwin ATF_REQUIRE_EQ(pidfile_fileno(pfh), pf.fileno()); 287be913e0SJohn Baldwin 297be913e0SJohn Baldwin ATF_REQUIRE(pf.write() == 0); 307be913e0SJohn Baldwin 317be913e0SJohn Baldwin ATF_REQUIRE(fstat(pf.fileno(), &sb) == 0); 327be913e0SJohn Baldwin ATF_REQUIRE(sb.st_size > 0); 337be913e0SJohn Baldwin 347be913e0SJohn Baldwin ATF_REQUIRE(pf.close() == 0); 357be913e0SJohn Baldwin ATF_REQUIRE(pf.fileno() == -1); 367be913e0SJohn Baldwin ATF_REQUIRE_EQ(EDOOFUS, errno); 377be913e0SJohn Baldwin 387be913e0SJohn Baldwin ATF_REQUIRE(unlink("test_pidfile") == 0); 397be913e0SJohn Baldwin } 407be913e0SJohn Baldwin ATF_INIT_TEST_CASES(tcs)417be913e0SJohn BaldwinATF_INIT_TEST_CASES(tcs) 427be913e0SJohn Baldwin { 437be913e0SJohn Baldwin ATF_ADD_TEST_CASE(tcs, basic); 447be913e0SJohn Baldwin } 45