xref: /src/lib/libutil++/tests/pidfile_test.cc (revision 7be913e00d79b3bf740049797fbc3f6ab8193995)
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 Baldwin ATF_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 Baldwin ATF_INIT_TEST_CASES(tcs)
427be913e0SJohn Baldwin {
437be913e0SJohn Baldwin 	ATF_ADD_TEST_CASE(tcs, basic);
447be913e0SJohn Baldwin }
45