Merged revisions 11788-11813 via svnmerge from
[wvstreams.git] / utils / t / wvglobdiriter.t.cc
blob387de96d90d2e23e546a32caffebe71a3ab642d9
1 #include <map>
2 #include <wvtest.h>
3 #include <wvglobdiriter.h>
4 #include <wvfile.h>
5 #include <wvstring.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");
19 return true;
22 static bool destroy_dir(WvStringParm dir)
24 system(WvString("rm -rf %s", dir));
26 return true;
29 WVTEST_MAIN("Non-recursive WvGlobDirIter")
31 WvString dir("/tmp/wvtest-wvdiriter-%s", getpid());
33 WvStringList entries;
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());
61 WvStringList entries;
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));