X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/bb8f15e2a7e55bef6c2e44a0b4a530add030befc..dc872e42c8649f5b3fd59861e5c56c89d9fc1cbb:/t/relativity.t diff --git a/t/relativity.t b/t/relativity.t index 7e1e7049f..5922ec9fa 100755 --- a/t/relativity.t +++ b/t/relativity.t @@ -14,7 +14,6 @@ use IkiWiki; use Cwd qw(getcwd); use Errno qw(ENOENT); -my $PERL5LIB = 'blib/lib:blib/arch'; my $pwd = getcwd(); # Black-box (ish) test for relative linking between CGI and static content @@ -60,36 +59,56 @@ write_old_file("a/b/c.mdwn", write_old_file("a/d.mdwn", "D"); write_old_file("a/d/e.mdwn", "E"); -####################################################################### -# site 1: a perfectly ordinary ikiwiki +sub write_setup_file { + my (%args) = @_; + my $urlline = defined $args{url} ? "url: $args{url}" : ""; + my $w3mmodeline = defined $args{w3mmode} ? "w3mmode: $args{w3mmode}" : ""; + my $reverseproxyline = defined $args{reverse_proxy} ? "reverse_proxy: $args{reverse_proxy}" : ""; -writefile("test.setup", "t/tmp", < 0, + url => "http://example.com/wiki/", + cgiurl => "http://example.com/cgi-bin/ikiwiki.cgi", +); +thoroughly_rebuild(); +check_cgi_mode_bits(); ok(-e "t/tmp/out/a/b/c/index.html"); $content = readfile("t/tmp/out/a/b/c/index.html"); @@ -161,33 +180,13 @@ like($bits{cgihref}, qr{^(?:(?:http:)?//example.com)?/cgi-bin/ikiwiki.cgi$}); # in html5, the is allowed to be relative, and we take full # advantage of that -writefile("test.setup", "t/tmp", < 1, + url => "http://example.com/wiki/", + cgiurl => "http://example.com/cgi-bin/ikiwiki.cgi", ); - -ok(unlink("t/tmp/ikiwiki.cgi") || $!{ENOENT}); -ok(! system("./ikiwiki.out --setup t/tmp/test.setup --rebuild --wrappers")); - -# CGI wrapper should be exactly the requested mode -(undef, undef, $mode, undef, undef, - undef, undef, undef, undef, undef, - undef, undef, undef) = stat("t/tmp/ikiwiki.cgi"); -is($mode & 07777, 0754); +thoroughly_rebuild(); +check_cgi_mode_bits(); ok(-e "t/tmp/out/a/b/c/index.html"); $content = readfile("t/tmp/out/a/b/c/index.html"); @@ -262,33 +261,13 @@ is($bits{cgihref}, "/cgi-bin/ikiwiki.cgi"); ####################################################################### # site 2: static content and CGI are on different servers -writefile("test.setup", "t/tmp", < 0, + url => "http://static.example.com/", + cgiurl => "http://cgi.example.com/ikiwiki.cgi", ); - -ok(unlink("t/tmp/ikiwiki.cgi")); -ok(! system("./ikiwiki.out --setup t/tmp/test.setup --rebuild --wrappers")); - -# CGI wrapper should be exactly the requested mode -(undef, undef, $mode, undef, undef, - undef, undef, undef, undef, undef, - undef, undef, undef) = stat("t/tmp/ikiwiki.cgi"); -is($mode & 07777, 0754); +thoroughly_rebuild(); +check_cgi_mode_bits(); ok(-e "t/tmp/out/a/b/c/index.html"); $content = readfile("t/tmp/out/a/b/c/index.html"); @@ -350,33 +329,13 @@ local $TODO = "use self-referential CGI URL?"; like($bits{cgihref}, qr{^(?:(?:http:)?//staging.example.net)?/ikiwiki.cgi$}); } -writefile("test.setup", "t/tmp", < 1, + url => "http://static.example.com/", + cgiurl => "http://cgi.example.com/ikiwiki.cgi", ); - -ok(unlink("t/tmp/ikiwiki.cgi")); -ok(! system("./ikiwiki.out --setup t/tmp/test.setup --rebuild --wrappers")); - -# CGI wrapper should be exactly the requested mode -(undef, undef, $mode, undef, undef, - undef, undef, undef, undef, undef, - undef, undef, undef) = stat("t/tmp/ikiwiki.cgi"); -is($mode & 07777, 0754); +thoroughly_rebuild(); +check_cgi_mode_bits(); ok(-e "t/tmp/out/a/b/c/index.html"); $content = readfile("t/tmp/out/a/b/c/index.html"); @@ -442,33 +401,13 @@ is($bits{cgihref}, "//staging.example.net/ikiwiki.cgi"); ####################################################################### # site 3: we specifically want everything to be secure -writefile("test.setup", "t/tmp", < 0, + url => "https://example.com/wiki/", + cgiurl => "https://example.com/cgi-bin/ikiwiki.cgi", ); - -ok(unlink("t/tmp/ikiwiki.cgi")); -ok(! system("./ikiwiki.out --setup t/tmp/test.setup --rebuild --wrappers")); - -# CGI wrapper should be exactly the requested mode -(undef, undef, $mode, undef, undef, - undef, undef, undef, undef, undef, - undef, undef, undef) = stat("t/tmp/ikiwiki.cgi"); -is($mode & 07777, 0754); +thoroughly_rebuild(); +check_cgi_mode_bits(); ok(-e "t/tmp/out/a/b/c/index.html"); $content = readfile("t/tmp/out/a/b/c/index.html"); @@ -550,33 +489,13 @@ like($bits{cgihref}, qr{^(?:(?:https:)?//example.com)?/cgi-bin/ikiwiki.cgi$}); ####################################################################### # site 4 (NetBSD wiki): CGI is secure, static content doesn't have to be -writefile("test.setup", "t/tmp", < 0, + url => "http://example.com/wiki/", + cgiurl => "https://example.com/cgi-bin/ikiwiki.cgi", ); - -ok(unlink("t/tmp/ikiwiki.cgi")); -ok(! system("./ikiwiki.out --setup t/tmp/test.setup --rebuild --wrappers")); - -# CGI wrapper should be exactly the requested mode -(undef, undef, $mode, undef, undef, - undef, undef, undef, undef, undef, - undef, undef, undef) = stat("t/tmp/ikiwiki.cgi"); -is($mode & 07777, 0754); +thoroughly_rebuild(); +check_cgi_mode_bits(); ok(-e "t/tmp/out/a/b/c/index.html"); $content = readfile("t/tmp/out/a/b/c/index.html"); @@ -655,33 +574,13 @@ like($bits{stylehref}, qr{^(?:(?:https:)?//example.com)?/wiki/style.css$}); like($bits{tophref}, qr{^(?:/wiki|\.\./\.\./\.\.)/$}); like($bits{cgihref}, qr{^(?:(?:https:)?//example.com)?/cgi-bin/ikiwiki.cgi$}); -writefile("test.setup", "t/tmp", < 1, + url => "http://example.com/wiki/", + cgiurl => "https://example.com/cgi-bin/ikiwiki.cgi", ); - -ok(unlink("t/tmp/ikiwiki.cgi")); -ok(! system("./ikiwiki.out --setup t/tmp/test.setup --rebuild --wrappers")); - -# CGI wrapper should be exactly the requested mode -(undef, undef, $mode, undef, undef, - undef, undef, undef, undef, undef, - undef, undef, undef) = stat("t/tmp/ikiwiki.cgi"); -is($mode & 07777, 0754); +thoroughly_rebuild(); +check_cgi_mode_bits(); ok(-e "t/tmp/out/a/b/c/index.html"); $content = readfile("t/tmp/out/a/b/c/index.html"); @@ -766,32 +665,14 @@ like($bits{cgihref}, qr{^(?:(?:https:)?//example.com)?/cgi-bin/ikiwiki.cgi$}); ####################################################################### # site 5: w3mmode, as documented in [[w3mmode]] -writefile("test.setup", "t/tmp", < 0, + url => undef, + cgiurl => "ikiwiki.cgi", + w3mmode => 1, ); - -ok(unlink("t/tmp/ikiwiki.cgi")); -ok(! system("./ikiwiki.out --setup t/tmp/test.setup --rebuild --wrappers")); - -# CGI wrapper should be exactly the requested mode -(undef, undef, $mode, undef, undef, - undef, undef, undef, undef, undef, - undef, undef, undef) = stat("t/tmp/ikiwiki.cgi"); -is($mode & 07777, 0754); +thoroughly_rebuild(); +check_cgi_mode_bits(); ok(-e "t/tmp/out/a/b/c/index.html"); $content = readfile("t/tmp/out/a/b/c/index.html"); @@ -816,32 +697,14 @@ like($bits{cgihref}, qr{^(?:file://)?/\$LIB/ikiwiki-w3m.cgi/ikiwiki.cgi$}); like($bits{basehref}, qr{^(?:(?:file:)?//)?\Q$pwd\E/t/tmp/out/$}); like($bits{stylehref}, qr{^(?:(?:(?:file:)?//)?\Q$pwd\E/t/tmp/out|\.)/style.css$}); -writefile("test.setup", "t/tmp", < 1, + url => undef, + cgiurl => "ikiwiki.cgi", + w3mmode => 1, ); - -ok(unlink("t/tmp/ikiwiki.cgi")); -ok(! system("./ikiwiki.out --setup t/tmp/test.setup --rebuild --wrappers")); - -# CGI wrapper should be exactly the requested mode -(undef, undef, $mode, undef, undef, - undef, undef, undef, undef, undef, - undef, undef, undef) = stat("t/tmp/ikiwiki.cgi"); -is($mode & 07777, 0754); +thoroughly_rebuild(); +check_cgi_mode_bits(); ok(-e "t/tmp/out/a/b/c/index.html"); $content = readfile("t/tmp/out/a/b/c/index.html"); @@ -869,34 +732,14 @@ like($bits{stylehref}, qr{^(?:(?:(?:file:)?//)?\Q$pwd\E/t/tmp/out|\.)/style.css$ ####################################################################### # site 6: we're behind a reverse-proxy -writefile("test.setup", "t/tmp", < 0, + url => "https://example.com/wiki/", + cgiurl => "https://example.com/cgi-bin/ikiwiki.cgi", + reverse_proxy => 1, ); - -ok(unlink("t/tmp/ikiwiki.cgi")); -ok(! system("./ikiwiki.out --setup t/tmp/test.setup --rebuild --wrappers")); - -# CGI wrapper should be exactly the requested mode -(undef, undef, $mode, undef, undef, - undef, undef, undef, undef, undef, - undef, undef, undef) = stat("t/tmp/ikiwiki.cgi"); -is($mode & 07777, 0754); +thoroughly_rebuild(); +check_cgi_mode_bits(); ok(-e "t/tmp/out/a/b/c/index.html"); $content = readfile("t/tmp/out/a/b/c/index.html");