2010-07-17 19:24:40 +02:00
|
|
|
#!/usr/bin/perl
|
|
|
|
# Tests for bugs relating to conflicting files in the srcdir
|
|
|
|
use warnings;
|
|
|
|
use strict;
|
2010-07-18 23:16:39 +02:00
|
|
|
use Test::More tests => 106;
|
2010-07-17 19:24:40 +02:00
|
|
|
|
|
|
|
# setup
|
|
|
|
my $srcdir="t/tmp/src";
|
|
|
|
my $destdir="t/tmp/dest";
|
|
|
|
ok(! system("make -s ikiwiki.out"));
|
|
|
|
|
|
|
|
# runs ikiwiki to build test site
|
|
|
|
sub runiki {
|
|
|
|
my $testdesc=shift;
|
|
|
|
ok((! system("perl -I. ./ikiwiki.out -plugin txt -plugin rawhtml -underlaydir=underlays/basewiki -set underlaydirbase=underlays -templatedir=templates $srcdir $destdir @_")),
|
|
|
|
$testdesc);
|
|
|
|
}
|
|
|
|
sub refreshiki {
|
|
|
|
runiki(shift);
|
|
|
|
}
|
|
|
|
sub setupiki {
|
|
|
|
ok(! system("rm -rf $srcdir/.ikiwiki $destdir"));
|
|
|
|
runiki(shift, "--rebuild");
|
|
|
|
}
|
|
|
|
sub newsrcdir {
|
|
|
|
ok(! system("rm -rf $srcdir $destdir"));
|
|
|
|
ok(! system("mkdir -p $srcdir"));
|
|
|
|
}
|
|
|
|
|
|
|
|
# At one point, changing the extension of the source file of a page caused
|
|
|
|
# ikiwiki to fail.
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
setupiki("initial setup");
|
|
|
|
ok(! system("mv $srcdir/foo.mdwn $srcdir/foo.txt"));
|
|
|
|
refreshiki("changed extension of source file of page");
|
|
|
|
ok(! system("mv $srcdir/foo.txt $srcdir/foo.mdwn"));
|
|
|
|
refreshiki("changed extension of source file of page 2");
|
|
|
|
|
|
|
|
# Conflicting page sources is sorta undefined behavior,
|
|
|
|
# but should not crash ikiwiki.
|
|
|
|
# Added when refreshing
|
|
|
|
ok(! system("touch $srcdir/foo.txt"));
|
|
|
|
refreshiki("conflicting page sources in refresh");
|
|
|
|
# Present during setup
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
ok(! system("touch $srcdir/foo.txt"));
|
|
|
|
setupiki("conflicting page sources in setup");
|
|
|
|
|
2010-07-18 19:50:06 +02:00
|
|
|
# Page and non-page file with same pagename.
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
ok(! system("touch $srcdir/foo"));
|
|
|
|
setupiki("conflicting page and non-page in setup");
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
setupiki("initial setup");
|
|
|
|
ok(! system("touch $srcdir/foo"));
|
|
|
|
refreshiki("conflicting page added (non-page already existing) in refresh");
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo"));
|
|
|
|
setupiki("initial setup");
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
refreshiki("conflicting non-page added (page already existing) in refresh");
|
|
|
|
|
2010-07-18 23:16:39 +02:00
|
|
|
# Page that renders to a file that is also a subdirectory holding another
|
|
|
|
# file.
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
ok(! system("mkdir -p $srcdir/foo/index.html"));
|
|
|
|
ok(! system("touch $srcdir/foo/index.html/bar.mdwn"));
|
|
|
|
setupiki("conflicting page file and subdirectory");
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
ok(! system("mkdir -p $srcdir/foo/index.html"));
|
|
|
|
ok(! system("touch $srcdir/foo/index.html/bar"));
|
|
|
|
setupiki("conflicting page file and subdirectory 2");
|
|
|
|
|
2010-07-17 19:24:40 +02:00
|
|
|
# Changing a page file into a non-page could also cause ikiwiki to fail.
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
setupiki("initial setup");
|
|
|
|
ok(! system("mv $srcdir/foo.mdwn $srcdir/foo"));
|
|
|
|
refreshiki("page file turned into non-page");
|
|
|
|
|
|
|
|
# Changing a non-page file into a page could also cause ikiwiki to fail.
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo"));
|
|
|
|
setupiki("initial setup");
|
|
|
|
ok(! system("mv $srcdir/foo $srcdir/foo.mdwn"));
|
|
|
|
refreshiki("non-page file turned into page");
|
|
|
|
|
|
|
|
# What if a page renders to the same html file that a rawhtml file provides?
|
|
|
|
# Added when refreshing
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
setupiki("initial setup");
|
|
|
|
ok(! system("mkdir -p $srcdir/foo"));
|
|
|
|
ok(! system("touch $srcdir/foo/index.html"));
|
|
|
|
refreshiki("rawhtml file rendered same as existing page in refresh");
|
2010-07-18 22:45:44 +02:00
|
|
|
# Moved when refreshing
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
setupiki("initial setup");
|
|
|
|
ok(! system("mkdir -p $srcdir/foo"));
|
|
|
|
ok(! system("mv $srcdir/foo.mdwn $srcdir/foo/index.html"));
|
|
|
|
refreshiki("existing page moved to rawhtml file in refresh");
|
2010-07-17 19:30:08 +02:00
|
|
|
# Inverse added when refreshing
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("mkdir -p $srcdir/foo"));
|
|
|
|
ok(! system("touch $srcdir/foo/index.html"));
|
|
|
|
setupiki("initial setup");
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
refreshiki("page rendered same as existing rawhtml file in refresh");
|
2010-07-18 22:45:44 +02:00
|
|
|
# Inverse moved when refreshing
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("mkdir -p $srcdir/foo"));
|
|
|
|
ok(! system("touch $srcdir/foo/index.html"));
|
|
|
|
setupiki("initial setup");
|
|
|
|
ok(! system("mv $srcdir/foo/index.html $srcdir/foo.mdwn"));
|
|
|
|
refreshiki("rawhtml file moved to page in refresh");
|
2010-07-17 19:24:40 +02:00
|
|
|
# Present during setup
|
|
|
|
newsrcdir();
|
|
|
|
ok(! system("touch $srcdir/foo.mdwn"));
|
|
|
|
ok(! system("mkdir -p $srcdir/foo"));
|
|
|
|
ok(! system("touch $srcdir/foo/index.html"));
|
|
|
|
setupiki("rawhtml file rendered same as existing page in setup");
|
|
|
|
|
|
|
|
# cleanup
|
|
|
|
ok(! system("rm -rf t/tmp"));
|