Skip to content

Commit 56a2f3c

Browse files
committed
Fix generate-test-summary-jest.sh: quote GITHUB_STEP_SUMMARY variable
- Quote all references to $GITHUB_STEP_SUMMARY to prevent bash syntax errors when the variable is empty or unset - Add guard at script start to gracefully skip summary generation if GITHUB_STEP_SUMMARY is not set This fixes the 'Generate Test Summary' step failure in CI where unquoted variable references caused 'echo >> ' syntax errors with set -e enabled.
1 parent 9be645d commit 56a2f3c

1 file changed

Lines changed: 32 additions & 26 deletions

File tree

.github/scripts/generate-test-summary-jest.sh

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,17 @@ set -e
55
# Shows breakdown by test type (unit vs integration)
66
# Usage: ./generate-test-summary-jest.sh <unit-json> <integration-json>
77

8+
# Guard: skip if GITHUB_STEP_SUMMARY is not set
9+
if [ -z "$GITHUB_STEP_SUMMARY" ]; then
10+
echo "Warning: GITHUB_STEP_SUMMARY not set, skipping summary generation"
11+
exit 0
12+
fi
13+
814
UNIT_JSON="${1:-}"
915
INTEGRATION_JSON="${2:-}"
1016

11-
echo "## Test Results" >> $GITHUB_STEP_SUMMARY
12-
echo "" >> $GITHUB_STEP_SUMMARY
17+
echo "## Test Results" >> "$GITHUB_STEP_SUMMARY"
18+
echo "" >> "$GITHUB_STEP_SUMMARY"
1319

1420
# Function to parse Jest JSON file
1521
parse_json() {
@@ -55,37 +61,37 @@ total_failed=$((unit_failed + int_failed))
5561
total_skipped=$((unit_skipped + int_skipped))
5662

5763
# Display detailed breakdown
58-
echo "### Summary by Test Type" >> $GITHUB_STEP_SUMMARY
59-
echo "" >> $GITHUB_STEP_SUMMARY
60-
echo "| Test Type | Passed | Failed | Skipped | Total |" >> $GITHUB_STEP_SUMMARY
61-
echo "|-----------|--------|--------|---------|-------|" >> $GITHUB_STEP_SUMMARY
64+
echo "### Summary by Test Type" >> "$GITHUB_STEP_SUMMARY"
65+
echo "" >> "$GITHUB_STEP_SUMMARY"
66+
echo "| Test Type | Passed | Failed | Skipped | Total |" >> "$GITHUB_STEP_SUMMARY"
67+
echo "|-----------|--------|--------|---------|-------|" >> "$GITHUB_STEP_SUMMARY"
6268

6369
if [ -f "$UNIT_JSON" ]; then
64-
echo "| 🔧 Unit Tests | $unit_passed | $unit_failed | $unit_skipped | $unit_tests |" >> $GITHUB_STEP_SUMMARY
70+
echo "| 🔧 Unit Tests | $unit_passed | $unit_failed | $unit_skipped | $unit_tests |" >> "$GITHUB_STEP_SUMMARY"
6571
fi
6672

6773
if [ -f "$INTEGRATION_JSON" ]; then
68-
echo "| 🔗 Integration Tests | $int_passed | $int_failed | $int_skipped | $int_tests |" >> $GITHUB_STEP_SUMMARY
74+
echo "| 🔗 Integration Tests | $int_passed | $int_failed | $int_skipped | $int_tests |" >> "$GITHUB_STEP_SUMMARY"
6975
fi
7076

71-
echo "| **Total** | **$total_passed** | **$total_failed** | **$total_skipped** | **$total_tests** |" >> $GITHUB_STEP_SUMMARY
72-
echo "" >> $GITHUB_STEP_SUMMARY
77+
echo "| **Total** | **$total_passed** | **$total_failed** | **$total_skipped** | **$total_tests** |" >> "$GITHUB_STEP_SUMMARY"
78+
echo "" >> "$GITHUB_STEP_SUMMARY"
7379

7480
# Overall status
75-
echo "### Overall Status" >> $GITHUB_STEP_SUMMARY
76-
echo "" >> $GITHUB_STEP_SUMMARY
77-
echo "| Status | Count |" >> $GITHUB_STEP_SUMMARY
78-
echo "|--------|-------|" >> $GITHUB_STEP_SUMMARY
79-
echo "| ✅ Passed | $total_passed |" >> $GITHUB_STEP_SUMMARY
80-
echo "| ❌ Failed | $total_failed |" >> $GITHUB_STEP_SUMMARY
81-
echo "| ⏭️ Skipped | $total_skipped |" >> $GITHUB_STEP_SUMMARY
82-
echo "| **Total** | **$total_tests** |" >> $GITHUB_STEP_SUMMARY
83-
echo "" >> $GITHUB_STEP_SUMMARY
81+
echo "### Overall Status" >> "$GITHUB_STEP_SUMMARY"
82+
echo "" >> "$GITHUB_STEP_SUMMARY"
83+
echo "| Status | Count |" >> "$GITHUB_STEP_SUMMARY"
84+
echo "|--------|-------|" >> "$GITHUB_STEP_SUMMARY"
85+
echo "| ✅ Passed | $total_passed |" >> "$GITHUB_STEP_SUMMARY"
86+
echo "| ❌ Failed | $total_failed |" >> "$GITHUB_STEP_SUMMARY"
87+
echo "| ⏭️ Skipped | $total_skipped |" >> "$GITHUB_STEP_SUMMARY"
88+
echo "| **Total** | **$total_tests** |" >> "$GITHUB_STEP_SUMMARY"
89+
echo "" >> "$GITHUB_STEP_SUMMARY"
8490

8591
# List failed tests if any
8692
if [ $total_failed -gt 0 ]; then
87-
echo "### ❌ Failed Tests" >> $GITHUB_STEP_SUMMARY
88-
echo "" >> $GITHUB_STEP_SUMMARY
93+
echo "### ❌ Failed Tests" >> "$GITHUB_STEP_SUMMARY"
94+
echo "" >> "$GITHUB_STEP_SUMMARY"
8995

9096
failed_tests_file=$(mktemp)
9197

@@ -107,16 +113,16 @@ if [ $total_failed -gt 0 ]; then
107113

108114
if [ -s "$failed_tests_file" ]; then
109115
while IFS= read -r test; do
110-
echo "- \`$test\`" >> $GITHUB_STEP_SUMMARY
116+
echo "- \`$test\`" >> "$GITHUB_STEP_SUMMARY"
111117
done < "$failed_tests_file"
112118
else
113-
echo "_Unable to parse individual test names_" >> $GITHUB_STEP_SUMMARY
119+
echo "_Unable to parse individual test names_" >> "$GITHUB_STEP_SUMMARY"
114120
fi
115121

116-
echo "" >> $GITHUB_STEP_SUMMARY
117-
echo "❌ **Tests failed!**" >> $GITHUB_STEP_SUMMARY
122+
echo "" >> "$GITHUB_STEP_SUMMARY"
123+
echo "❌ **Tests failed!**" >> "$GITHUB_STEP_SUMMARY"
118124
rm -f "$failed_tests_file"
119125
exit 1
120126
else
121-
echo "✅ **All tests passed!**" >> $GITHUB_STEP_SUMMARY
127+
echo "✅ **All tests passed!**" >> "$GITHUB_STEP_SUMMARY"
122128
fi

0 commit comments

Comments
 (0)