Ctrl K
ComunidadGuías…

scripts/test-coverage.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/bin/bash
set -euo pipefail

readonly log_file="${LOG_FILE:-/tmp/decidealot-test-coverage.log}"
readonly coverage_file="${COVERAGE_FILE:-coverage-percent.txt}"
readonly coverage_marker="not real"
readonly minimum_coverage_percent="${COVERAGE_MINIMUM:-90}"

log() {
	local level="$1"
	shift
	jq -nc \
		--arg time "$(date -u '+%Y-%m-%dT%H:%M:%S.%3NZ')" \
		--arg level "$level" \
		--arg file "${BASH_SOURCE[1]##*/}" \
		--argjson line "${BASH_LINENO[0]}" \
		--arg func "${FUNCNAME[1]:-main}" \
		--arg msg "$*" \
		'{time:$time,level:$level,file:$file,line:$line,func:$func,msg:$msg}' >&2
}

on_error() {
	local status=$?

	log ERROR "command failed exit=$status"
	exit "$status"
}

trap on_error ERR
exec > >(tee -a "$log_file") 2>&1

if ! [[ "$minimum_coverage_percent" =~ ^[0-9]+$ ]]; then
	log ERROR "COVERAGE_MINIMUM must be a whole percentage"
	exit 2
fi

if [[ -n "${DEBUG:-}" ]]; then
	log DEBUG "running coverage suite marker=$coverage_marker"
fi

python -m pytest -m "$coverage_marker" --cov --cov-report=term --cov-fail-under="$minimum_coverage_percent"
coverage_percent="$(python -m coverage report --format=total)"
printf '%s\n' "$coverage_percent" >"$coverage_file"
log INFO "coverage badge input wrote percent=$coverage_percent path=$coverage_file"