#!/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" REPORT_DIR="reports/abc123de/unit-tests" mkdir -p "$REPORT_DIR" echo "test" > "$REPORT_DIR/index.html" } teardown() { mock_stop rm -rf "reports/abc123de" } @test "missing suite_path argument → exit 1" { run bash scripts/publish-git-pages.sh "" [ "$status" -eq 1 ] [[ "$output" == *"ERROR"* ]] } @test "missing GITEA_API_URL → exit 1" { unset GITEA_API_URL run bash scripts/publish-git-pages.sh "unit-tests" [ "$status" -eq 1 ] [[ "$output" == *"GITEA_API_URL"* ]] } @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 export GIT_PAGES_URL="http://localhost:${MOCK_PORT}" run bash scripts/publish-git-pages.sh "unit-tests" [ "$status" -eq 0 ] [[ "$output" == "${GIT_PAGES_URL}/test-owner/test-repo/reports/abc123de" ]] } @test "publish with suite subpath" { mkdir -p "reports/abc123de/sub/suite" echo "sub" > "reports/abc123de/sub/suite/result.html" mock_set_sequence '[ {"code":200,"body":"published"} ]' mock_start export GIT_PAGES_URL="http://localhost:${MOCK_PORT}" run bash scripts/publish-git-pages.sh "sub/suite" [ "$status" -eq 0 ] [[ "$output" == "${GIT_PAGES_URL}/test-owner/test-repo/reports/abc123de" ]] } @test "git-pages returns HTTP 500 → exit 1" { mock_set_sequence '[ {"code":500,"body":"internal error"} ]' mock_start export GIT_PAGES_URL="http://localhost:${MOCK_PORT}" run bash scripts/publish-git-pages.sh "unit-tests" [ "$status" -eq 1 ] [[ "$output" == *"500"* ]] }