Merge branch 'master' into file_pruned_revamp
[ikiwiki] / t / file_pruned.t
1 #!/usr/bin/perl
2 use warnings;
3 use strict;
4 use Test::More tests => 54;
5
6 BEGIN { use_ok("IkiWiki"); }
7
8 %config=IkiWiki::defaultconfig();
9
10 ok(IkiWiki::file_pruned("src/.htaccess", "src"));
11 ok(IkiWiki::file_pruned(".htaccess"));
12 ok(IkiWiki::file_pruned("src/.ikiwiki/", "src"));
13 ok(IkiWiki::file_pruned(".ikiwiki/"));
14 ok(IkiWiki::file_pruned("src/.ikiwiki/index", "src"));
15 ok(IkiWiki::file_pruned(".ikiwiki/index"));
16 ok(IkiWiki::file_pruned("src/CVS/foo", "src"));
17 ok(IkiWiki::file_pruned("CVS/foo"));
18 ok(IkiWiki::file_pruned("src/subdir/CVS/foo", "src"));
19 ok(IkiWiki::file_pruned("subdir/CVS/foo"));
20 ok(IkiWiki::file_pruned("src/.svn", "src"));
21 ok(IkiWiki::file_pruned(".svn"));
22 ok(IkiWiki::file_pruned("src/subdir/.svn", "src"));
23 ok(IkiWiki::file_pruned("subdir/.svn"));
24 ok(IkiWiki::file_pruned("src/subdir/.svn/foo", "src"));
25 ok(IkiWiki::file_pruned("subdir/.svn/foo"));
26 ok(IkiWiki::file_pruned("src/.git", "src"));
27 ok(IkiWiki::file_pruned(".git"));
28 ok(IkiWiki::file_pruned("src/subdir/.git", "src"));
29 ok(IkiWiki::file_pruned("subdir/.git"));
30 ok(IkiWiki::file_pruned("src/subdir/.git/foo", "src"));
31 ok(IkiWiki::file_pruned("subdir/.git/foo"));
32 ok(! IkiWiki::file_pruned("src/svn/fo", "src"));
33 ok(! IkiWiki::file_pruned("svn/fo"));
34 ok(! IkiWiki::file_pruned("src/git", "src"));
35 ok(! IkiWiki::file_pruned("git"));
36 ok(! IkiWiki::file_pruned("src/index.mdwn", "src"));
37 ok(! IkiWiki::file_pruned("index.mdwn"));
38 ok(! IkiWiki::file_pruned("src/index.", "src"));
39 ok(! IkiWiki::file_pruned("index."));
40
41 # these are ok because while the filename starts with ".", the canonpathed
42 # version does not
43 ok(! IkiWiki::file_pruned("src/.", "src"));
44 ok(! IkiWiki::file_pruned("src/./", "src"));
45 # OTOH, without a srcdir, no canonpath, so they're not allowed.
46 ok(IkiWiki::file_pruned("."));
47 ok(IkiWiki::file_pruned("./"));
48
49 # Without a srcdir, absolute filenames are not allowed.
50 ok(IkiWiki::file_pruned("/etc/passwd"));
51 ok(IkiWiki::file_pruned("//etc/passwd"));
52 ok(IkiWiki::file_pruned("/"));
53 ok(IkiWiki::file_pruned("//"));
54 ok(IkiWiki::file_pruned("///"));
55
56
57 ok(IkiWiki::file_pruned("src/..", "src"));
58 ok(IkiWiki::file_pruned(".."));
59 ok(IkiWiki::file_pruned("src/../", "src"));
60 ok(IkiWiki::file_pruned("../"));
61 ok(IkiWiki::file_pruned("src/../", "src"));
62 ok(IkiWiki::file_pruned("../"));
63
64 # This is perhaps counterintuitive.
65 ok(! IkiWiki::file_pruned("src", "src"));
66
67 # Dots, etc, in the srcdir are ok.
68 ok(! IkiWiki::file_pruned("/.foo/src", "/.foo/src"));
69 ok(IkiWiki::file_pruned("/.foo/src/.foo/src", "/.foo/src"));
70 ok(! IkiWiki::file_pruned("/.foo/src/index.mdwn", "/.foo/src/index.mdwn"));
71
72 ok(IkiWiki::file_pruned("src/y/foo.dpkg-tmp", "src"));
73 ok(IkiWiki::file_pruned("y/foo.dpkg-tmp"));
74 ok(IkiWiki::file_pruned("src/y/foo.ikiwiki-new", "src"));
75 ok(IkiWiki::file_pruned("y/foo.ikiwiki-new"));