3 #include <wvglobdiriter.h>
7 static bool create_dir(WvStringParm dir
, const WvStringList
&entries
)
9 if (mkdir(dir
, 0700)) return false;
11 WvStringList::Iter
entry(entries
);
12 for (entry
.rewind(); entry
.next(); )
14 WvString
name("%s/%s", dir
, *entry
);
15 mkdir(getdirname(name
), 0700);
16 WvFile(name
, O_CREAT
| O_EXCL
, 0600).print("wvtest");
22 static bool destroy_dir(WvStringParm dir
)
24 system(WvString("rm -rf %s", dir
));
29 WVTEST_MAIN("Non-recursive WvGlobDirIter")
31 WvString
dir("/tmp/wvtest-wvdiriter-%s", getpid());
34 entries
.split("file-one file-two .dot-file subdir/sub-file");
36 WVPASS(create_dir(dir
, entries
));
38 std::map
<WvString
, bool> found
;
40 WvGlobDirIter
di(dir
, "file-*", false);
41 for (di
.rewind(); di
.next(); )
42 found
[di
->relname
] = true;
44 WVFAIL(found
.find(".") != found
.end());
45 WVFAIL(found
.find("..") != found
.end());
46 WVPASS(found
.find("file-one") != found
.end());
47 WVPASS(found
.find("file-two") != found
.end());
48 WVFAIL(found
.find(".dot-file") != found
.end());
49 WVFAIL(found
.find("subdir") != found
.end());
50 WVFAIL(found
.find("subdir/.") != found
.end());
51 WVFAIL(found
.find("subdir/..") != found
.end());
52 WVFAIL(found
.find("subdir/sub-file") != found
.end());
54 WVPASS(destroy_dir(dir
));
57 WVTEST_MAIN("Recursive WvGlobDirIter")
59 WvString
dir("/tmp/wvtest-wvdiriter-%s", getpid());
62 entries
.split("file-one file-two .dot-file subdir/sub-file");
64 WVPASS(create_dir(dir
, entries
));
66 std::map
<WvString
, bool> found
;
68 WvGlobDirIter
di(dir
, "subdir/*-file", true);
69 for (di
.rewind(); di
.next(); )
70 found
[di
->relname
] = true;
72 WVFAIL(found
.find(".") != found
.end());
73 WVFAIL(found
.find("..") != found
.end());
74 WVFAIL(found
.find("file-one") != found
.end());
75 WVFAIL(found
.find("file-two") != found
.end());
76 WVFAIL(found
.find(".dot-file") != found
.end());
77 WVFAIL(found
.find("subdir") != found
.end());
78 WVFAIL(found
.find("subdir/.") != found
.end());
79 WVFAIL(found
.find("subdir/..") != found
.end());
80 WVPASS(found
.find("subdir/sub-file") != found
.end());
82 WVPASS(destroy_dir(dir
));