diff options
-rwxr-xr-x | t/conflicts.t | 81 | ||||
-rwxr-xr-x | t/replace.t | 53 |
2 files changed, 81 insertions, 53 deletions
diff --git a/t/conflicts.t b/t/conflicts.t new file mode 100755 index 000000000..7748c105f --- /dev/null +++ b/t/conflicts.t @@ -0,0 +1,81 @@ +#!/usr/bin/perl +# Tests for bugs relating to conflicting files in the srcdir +use warnings; +use strict; +use Test::More 'no_plan'; + +# 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"); + +# 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"); +# 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")); diff --git a/t/replace.t b/t/replace.t deleted file mode 100755 index 04791d9f7..000000000 --- a/t/replace.t +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/perl -# Tests for bugs relating to replacing/renaming files in the srcdir. -use warnings; -use strict; -use Test::More 'no_plan'; - -# 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 { - ok(! system("perl -I. ./ikiwiki.out -plugin html -underlaydir=underlays/basewiki -set underlaydirbase=underlays -templatedir=templates $srcdir $destdir @_")); -} -sub refreshiki { - runiki(); -} -sub setupiki { - ok(! system("rm -rf $srcdir/.ikiwiki $destdir")); - runiki("--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(); -ok(! system("mv $srcdir/foo.mdwn $srcdir/foo.html")); -refreshiki(); -ok(! system("mv $srcdir/foo.html $srcdir/foo.mdwn")); -refreshiki(); - -# Changing a non-page file into a page could also cause ikiwiki to fail. -newsrcdir(); -ok(! system("touch $srcdir/foo")); -setupiki(); -ok(! system("mv $srcdir/foo $srcdir/foo.mdwn")); -refreshiki(); - -# Changing a page file into a non-page could also cause ikiwiki to fail. -newsrcdir(); -ok(! system("touch $srcdir/foo.mdwn")); -setupiki(); -ok(! system("mv $srcdir/foo.mdwn $srcdir/foo")); -refreshiki(); - -# cleanup -ok(! system("rm -rf t/tmp")); |