X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/ca1b06d599c610643495100186a1786d9c3dcc35..fe8722422e2b5b706d43b7f73cdcf19a437673dd:/t/git-cgi.t?ds=sidebyside

diff --git a/t/git-cgi.t b/t/git-cgi.t
index ee77257b9..3556bc038 100755
--- a/t/git-cgi.t
+++ b/t/git-cgi.t
@@ -1,7 +1,9 @@
 #!/usr/bin/perl
+use utf8;
 use warnings;
 use strict;
 
+use Encode;
 use Test::More;
 
 BEGIN {
@@ -35,7 +37,7 @@ my $installed = $ENV{INSTALLED_TESTS};
 
 my @command;
 if ($installed) {
-	@command = qw(ikiwiki);
+	@command = qw(ikiwiki --plugin inline);
 }
 else {
 	ok(! system("make -s ikiwiki.out"));
@@ -112,6 +114,7 @@ sub run_cgi {
 
 	my $cgi = CGI->new($args{params});
 	my $query_string = $cgi->query_string();
+	diag $query_string;
 
 	if ($method eq 'POST') {
 		$defaults{REQUEST_METHOD} = 'POST';
@@ -132,7 +135,7 @@ sub run_cgi {
 		} keys(%envvars);
 	});
 
-	return $out;
+	return decode_utf8($out);
 }
 
 sub run_git {
@@ -164,6 +167,12 @@ sub test {
 	write_old_file('doc/writable/two.mdwn', 't/tmp/in', 'This is the second test page');
 	write_old_file('doc/writable/three.mdwn', 't/tmp/in', 'This is the third test page');
 	write_old_file('doc/writable/three.bin', 't/tmp/in', 'An attachment');
+	write_old_file('doc/writable/blog.mdwn', 't/tmp/in',
+		'[[!inline pages="writable/blog/*" actions=yes rootpage=writable/blog postform=yes show=0]]');
+	write_old_file('doc/writable/__172__blog.mdwn', 't/tmp/in',
+		'[[!inline pages="writable/¬blog/*" actions=yes rootpage="writable/¬blog" postform=yes show=0]]');
+	write_old_file('doc/writable/中文.mdwn', 't/tmp/in',
+		'[[!inline pages="writable/中文/*" actions=yes rootpage="writable/中文" postform=yes show=0]]');
 
 	unless ($installed) {
 		ok(! system(qw(cp -pRL doc/wikiicons t/tmp/in/doc/)));
@@ -291,6 +300,10 @@ sub test {
 	$content = readfile('t/tmp/in/two.mdwn');
 	like($content, qr{Here is new content for the second page});
 
+	# We have to wait 1 second here so that new writes are guaranteed
+	# to have a strictly larger mtime.
+	sleep 1;
+
 	# This one can legitimately be reverted
 	$content = run_cgi(method => 'post',
 		params => {
@@ -310,6 +323,33 @@ sub test {
 	like($content, qr{This is the third test page});
 	$content = readfile('t/tmp/out/writable/three.bin');
 	like($content, qr{An attachment});
+
+	$content = readfile('t/tmp/out/writable/blog/index.html');
+	like($content, qr{<input type="hidden" name="from" value="writable/blog"});
+	$content = run_cgi(method => 'get',
+		params => {
+			do => 'blog',
+			from => 'writable/blog',
+			subpage => '1',
+			title => 'hello',
+		},
+	);
+	like($content, qr{<option selected="selected" value="writable/blog/hello">writable/blog/hello</option>});
+
+	# Regression test for a bug in which we couldn't use an
+	# alphanumeric, but non-ASCII, root page.
+	$content = readfile('t/tmp/out/writable/中文/index.html');
+	like($content, qr{<input type="hidden" name="from" value="writable/中文"});
+	$content = run_cgi(method => 'get',
+		params => {
+			do => 'blog',
+			from => 'writable/中文',
+			subpage => '1',
+			title => 'hello',
+		},
+	);
+	like($content, qr{<option selected="selected" value="writable/中文/hello">writable/中文/hello</option>});
+	unlike($content, qr{Error: bad page name});
 }
 
 test();