diff --git a/.gitea/scripts/bats-coverage.sh b/.gitea/scripts/bats-coverage.sh index 5d3652c..992d1c0 100755 --- a/.gitea/scripts/bats-coverage.sh +++ b/.gitea/scripts/bats-coverage.sh @@ -1,16 +1,16 @@ #!/usr/bin/env bash set -euo pipefail -COVERAGE_VOLUME="${1:-}" +WORKSPACE_VOLUME="${1:-}" REPORT_DIR="${2:-}" -[ -n "$COVERAGE_VOLUME" ] || { echo "ERROR: coverage volume name required" >&2; exit 1; } +[ -n "$WORKSPACE_VOLUME" ] || { echo "ERROR: workspace volume name required" >&2; exit 1; } [ -n "$REPORT_DIR" ] || { echo "ERROR: report directory required" >&2; exit 1; } HAS_COVERAGE=false -if docker run --rm -v "$COVERAGE_VOLUME":/coverage alpine sh -c '[ -d /coverage ] && ls -A /coverage | grep -q .' 2>/dev/null; then +if docker run --rm -v "$WORKSPACE_VOLUME":/data alpine sh -c '[ -d /data/coverage ] && ls -A /data/coverage | grep -q .' 2>/dev/null; then mkdir -p "$REPORT_DIR/coverage" - docker run --rm -v "$COVERAGE_VOLUME":/coverage alpine tar c -C /coverage . | tar x -C "$REPORT_DIR/coverage" + docker run --rm -v "$WORKSPACE_VOLUME":/data alpine tar c -C /data/coverage . | tar x -C "$REPORT_DIR/coverage" HAS_COVERAGE=true fi diff --git a/.gitea/workflows/build-feature.yml b/.gitea/workflows/build-feature.yml index eb4e78c..3d889f5 100644 --- a/.gitea/workflows/build-feature.yml +++ b/.gitea/workflows/build-feature.yml @@ -51,29 +51,19 @@ jobs: shell: bash run: | docker volume create bats-workspace - docker volume create bats-coverage - tar c . | docker run --rm -i -v bats-workspace:/data -v bats-coverage:/coverage alpine tar x -C /data + 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 \ - -v bats-coverage:/coverage \ - --cap-add SYS_PTRACE \ --entrypoint bash ${{ inputs.bats-image }} \ - -c 'apk add -q lsof python3 jq curl && cd /data && \ - if ! apk add -q kcov 2>/dev/null; then \ - grep "^https.*/main$" /etc/apk/repositories | sed "s/main$/community/" >> /etc/apk/repositories && \ - apk update -q && apk add -q kcov; \ - fi && \ - if command -v kcov &>/dev/null; then \ - kcov --include-path=/data/scripts/ /coverage/ bats tests/; \ - else \ - echo "ERROR: kcov is required but not available" >&2 && exit 1; \ - fi' \ + -c 'apk add -q lsof python3 jq curl ruby && cd /data && \ + gem install bashcov 2>&1 | tail -1 && \ + bashcov -- bats tests/' \ > "reports/${GITHUB_SHA:0:8}/bats/results.txt" 2>&1 BATS_EXIT=$? - bash .ci/.gitea/scripts/bats-coverage.sh bats-coverage "reports/${GITHUB_SHA:0:8}/bats" - docker volume rm bats-workspace bats-coverage > /dev/null 2>&1 + 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}