#!/usr/bin/env bats setup() { source tests/helpers/mock-api.sh export GITEA_API_URL="http://localhost:18080" export GIT_PAGES_URL="http://localhost:18080" export GIT_PAGES_PUBLISH_TOKEN="publish-token-abc" export GITHUB_REPOSITORY="test-owner/test-repo" export GITHUB_SHA="abc123def456789012345678901234567890abcd" export GITHUB_REF_NAME="main" mkdir -p "unit-tests" echo "test" > "unit-tests/index.html" } teardown() { mock_stop rm -rf "unit-tests" "sub" } @test "missing suite_path argument → exit 1" { run bash scripts/publish-git-pages.sh "" [ "$status" -eq 1 ] [[ "$output" == *"ERROR"* ]] } @test "missing GITHUB_REF_NAME → exit 1" { unset GITHUB_REF_NAME run bash scripts/publish-git-pages.sh "unit-tests" [ "$status" -eq 1 ] [[ "$output" == *"GITHUB_REF_NAME"* ]] } @test "missing GIT_PAGES_URL → exit 1" { unset GIT_PAGES_URL run bash scripts/publish-git-pages.sh "unit-tests" [ "$status" -eq 1 ] [[ "$output" == *"GIT_PAGES_URL"* ]] } @test "missing GIT_PAGES_PUBLISH_TOKEN → exit 1" { unset GIT_PAGES_PUBLISH_TOKEN run bash scripts/publish-git-pages.sh "unit-tests" [ "$status" -eq 1 ] [[ "$output" == *"GIT_PAGES_PUBLISH_TOKEN"* ]] } @test "missing GITHUB_REPOSITORY → exit 1" { unset GITHUB_REPOSITORY run bash scripts/publish-git-pages.sh "unit-tests" [ "$status" -eq 1 ] [[ "$output" == *"GITHUB_REPOSITORY"* ]] } @test "suite path is not a directory → exit 1" { run bash scripts/publish-git-pages.sh "nonexistent" [ "$status" -eq 1 ] [[ "$output" == *"not a directory"* ]] } @test "valid publish returns report base URL" { mock_set_sequence '[ {"code":200,"body":"published"} ]' mock_start run bash scripts/publish-git-pages.sh "unit-tests" [ "$status" -eq 0 ] [[ "$output" == "http://localhost:18080/test-owner/test-repo/main/abc123de/unit-tests/" ]] } @test "publish with suite subpath" { mkdir -p "sub/suite" echo "sub" > "sub/suite/result.html" mock_set_sequence '[ {"code":200,"body":"published"} ]' mock_start run bash scripts/publish-git-pages.sh "sub/suite" [ "$status" -eq 0 ] [[ "$output" == "http://localhost:18080/test-owner/test-repo/main/abc123de/sub/suite/" ]] } @test "git-pages returns HTTP 500 → exit 1" { mock_set_sequence '[ {"code":500,"body":"internal error"} ]' mock_start run bash scripts/publish-git-pages.sh "unit-tests" [ "$status" -eq 1 ] [[ "$output" == *"500"* ]] }