aboutsummaryrefslogtreecommitdiff
path: root/t/file_pruned.t
diff options
context:
space:
mode:
authorJoey Hess <joey@kitenet.net>2010-04-17 19:05:40 -0400
committerJoey Hess <joey@kitenet.net>2010-04-17 19:05:40 -0400
commita97964688b73d0a3237c798dce3fb064ff29ff11 (patch)
tree6a3ca565cd89b6b69b736ccc391b4ec1aba87421 /t/file_pruned.t
parente289e0b4ba48d01e24586dbdcaeda367763edd67 (diff)
downloadikiwiki-a97964688b73d0a3237c798dce3fb064ff29ff11.tar
ikiwiki-a97964688b73d0a3237c798dce3fb064ff29ff11.tar.gz
unfinished file_prune revamp
Many calls to file_prune were incorrectly calling it with 2 parameters. In cases where the filename being checked is relative to the srcdir, that is not needed. Made absolute filenames be pruned. (This won't work for the 2 parameter call style.)
Diffstat (limited to 't/file_pruned.t')
-rwxr-xr-xt/file_pruned.t40
1 files changed, 37 insertions, 3 deletions
diff --git a/t/file_pruned.t b/t/file_pruned.t
index f9c1c257e..4335ed917 100755
--- a/t/file_pruned.t
+++ b/t/file_pruned.t
@@ -1,41 +1,75 @@
#!/usr/bin/perl
use warnings;
use strict;
-use Test::More tests => 27;
+use Test::More tests => 54;
BEGIN { use_ok("IkiWiki"); }
%config=IkiWiki::defaultconfig();
ok(IkiWiki::file_pruned("src/.htaccess", "src"));
+ok(IkiWiki::file_pruned(".htaccess"));
ok(IkiWiki::file_pruned("src/.ikiwiki/", "src"));
+ok(IkiWiki::file_pruned(".ikiwiki/"));
ok(IkiWiki::file_pruned("src/.ikiwiki/index", "src"));
+ok(IkiWiki::file_pruned(".ikiwiki/index"));
ok(IkiWiki::file_pruned("src/CVS/foo", "src"));
+ok(IkiWiki::file_pruned("CVS/foo"));
ok(IkiWiki::file_pruned("src/subdir/CVS/foo", "src"));
+ok(IkiWiki::file_pruned("subdir/CVS/foo"));
ok(IkiWiki::file_pruned("src/.svn", "src"));
+ok(IkiWiki::file_pruned(".svn"));
ok(IkiWiki::file_pruned("src/subdir/.svn", "src"));
+ok(IkiWiki::file_pruned("subdir/.svn"));
ok(IkiWiki::file_pruned("src/subdir/.svn/foo", "src"));
+ok(IkiWiki::file_pruned("subdir/.svn/foo"));
ok(IkiWiki::file_pruned("src/.git", "src"));
+ok(IkiWiki::file_pruned(".git"));
ok(IkiWiki::file_pruned("src/subdir/.git", "src"));
+ok(IkiWiki::file_pruned("subdir/.git"));
ok(IkiWiki::file_pruned("src/subdir/.git/foo", "src"));
+ok(IkiWiki::file_pruned("subdir/.git/foo"));
ok(! IkiWiki::file_pruned("src/svn/fo", "src"));
+ok(! IkiWiki::file_pruned("svn/fo"));
ok(! IkiWiki::file_pruned("src/git", "src"));
+ok(! IkiWiki::file_pruned("git"));
ok(! IkiWiki::file_pruned("src/index.mdwn", "src"));
+ok(! IkiWiki::file_pruned("index.mdwn"));
ok(! IkiWiki::file_pruned("src/index.", "src"));
+ok(! IkiWiki::file_pruned("index."));
# these are ok because while the filename starts with ".", the canonpathed
# version does not
ok(! IkiWiki::file_pruned("src/.", "src"));
ok(! IkiWiki::file_pruned("src/./", "src"));
+# OTOH, without a srcdir, no canonpath, so they're not allowed.
+ok(IkiWiki::file_pruned("."));
+ok(IkiWiki::file_pruned("./"));
+
+# Without a srcdir, absolute filenames are not allowed.
+ok(IkiWiki::file_pruned("/etc/passwd"));
+ok(IkiWiki::file_pruned("//etc/passwd"));
+ok(IkiWiki::file_pruned("/"));
+ok(IkiWiki::file_pruned("//"));
+ok(IkiWiki::file_pruned("///"));
+
ok(IkiWiki::file_pruned("src/..", "src"));
+ok(IkiWiki::file_pruned(".."));
ok(IkiWiki::file_pruned("src/../", "src"));
+ok(IkiWiki::file_pruned("../"));
ok(IkiWiki::file_pruned("src/../", "src"));
+ok(IkiWiki::file_pruned("../"));
+# This is perhaps counterintuitive.
ok(! IkiWiki::file_pruned("src", "src"));
+
+# Dots, etc, in the srcdir are ok.
ok(! IkiWiki::file_pruned("/.foo/src", "/.foo/src"));
ok(IkiWiki::file_pruned("/.foo/src/.foo/src", "/.foo/src"));
ok(! IkiWiki::file_pruned("/.foo/src/index.mdwn", "/.foo/src/index.mdwn"));
-ok(IkiWiki::file_pruned("x/y/foo.dpkg-tmp", "src"));
-ok(IkiWiki::file_pruned("x/y/foo.ikiwiki-new", "src"));
+ok(IkiWiki::file_pruned("src/y/foo.dpkg-tmp", "src"));
+ok(IkiWiki::file_pruned("y/foo.dpkg-tmp"));
+ok(IkiWiki::file_pruned("src/y/foo.ikiwiki-new", "src"));
+ok(IkiWiki::file_pruned("y/foo.ikiwiki-new"));