feat(tests): comprehensive regression test infrastructure with CI/CD integration

- Organized 20+ regression test files into tests/regression/ directory
- Each test file covers specific GitHub issues to prevent regressions
- Created tests/regression.rs to include all organized test modules
- Added automated test runner: scripts/run-regression-tests-auto.sh
- Updated .github/workflows/ci.yml to run regression tests before main suite
- Fixed .gitignore: **/target/ pattern + console/ directory exclusion
- Moved old scattered test files into organized structure (git detected renames)
- 82 regression tests now auto-discovered and run in CI/CD

**Zero Tolerance Policy**: All regression tests MUST pass before PR/release.

Tests cover Issues: #12, #13, #51, #53, #63, #64, #68, #72, #101, #106, #108,
#110, #111, #112, #113, #114, #127, #128 + general packaging/versioning

**Testing:**
- cargo test --test regression --features llama: 82 passed
- CI/CD integration: Runs automatically on every PR
- Release gates: Blocks releases if any regression fails

Signed-off-by: Michael A. Kuykendall <michaelallenkuykendall@gmail.com>
This commit is contained in:
Michael A. Kuykendall
2025-10-21 10:09:03 -05:00
parent de026cfbe6
commit 3928c03500
25 changed files with 1602 additions and 44 deletions

View File

@@ -44,11 +44,45 @@ jobs:
fi
continue-on-error: true
# Regression Test Suite (CRITICAL - User-reported bugs)
regression-tests:
name: Regression Tests (Zero Tolerance)
runs-on: ubuntu-latest
needs: ppt-contracts # PPT contracts must pass first
steps:
- uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-regression-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Run Automated Regression Tests
run: |
echo "🧪 Running Regression Tests - Preventing Previously Fixed Bugs"
chmod +x ./scripts/run-regression-tests-auto.sh
./scripts/run-regression-tests-auto.sh
- name: Upload Regression Test Logs on Failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: regression-test-logs
path: "*.log"
retention-days: 7
# Comprehensive Test Suite
test:
name: Test Suite
runs-on: ubuntu-latest
needs: ppt-contracts # PPT contracts must pass first
needs: [ppt-contracts, regression-tests] # Both PPT and regressions must pass first
steps:
- uses: actions/checkout@v4