name: Bats Tests on: workflow_call: inputs: env_json: required: true type: string bats-image: required: true type: string secrets: GITEA_TOKEN: required: true GIT_PAGES_PUBLISH_TOKEN: required: true env: GITEA_API_URL: ${{ fromJson(inputs.env_json).GITEA_API_URL }} GIT_PAGES_URL: ${{ fromJson(inputs.env_json).GIT_PAGES_URL }} GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} GIT_PAGES_PUBLISH_TOKEN: ${{ secrets.GIT_PAGES_PUBLISH_TOKEN }} jobs: bats: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/checkout@v4 with: repository: niko/gitea-ci-library path: .ci - name: Run bats tests id: bats-tests shell: bash run: | docker volume create bats-workspace tar c . | docker run --rm -i -v bats-workspace:/data alpine tar x -C /data mkdir -p "reports/${GITHUB_SHA:0:8}/bats" set +e docker run --rm \ -v bats-workspace:/data \ --entrypoint bash ${{ inputs.bats-image }} \ -c 'cd /data && bashcov -- bats tests/' \ > "reports/${GITHUB_SHA:0:8}/bats/results.txt" 2>&1 BATS_EXIT=$? bash .ci/.gitea/scripts/bats-coverage.sh bats-workspace "reports/${GITHUB_SHA:0:8}/bats" docker volume rm bats-workspace > /dev/null 2>&1 bash .ci/.gitea/scripts/bats-report.sh "reports/${GITHUB_SHA:0:8}/bats" echo "BATS_EXIT=${BATS_EXIT}" >> "${GITHUB_ENV}" exit ${BATS_EXIT} - name: Publish bats reports if: always() run: bash .ci/scripts/publish-git-pages.sh bats - name: Report status if: always() run: | if [ "${BATS_EXIT}" = "0" ]; then bash .ci/scripts/report-status.sh success "Link to Bats reports" unit-tests bats else bash .ci/scripts/report-status.sh failure "Link to Bats reports" unit-tests bats fi