@@ -2,131 +2,14 @@ name: Test
22
33on :
44 push :
5- branches :
6- - ' **'
5+ branches : [main, develop]
76 pull_request :
8- branches :
9- - ' **'
7+ branches : [main, develop]
108
119jobs :
12- # Run Go unit tests across all packages
13- unit-tests :
14- runs-on : ubuntu-latest
15-
16- steps :
17- - name : Checkout code
18- uses : actions/checkout@v4
19-
20- - name : Set up Go
21- uses : actions/setup-go@v5
22- with :
23- go-version : ' 1.22'
24- cache : true
25- cache-dependency-path : src/go.sum
26-
27- - name : Download dependencies
28- working-directory : src
29- run : go mod download
30-
31- - name : Run unit tests with coverage
32- working-directory : src
33- run : |
34- echo "🧪 Running unit tests across all packages..."
35-
36- # Run tests with coverage and verbose output
37- go test -v -race -coverprofile=coverage.out -covermode=atomic ./... 2>&1 | tee test-output.txt
38-
39- # Check exit code
40- TEST_EXIT_CODE=${PIPESTATUS[0]}
41-
42- # Generate coverage report
43- echo ""
44- echo "📊 Coverage Report:"
45- go tool cover -func=coverage.out | tail -20
46-
47- # Extract total coverage
48- TOTAL_COVERAGE=$(go tool cover -func=coverage.out | grep total | awk '{print $3}')
49- echo ""
50- echo "📈 Total Coverage: $TOTAL_COVERAGE"
51-
52- exit $TEST_EXIT_CODE
53-
54- - name : Generate coverage HTML report
55- if : always()
56- working-directory : src
57- run : |
58- if [ -f coverage.out ]; then
59- go tool cover -html=coverage.out -o coverage.html
60- echo "✅ Coverage HTML report generated"
61- fi
62-
63- - name : Upload coverage report
64- if : always()
65- uses : actions/upload-artifact@v4
66- with :
67- name : coverage-report
68- path : |
69- src/coverage.out
70- src/coverage.html
71- retention-days : 7
72-
73- - name : Upload test output
74- if : always()
75- uses : actions/upload-artifact@v4
76- with :
77- name : test-output
78- path : src/test-output.txt
79- retention-days : 7
80-
81- - name : Generate test summary
82- if : always()
83- working-directory : src
84- run : |
85- echo "## 🧪 Unit Test Results" >> $GITHUB_STEP_SUMMARY
86- echo "" >> $GITHUB_STEP_SUMMARY
87-
88- # Count test results
89- if [ -f test-output.txt ]; then
90- PASSED=$(grep -c "^--- PASS" test-output.txt || echo "0")
91- FAILED=$(grep -c "^--- FAIL" test-output.txt || echo "0")
92- SKIPPED=$(grep -c "^--- SKIP" test-output.txt || echo "0")
93-
94- echo "| Metric | Count |" >> $GITHUB_STEP_SUMMARY
95- echo "|--------|-------|" >> $GITHUB_STEP_SUMMARY
96- echo "| ✅ Passed | $PASSED |" >> $GITHUB_STEP_SUMMARY
97- echo "| ❌ Failed | $FAILED |" >> $GITHUB_STEP_SUMMARY
98- echo "| ⏭️ Skipped | $SKIPPED |" >> $GITHUB_STEP_SUMMARY
99- echo "" >> $GITHUB_STEP_SUMMARY
100- fi
101-
102- # Add coverage info
103- if [ -f coverage.out ]; then
104- TOTAL_COVERAGE=$(go tool cover -func=coverage.out | grep total | awk '{print $3}')
105- echo "### 📊 Code Coverage: $TOTAL_COVERAGE" >> $GITHUB_STEP_SUMMARY
106- echo "" >> $GITHUB_STEP_SUMMARY
107-
108- echo "<details>" >> $GITHUB_STEP_SUMMARY
109- echo "<summary>Coverage by package</summary>" >> $GITHUB_STEP_SUMMARY
110- echo "" >> $GITHUB_STEP_SUMMARY
111- echo '```' >> $GITHUB_STEP_SUMMARY
112- go tool cover -func=coverage.out >> $GITHUB_STEP_SUMMARY
113- echo '```' >> $GITHUB_STEP_SUMMARY
114- echo "</details>" >> $GITHUB_STEP_SUMMARY
115- fi
116-
117- # List failed tests if any
118- if [ -f test-output.txt ] && grep -q "^--- FAIL" test-output.txt; then
119- echo "" >> $GITHUB_STEP_SUMMARY
120- echo "### ❌ Failed Tests" >> $GITHUB_STEP_SUMMARY
121- echo '```' >> $GITHUB_STEP_SUMMARY
122- grep "^--- FAIL" test-output.txt >> $GITHUB_STEP_SUMMARY || true
123- echo '```' >> $GITHUB_STEP_SUMMARY
124- fi
125-
12610 build-test :
12711 runs-on : ubuntu-latest
128- needs : unit-tests
129-
12+
13013 strategy :
13114 matrix :
13215 include :
13619 - image_name : kimia-bud
13720 dockerfile : Dockerfile.buildah
13821 description : " Kimia-Bud (Buildah)"
139-
22+
14023 steps :
14124 - name : Checkout code
14225 uses : actions/checkout@v4
@@ -348,64 +231,40 @@ jobs:
348231 # Integration test summary
349232 test-summary :
350233 runs-on : ubuntu-latest
351- needs : [unit-tests, build-test, kubernetes-test]
234+ needs : [build-test, kubernetes-test]
352235 if : always()
353-
236+
354237 steps :
355238 - name : Check test results
356239 run : |
357- UNIT_STATUS="${{ needs.unit-tests.result }}"
358240 BUILD_STATUS="${{ needs.build-test.result }}"
359241 K8S_STATUS="${{ needs.kubernetes-test.result }}"
360-
361- echo "## 🧪 Test Results Summary " >> $GITHUB_STEP_SUMMARY
242+
243+ echo "## 🧪 Test Results" >> $GITHUB_STEP_SUMMARY
362244 echo "" >> $GITHUB_STEP_SUMMARY
363245 echo "| Test Suite | Status |" >> $GITHUB_STEP_SUMMARY
364246 echo "|------------|--------|" >> $GITHUB_STEP_SUMMARY
365-
366- if [[ "$UNIT_STATUS" == "success" ]]; then
367- echo "| Unit Tests | ✅ Passed |" >> $GITHUB_STEP_SUMMARY
368- elif [[ "$UNIT_STATUS" == "skipped" ]]; then
369- echo "| Unit Tests | ⏭️ Skipped |" >> $GITHUB_STEP_SUMMARY
370- else
371- echo "| Unit Tests | ❌ Failed |" >> $GITHUB_STEP_SUMMARY
372- fi
373-
247+
374248 if [[ "$BUILD_STATUS" == "success" ]]; then
375249 echo "| Build Tests | ✅ Passed |" >> $GITHUB_STEP_SUMMARY
376- elif [[ "$BUILD_STATUS" == "skipped" ]]; then
377- echo "| Build Tests | ⏭️ Skipped |" >> $GITHUB_STEP_SUMMARY
378250 else
379251 echo "| Build Tests | ❌ Failed |" >> $GITHUB_STEP_SUMMARY
380252 fi
381-
253+
382254 if [[ "$K8S_STATUS" == "success" ]]; then
383255 echo "| Kubernetes Tests | ✅ Passed |" >> $GITHUB_STEP_SUMMARY
384256 elif [[ "$K8S_STATUS" == "skipped" ]]; then
385- echo "| Kubernetes Tests | ⏭️ Skipped (not a PR) |" >> $GITHUB_STEP_SUMMARY
257+ echo "| Kubernetes Tests | ⏭️ Skipped (not a PR) |" >> $GITHUB_STEP_SUMMARY
386258 else
387259 echo "| Kubernetes Tests | ❌ Failed |" >> $GITHUB_STEP_SUMMARY
388260 fi
389-
261+
390262 echo "" >> $GITHUB_STEP_SUMMARY
391263 echo "### Images Tested" >> $GITHUB_STEP_SUMMARY
392264 echo "- **kimia** (BuildKit-based)" >> $GITHUB_STEP_SUMMARY
393265 echo "- **kimia-bud** (Buildah-based)" >> $GITHUB_STEP_SUMMARY
394-
395- echo "" >> $GITHUB_STEP_SUMMARY
396- echo "### Test Packages" >> $GITHUB_STEP_SUMMARY
397- echo "- \`cmd/kimia\` - CLI argument parsing, version, help" >> $GITHUB_STEP_SUMMARY
398- echo "- \`internal/auth\` - Registry authentication" >> $GITHUB_STEP_SUMMARY
399- echo "- \`internal/build\` - Build execution, Git handling" >> $GITHUB_STEP_SUMMARY
400- echo "- \`internal/preflight\` - Environment validation" >> $GITHUB_STEP_SUMMARY
401-
402- # Fail if unit tests or build tests failed
403- if [[ "$UNIT_STATUS" != "success" ]]; then
404- echo "" >> $GITHUB_STEP_SUMMARY
405- echo "❌ **Unit tests failed - please fix before merging**" >> $GITHUB_STEP_SUMMARY
406- exit 1
407- fi
408-
266+
267+ # Fail if build tests failed
409268 if [[ "$BUILD_STATUS" != "success" ]]; then
410269 echo "" >> $GITHUB_STEP_SUMMARY
411270 echo "❌ **Build tests failed - please fix before merging**" >> $GITHUB_STEP_SUMMARY
0 commit comments