#!/bin/sh test_description='Check content on ci page' . ./setup.sh # The ci settings are only inherited by repositories which are declared # after them, which is used below to get a repository with no ci url and # one with a tag-only ci url. cat >cgitrc.ci <ci-filter.sh <>"$PWD/ci-filter.log" test "\$2" = tag EOF chmod +x ci-filter.sh git --git-dir="$PWD/repos/foo/.git" tag v0.17.3.2 master cgit_ci() { CGIT_CONFIG="$PWD/cgitrc.ci" QUERY_STRING="url=$1" cgit } test_expect_success 'redirect to the branch ci url' ' cgit_ci "foo/ci&h=master" >tmp && grep "^Status: 302 Found$" tmp && grep "^Location: https://ci.example.org/job/foo/job/master$" tmp ' test_expect_success 'redirect to the tag ci url' ' cgit_ci "foo/ci&h=v0.17.3.2" >tmp && grep "^Status: 302 Found$" tmp && grep "^Location: https://ci.example.org/job/foo/view/tags/job/v0.17.3.2$" tmp ' test_expect_success 'redirect to the default branch ci url' ' cgit_ci "foo/ci" >tmp && grep "^Location: https://ci.example.org/job/foo/job/master$" tmp ' test_expect_success '$slug strips ".git" and replaces slashes' ' cgit_ci "sayauz/web.git/ci&h=v0.17.3.2" >tmp && grep "^Location: https://ci.example.org/job/sayauz-web/view/tags/job/v0.17.3.2$" tmp ' test_expect_success 'repo.ci-url overrides and expands $repo and $$' ' cgit_ci "override/ci&h=master" >tmp && grep -F "Location: https://ci.example.org/override/override/\$/master" tmp ' test_expect_success 'repo.ci-tag-url does not apply to branches' ' cgit_ci "tagonly/ci&h=v0.17.3.2" >tmp && grep "^Location: https://ci.example.org/tagonly/v0.17.3.2$" tmp && cgit_ci "tagonly/ci&h=master" >tmp && grep "^Status: 404 Not found$" tmp ' test_expect_success 'find ci tab' ' cgit_ci "foo/refs&h=master" >tmp && grep "href=./foo/ci/.>ci" tmp ' test_expect_success 'no ci tab without a ci url' ' cgit_url "foo/refs" >tmp && ! grep ">ci" tmp ' test_expect_success 'ci filter accepts a tag' ' rm -f ci-filter.log && cgit_ci "filtered/ci&h=v0.17.3.2" >tmp && grep "^Location: https://ci.example.org/job/filtered/view/tags/job/v0.17.3.2$" tmp && echo "v0.17.3.2|tag|https://ci.example.org/job/filtered/view/tags/job/v0.17.3.2" >expected && test_cmp expected ci-filter.log ' test_expect_success 'ci filter rejects a branch' ' rm -f ci-filter.log && cgit_ci "filtered/ci&h=master" >tmp && grep "^Status: 404 Not found$" tmp && echo "master|branch|https://ci.example.org/job/filtered/job/master" >expected && test_cmp expected ci-filter.log ' test_expect_success "ci filter hides the tab and is consulted once" ' rm -f ci-filter.log && cgit_ci "filtered/refs&h=master" >tmp && ! grep ">ci" tmp && test_line_count = 1 ci-filter.log && cgit_ci "filtered/refs&h=v0.17.3.2" >tmp && grep "href=./filtered/ci/?h=v0.17.3.2.>ci" tmp ' test_expect_success 'ci filter is not consulted without a ci url' ' rm -f ci-filter.log && cgit_url "foo/refs" >tmp && test_path_is_missing ci-filter.log ' test_done