is($res->code, 404, 'failure with null OID');
$res = $cb->(GET("/$name/$non_existent/s/"));
- is($res->code, 404, 'failure with null OID');
+ is($res->code, 404, 'failure with non-existent OID');
$res = $cb->(GET("/$name/$v1_0_0_tag/s/"));
is($res->code, 200, 'shows commit (unabbreviated)');
defined($ENV{PLACK_TEST_EXTERNALSERVER_URI}) or
open STDERR, '>&', $olderr or xbail "open: $!";
is($res->code, 200, 'coderepo summary (binfoo)');
- if (ok(-s "$tmpdir/stderr.log")) {
- open my $fh, '<', "$tmpdir/stderr.log" or xbail $!;
- my $s = do { local $/; <$fh> };
- open $fh, '>', "$tmpdir/stderr.log" or xbail $!;
- ok($s =~ s/^fatal: your current branch.*?\n//sm,
- 'got current branch warning');
- ok($s =~ s/^.*? exit status=[1-9]+ .*?\n//sm,
- 'got exit status warning');
- is($s, '', 'no unexpected warnings on empty coderepo');
- }
+ ok(!-s "$tmpdir/stderr.log");
$res = $cb->(GET('/public-inbox/'));
is($res->code, 200, 'coderepo summary (public-inbox)');
+
+ my $tip = 'invalid-'.int(rand(0xdeadbeef));
+ $res = $cb->(GET('/public-inbox/?h='.$tip));
+ is($res->code, 200, 'coderepo summary on dead branch');
+ like($res->content, qr/no commits in `\Q$tip\E', yet/,
+ 'lack of commits noted');
+
$res = $cb->(GET('/public-inbox'));
is($res->code, 301, 'redirected');
ok($t->{feed}->{entry}, 'got entry');
$res = $cb->(GET('/public-inbox/atom/README.md'));
- is($res->code, 404, '404 on non-existent file Atom feed');
+ is($res->code, 404, '404 on missing file Atom feed');
+
+ $res = $cb->(GET('/public-inbox/atom/?h=gone'));
+ is($res->code, 404, '404 on missing Atom feed branch');
}
$res = $cb->(GET('/public-inbox/tree/'));
is($res->code, 200, 'got 200 for a directory');
$got = $res->content;
like($got, qr/\bgit ls-tree\b/, 'ls-tree help shown');
+
+ $res = $cb->(GET('/public-inbox/tree/?h=no-branch'));
+ is($res->code, 404, 'got 404 for non-existent ref root');
+ $res = $cb->(GET('/public-inbox/tree/README?h=no-file'));
+ is($res->code, 404, 'got 404 for non-existent ref README');
+ $res = $cb->(GET('/public-inbox/tree/Documentation?h=no-dir'));
+ is($res->code, 404, 'got 404 for non-existent ref directory');
+
+ $res = $cb->(GET('/public-inbox/tags.atom'));
+ is($res->code, 200, 'Atom feed');
+ SKIP: {
+ require_mods('XML::TreePP', 1);
+ my $t = XML::TreePP->new->parse($res->content);
+ ok(scalar @{$t->{feed}->{entry}}, 'got tag entries');
+ }
};
test_psgi(sub { $www->call(@_) }, $client);
my $env = { PI_CONFIG => $cfgpath, TMPDIR => $tmpdir };