Diff options
| -rwxr-xr-x | tests/t0303-robustness.sh | 24 |
1 file changed, 20 insertions, 4 deletions
diff --git a/tests/t0303-robustness.sh b/tests/t0303-robustness.sh index 5f247d1..c0e7c96 100755 --- a/tests/t0303-robustness.sh +++ b/tests/t0303-robustness.sh @@ -247,11 +247,27 @@ test_expect_success 'a path below the about page answers 404' ' grep "^Status: 404" tmp ' +# The stem becomes the leading directory of every member of the archive, so +# a name holding a slash is refused even where it spells a ref. Such a ref +# is linked under a dashed name instead. test_expect_success 'a snapshot name holding a slash is refused' ' - cgit_rc robrc "url=rob/snapshot/:/../../...tar.gz" >tmp && - grep "^Status: 404" tmp && - cgit_rc robrc "url=rob/snapshot/rob-master.tar.gz" >tmp && - grep "^Status: 200" tmp + git -C repos/rob tag rel/1 && + test_when_finished "git -C repos/rob tag -d rel/1" && + for name in rel/1 :/../../.. + do + cgit_rc robrc "url=rob/snapshot/$name.tar.gz" >tmp && + test_grep "^Status: 404" tmp || return 1 + done && + cgit_ok robrc "url=rob/snapshot/rob-master.tar.gz" >tmp +' + +# Only a ref is worked back from a file name, since the wider revision syntax +# can walk the whole history for a match. The name holds no slash, so it +# reaches that check rather than the one above. +test_expect_success 'a snapshot name in revision syntax is refused' ' + cgit_rc robrc "url=rob/snapshot/master~1.tar.gz" >tmp && + test_grep "^Status: 404" tmp && + cgit_ok robrc "url=rob/snapshot/master.tar.gz" >tmp ' test_expect_success 'a path opening with a colon is refused on the log and patch pages' ' |
