48 lines
No EOL
1.4 KiB
Bash
Executable file
48 lines
No EOL
1.4 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# File: scripts/run_tests_with_coverage.sh
|
|
|
|
echo "Running tests with coverage for all modules..."
|
|
|
|
# Create coverage directory
|
|
mkdir -p coverage
|
|
rm -f coverage/coverage.txt
|
|
|
|
# Find all go.mod files and run tests
|
|
find ./src -name go.mod | while read -r mod_file; do
|
|
mod_dir=$(dirname "$mod_file")
|
|
mod_name=$(basename "$mod_dir")
|
|
|
|
echo "Testing module: $mod_name"
|
|
|
|
(
|
|
cd "$mod_dir"
|
|
if go test -v -coverprofile=coverage.out ./...; then
|
|
if [ -s coverage.out ]; then
|
|
echo "mode: atomic" > "../../coverage/coverage.$mod_name.txt"
|
|
tail -n +2 coverage.out >> "../../coverage/coverage.$mod_name.txt"
|
|
else
|
|
echo "No coverage data generated for $mod_name"
|
|
fi
|
|
else
|
|
echo "Tests failed for $mod_name"
|
|
fi
|
|
rm -f coverage.out
|
|
)
|
|
done
|
|
|
|
# Combine all coverage files
|
|
echo "mode: atomic" > coverage/coverage.txt
|
|
find coverage -name 'coverage.*.txt' -print0 | xargs -0 tail -q -n +2 >> coverage/coverage.txt
|
|
|
|
# Remove any non-coverage lines (like file headers)
|
|
sed -i '/^[^[:space:]]*:/!d' coverage/coverage.txt
|
|
|
|
# Generate coverage reports
|
|
if [ -s coverage/coverage.txt ]; then
|
|
go tool cover -func=coverage/coverage.txt
|
|
go tool cover -html=coverage/coverage.txt -o coverage/coverage.html
|
|
echo "Coverage report generated in coverage/coverage.html"
|
|
else
|
|
echo "No coverage data generated"
|
|
fi |