# Licensed under AGPL-3.0-or-later. Copyright (C) 2026 StellaOps Contributors. # Sprint: SPRINT_20260110_012_010_TEST # Golden Set Corpus Validation Workflow name: Golden Set Validation on: push: paths: - 'src/__Tests/__Datasets/golden-sets/**' - 'src/__Tests/Integration/GoldenSetDiff/**' - 'src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.GoldenSet/**' pull_request: paths: - 'src/__Tests/__Datasets/golden-sets/**' - 'src/__Tests/Integration/GoldenSetDiff/**' - 'src/BinaryIndex/__Libraries/StellaOps.BinaryIndex.GoldenSet/**' workflow_dispatch: jobs: validate-corpus: name: Validate Golden Set Corpus runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '10.0.x' - name: Restore dependencies run: dotnet restore src/__Tests/Integration/GoldenSetDiff/StellaOps.Integration.GoldenSetDiff.csproj - name: Build run: dotnet build src/__Tests/Integration/GoldenSetDiff/StellaOps.Integration.GoldenSetDiff.csproj --no-restore - name: Run Corpus Validation Tests run: | dotnet test src/__Tests/Integration/GoldenSetDiff/StellaOps.Integration.GoldenSetDiff.csproj \ --filter "FullyQualifiedName~CorpusValidationTests" \ --logger "trx;LogFileName=corpus-validation.trx" \ --results-directory ./TestResults - name: Run Determinism Tests run: | dotnet test src/__Tests/Integration/GoldenSetDiff/StellaOps.Integration.GoldenSetDiff.csproj \ --filter "FullyQualifiedName~DeterminismTests" \ --logger "trx;LogFileName=determinism.trx" \ --results-directory ./TestResults - name: Run Replay Validation Tests run: | dotnet test src/__Tests/Integration/GoldenSetDiff/StellaOps.Integration.GoldenSetDiff.csproj \ --filter "FullyQualifiedName~ReplayValidationTests" \ --logger "trx;LogFileName=replay-validation.trx" \ --results-directory ./TestResults - name: Upload Test Results uses: actions/upload-artifact@v4 if: always() with: name: test-results path: ./TestResults/*.trx e2e-tests: name: E2E Fix Verification Tests runs-on: ubuntu-latest needs: validate-corpus steps: - name: Checkout uses: actions/checkout@v4 - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '10.0.x' - name: Restore dependencies run: dotnet restore src/__Tests/E2E/GoldenSetDiff/StellaOps.E2E.GoldenSetDiff.csproj - name: Build run: dotnet build src/__Tests/E2E/GoldenSetDiff/StellaOps.E2E.GoldenSetDiff.csproj --no-restore - name: Run E2E Tests run: | dotnet test src/__Tests/E2E/GoldenSetDiff/StellaOps.E2E.GoldenSetDiff.csproj \ --logger "trx;LogFileName=e2e.trx" \ --results-directory ./TestResults - name: Upload Test Results uses: actions/upload-artifact@v4 if: always() with: name: e2e-test-results path: ./TestResults/*.trx count-golden-sets: name: Count and Report Golden Sets runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Count Golden Sets id: count run: | total=$(find src/__Tests/__Datasets/golden-sets -name "*.golden.yaml" | wc -l) openssl=$(find src/__Tests/__Datasets/golden-sets/openssl -name "*.golden.yaml" 2>/dev/null | wc -l) glibc=$(find src/__Tests/__Datasets/golden-sets/glibc -name "*.golden.yaml" 2>/dev/null | wc -l) curl=$(find src/__Tests/__Datasets/golden-sets/curl -name "*.golden.yaml" 2>/dev/null | wc -l) log4j=$(find src/__Tests/__Datasets/golden-sets/log4j -name "*.golden.yaml" 2>/dev/null | wc -l) synthetic=$(find src/__Tests/__Datasets/golden-sets/synthetic -name "*.golden.yaml" 2>/dev/null | wc -l) echo "Total: $total" echo "OpenSSL: $openssl" echo "glibc: $glibc" echo "curl: $curl" echo "Log4j: $log4j" echo "Synthetic: $synthetic" echo "total=$total" >> $GITHUB_OUTPUT if [ "$total" -lt 15 ]; then echo "::warning::Golden set corpus has fewer than 15 entries ($total)" fi - name: Report Summary run: | echo "## Golden Set Corpus Summary" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "| Component | Count |" >> $GITHUB_STEP_SUMMARY echo "|-----------|-------|" >> $GITHUB_STEP_SUMMARY echo "| OpenSSL | $(find src/__Tests/__Datasets/golden-sets/openssl -name '*.golden.yaml' 2>/dev/null | wc -l) |" >> $GITHUB_STEP_SUMMARY echo "| glibc | $(find src/__Tests/__Datasets/golden-sets/glibc -name '*.golden.yaml' 2>/dev/null | wc -l) |" >> $GITHUB_STEP_SUMMARY echo "| curl | $(find src/__Tests/__Datasets/golden-sets/curl -name '*.golden.yaml' 2>/dev/null | wc -l) |" >> $GITHUB_STEP_SUMMARY echo "| Log4j | $(find src/__Tests/__Datasets/golden-sets/log4j -name '*.golden.yaml' 2>/dev/null | wc -l) |" >> $GITHUB_STEP_SUMMARY echo "| Synthetic | $(find src/__Tests/__Datasets/golden-sets/synthetic -name '*.golden.yaml' 2>/dev/null | wc -l) |" >> $GITHUB_STEP_SUMMARY echo "| **Total** | **$(find src/__Tests/__Datasets/golden-sets -name '*.golden.yaml' | wc -l)** |" >> $GITHUB_STEP_SUMMARY