#!/bin/bash set -euo pipefail SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) REPO_ROOT=$(cd "${SCRIPT_DIR}/.." && pwd) fail() { echo "FAIL: $*" >&2 exit 1 } test_preset_compose_uses_env_for_instance() { local file for file in \ "${REPO_ROOT}/docker-runner/presets/standard-ubuntu-22/docker-compose.yml" \ "${REPO_ROOT}/docker-runner/presets/buildx-ubuntu-22/docker-compose.yml" \ "${REPO_ROOT}/docker-runner/presets/buildx-archlinux/docker-compose.yml"; do grep -q 'GITEA_INSTANCE=${GITEA_INSTANCE}' "${file}" || fail "${file} should read GITEA_INSTANCE from env" grep -q 'GITEA_TOKEN=${GITEA_TOKEN}' "${file}" || fail "${file} should read GITEA_TOKEN from env" done } test_workflows_do_not_hardcode_company_server() { ! rg -q 'https://git\.mytsl\.cn' "${REPO_ROOT}/.gitea/workflows/changelog_and_release.yml" || fail "changelog workflow should not hardcode company server" ! rg -q 'https://git\.mytsl\.cn' "${REPO_ROOT}/.gitea/workflows/update_stats_badge.yaml" || fail "stats workflow should not hardcode company server" } test_stats_workflow_uses_workflow_secret_consistently() { local file file="${REPO_ROOT}/.gitea/workflows/update_stats_badge.yaml" grep -q 'ACCESS_TOKEN: ${{ secrets.WORKFLOW }}' "${file}" || fail "stats workflow should read ACCESS_TOKEN from WORKFLOW secret" ! rg -q 'STATS_TOKEN' "${file}" || fail "stats workflow should not mention legacy STATS_TOKEN secret" ! rg -q 'GITHUB_TOKEN' "${file}" || fail "stats workflow should not mention GITHUB_TOKEN in token guidance" } test_workflow_docs_and_links_use_actual_paths() { local workflow_doc stats_workflow release_workflow workflow_doc="${REPO_ROOT}/WORKFLOW.md" stats_workflow="${REPO_ROOT}/.gitea/workflows/update_stats_badge.yaml" release_workflow="${REPO_ROOT}/.gitea/workflows/changelog_and_release.yml" grep -q 'changelog_and_release.yml' "${workflow_doc}" || fail "WORKFLOW.md should mention changelog_and_release.yml" grep -q 'update_stats_badge.yaml' "${workflow_doc}" || fail "WORKFLOW.md should mention update_stats_badge.yaml" ! rg -q 'changelog-and-release\.yml' "${workflow_doc}" || fail "WORKFLOW.md should not mention stale changelog-and-release.yml filename" ! rg -q 'update-stats-badge\.yml' "${workflow_doc}" || fail "WORKFLOW.md should not mention stale update-stats-badge.yml filename" ! rg -q 'update_stats_badge\.yml' "${workflow_doc}" || fail "WORKFLOW.md should not mention stale update_stats_badge.yml filename" grep -q '/src/branch/${{ github.ref_name }}/.gitea/workflows/update_stats_badge.yaml' "${stats_workflow}" || fail "stats workflow summary should link to .gitea workflow path" grep -q '/src/branch/${{ env.MAIN_BRANCH }}/.gitea/workflows/changelog_and_release.yml' "${release_workflow}" || fail "release workflow summary should link to .gitea workflow path" ! rg -q '/\\.github/workflows/' "${stats_workflow}" || fail "stats workflow should not link to .github/workflows" ! rg -q '/\\.github/workflows/' "${release_workflow}" || fail "release workflow should not link to .github/workflows" } test_preset_env_examples_exist() { local file for file in \ "${REPO_ROOT}/docker-runner/presets/standard-ubuntu-22/.env.example" \ "${REPO_ROOT}/docker-runner/presets/buildx-ubuntu-22/.env.example" \ "${REPO_ROOT}/docker-runner/presets/buildx-archlinux/.env.example"; do test -f "${file}" || fail "missing env example: ${file}" grep -q '^GITEA_INSTANCE=https://git.mytsl.cn$' "${file}" || fail "${file} should include company default instance" grep -q '^GITEA_TOKEN=$' "${file}" || fail "${file} should include empty token placeholder" done } test_preset_compose_uses_env_for_instance test_workflows_do_not_hardcode_company_server test_stats_workflow_uses_workflow_secret_consistently test_workflow_docs_and_links_use_actual_paths test_preset_env_examples_exist echo "template_defaults_test.sh: PASS"