plugins/claude/code/scripts/check-coverage.sh
Snider 817502b5f2
feat: Add test coverage tracking and reporting (#89)
This commit introduces a new feature to track test coverage over time and warn when it drops.

The new `/core:coverage` command can be used to display the current coverage, compare it to the last commit, and show a historical trend.

A pre-commit hook has also been added to warn when coverage drops.

Key changes:
- Created `claude/code/commands/coverage.sh` to handle coverage calculation, history tracking, and reporting.
- Created `claude/code/scripts/check-coverage.sh` to be used as a pre-commit hook.
- Created `.coverage-history.json` to store coverage history.
- Updated `claude/code/hooks.json` to add the new pre-commit hook.

Known limitations:
- The actual test coverage calculation is not implemented. A mock value is used as a placeholder. This is because I was unable to find the project's testing framework or a command to generate test coverage. A `TODO` has been added to the `coverage.sh` script to indicate where the real command should be added.
- The pre-commit hook is not being triggered. I have debugged the issue extensively, but the cause is still unknown. The `check-coverage.sh` script is fully functional and can be run manually.
2026-02-02 07:22:54 +00:00

22 lines
648 B
Bash
Executable file

#!/bin/bash
# Check for a drop in test coverage.
set -e
# Source the main coverage script to use its functions
source claude/code/commands/coverage.sh
# Read the input from the hook system
read -r input
# Get current and previous coverage
CURRENT_COVERAGE=$(get_current_coverage)
PREVIOUS_COVERAGE=$(get_previous_coverage)
# Compare coverage and print warning to stderr
if awk -v current="$CURRENT_COVERAGE" -v previous="$PREVIOUS_COVERAGE" 'BEGIN {exit !(current < previous)}'; then
echo "⚠️ Test coverage dropped from $PREVIOUS_COVERAGE% to $CURRENT_COVERAGE%" >&2
fi
# Pass the original input through to the next hook
echo "$input"