From 7cf0819b5800a4c78033593172b2876b9a2a55fd Mon Sep 17 00:00:00 2001 From: GSRN Date: Mon, 15 Sep 2025 19:06:51 +0200 Subject: [PATCH] feat: Enforce test requirements - fail pipeline if no tests ## Test Requirements Enforcement ### 1. Remove Dummy Test Report Fallback - Removed dummy test report creation - Pipeline will now fail if no test reports are generated - Ensures proper test coverage requirements ### 2. Early Test File Validation - Added 'Check for test files' step before test execution - Counts test files in src/test/java/ directory - Sets TEST_FILES_EXIST environment variable ### 3. Fail Fast for Missing Test Files - Added 'Fail if no test files exist' step - Fails pipeline immediately if no test files found - Provides clear guidance on test file requirements - Shows example of proper test file naming ### 4. Enhanced Test Report Validation - Added 'Fail if no test reports found' step - Fails pipeline if no test reports are generated after test execution - Provides detailed error messages explaining possible causes - Ensures test execution actually produces reports ### 5. Clear Error Messages - Specific guidance on test file naming conventions - Examples of proper test file structure - Clear indication of what's required for pipeline success ## Pipeline Behavior - **Fails early** if no test files exist - **Fails** if tests don't generate reports - **Provides clear guidance** on test requirements - **Enforces test coverage** as a quality gate ## Expected Results - Pipeline will fail if no test files are present - Pipeline will fail if test execution doesn't produce reports - Clear error messages guide developers to add proper tests - Ensures all code changes include corresponding tests --- .gitea/workflows/api-gateway.yml | 52 ++++++++++++++++++++++++-------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/.gitea/workflows/api-gateway.yml b/.gitea/workflows/api-gateway.yml index 4d9010f..2f20189 100644 --- a/.gitea/workflows/api-gateway.yml +++ b/.gitea/workflows/api-gateway.yml @@ -63,6 +63,33 @@ jobs: - name: Compile code run: ./mvnw compile + - name: Check for test files + run: | + echo "Checking for test files in src/test/java/..." + if [ -d "src/test/java" ]; then + TEST_COUNT=$(find src/test/java -name "*Test*.java" -type f | wc -l) + echo "Found $TEST_COUNT test files" + if [ $TEST_COUNT -eq 0 ]; then + echo "⚠️ No test files found! Please add test files to src/test/java/" + echo "TEST_FILES_EXIST=false" >> $GITHUB_ENV + else + echo "✅ Test files found" + echo "TEST_FILES_EXIST=true" >> $GITHUB_ENV + fi + else + echo "❌ No src/test/java directory found!" + echo "TEST_FILES_EXIST=false" >> $GITHUB_ENV + fi + + - name: Fail if no test files exist + if: env.TEST_FILES_EXIST == 'false' + run: | + echo "❌ No test files found in src/test/java/" + echo "This pipeline requires test files to be present." + echo "Please add test files with names ending in 'Test.java' or 'Tests.java'" + echo "Example: src/test/java/com/labfusion/MyServiceTest.java" + exit 1 + - name: Run unit tests run: | echo "Running Maven tests..." @@ -98,19 +125,6 @@ jobs: echo "TEST_REPORTS_EXIST=false" >> $GITHUB_ENV fi - - name: Create dummy test report if none exists - if: env.TEST_REPORTS_EXIST == 'false' - run: | - echo "Creating dummy test report since no tests were found..." - cat > target/surefire-reports/TEST-dummy.xml << 'EOF' - - - - - EOF - echo "Dummy test report created" - echo "TEST_REPORTS_EXIST=true" >> $GITHUB_ENV - - name: Generate test report uses: dorny/test-reporter@v1 if: env.TEST_REPORTS_EXIST == 'true' @@ -118,6 +132,18 @@ jobs: name: Maven Tests (Java ${{ matrix.java-version }}) path: target/surefire-reports/*.xml reporter: java-junit + + - name: Fail if no test reports found + if: env.TEST_REPORTS_EXIST == 'false' + run: | + echo "❌ No test reports were generated!" + echo "This indicates that either:" + echo "1. No test files were found in src/test/java/" + echo "2. Tests failed to execute properly" + echo "3. Maven Surefire plugin did not generate reports" + echo "" + echo "Please ensure you have test files and they are executing correctly." + exit 1 - name: Run code quality checks run: |