Sprints completed: - SPRINT_20260110_012_* (golden set diff layer - 10 sprints) - SPRINT_20260110_013_* (advisory chat - 4 sprints) Build fixes applied: - Fix namespace conflicts with Microsoft.Extensions.Options.Options.Create - Fix VexDecisionReachabilityIntegrationTests API drift (major rewrite) - Fix VexSchemaValidationTests FluentAssertions method name - Fix FixChainGateIntegrationTests ambiguous type references - Fix AdvisoryAI test files required properties and namespace aliases - Add stub types for CveMappingController (ICveSymbolMappingService) - Fix VerdictBuilderService static context issue Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
141 lines
5.5 KiB
YAML
141 lines
5.5 KiB
YAML
# 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
|