Path: blob/main/lib/libc/tests/gen/fts_misc_test.c
39507 views
/*-1* Copyright (c) 2025 Klara, Inc.2*3* SPDX-License-Identifier: BSD-2-Clause4*/56#include <sys/stat.h>78#include <fcntl.h>9#include <fts.h>10#include <stdbool.h>11#include <stdio.h>12#include <stdlib.h>13#include <unistd.h>1415#include <atf-c.h>1617#include "fts_test.h"1819ATF_TC(fts_unrdir);20ATF_TC_HEAD(fts_unrdir, tc)21{22atf_tc_set_md_var(tc, "descr", "unreadable directories");23atf_tc_set_md_var(tc, "require.user", "unprivileged");24}25ATF_TC_BODY(fts_unrdir, tc)26{27ATF_REQUIRE_EQ(0, mkdir("dir", 0755));28ATF_REQUIRE_EQ(0, mkdir("dir/unr", 0100));29ATF_REQUIRE_EQ(0, mkdir("dir/unx", 0400));30fts_test(tc, &(struct fts_testcase){31(char *[]){ "dir", NULL },32FTS_PHYSICAL,33(struct fts_expect[]){34{ FTS_D, "dir", "dir" },35{ FTS_D, "unr", "unr" },36{ FTS_DNR, "unr", "unr" },37{ FTS_D, "unx", "unx" },38{ FTS_DP, "unx", "unx" },39{ FTS_DP, "dir", "dir" },40{ 0 }41},42});43}4445ATF_TC(fts_unrdir_nochdir);46ATF_TC_HEAD(fts_unrdir_nochdir, tc)47{48atf_tc_set_md_var(tc, "descr", "unreadable directories (nochdir)");49atf_tc_set_md_var(tc, "require.user", "unprivileged");50}51ATF_TC_BODY(fts_unrdir_nochdir, tc)52{53ATF_REQUIRE_EQ(0, mkdir("dir", 0755));54ATF_REQUIRE_EQ(0, mkdir("dir/unr", 0100));55ATF_REQUIRE_EQ(0, mkdir("dir/unx", 0400));56fts_test(tc, &(struct fts_testcase){57(char *[]){ "dir", NULL },58FTS_PHYSICAL | FTS_NOCHDIR,59(struct fts_expect[]){60{ FTS_D, "dir", "dir" },61{ FTS_D, "unr", "dir/unr" },62{ FTS_DNR, "unr", "dir/unr" },63{ FTS_D, "unx", "dir/unx" },64{ FTS_DP, "unx", "dir/unx" },65{ FTS_DP, "dir", "dir" },66{ 0 }67},68});69}7071ATF_TP_ADD_TCS(tp)72{73fts_check_debug();74ATF_TP_ADD_TC(tp, fts_unrdir);75ATF_TP_ADD_TC(tp, fts_unrdir_nochdir);76return (atf_no_error());77}787980