Skip to content

Step 20d/23 (Phase 6): Testing — Add e2e scripts + CI matrix (all platforms) #167

Description

@Jordan231111

Summary

Create end-to-end test scripts that exercise the compiled binary through a full user workflow, and update CI to run all tests on a platform matrix.

Depends On: Steps 20a-20c (unit + integration tests)
Parent Issue: #16 (Comprehensive Testing)

Key Changes

  1. Create `tests/e2e_test.sh` (Linux/macOS):
    • Build the binary
    • Run `hash` on a known file, verify output
    • Run `scan` on a clean directory, verify exit 0
    • Create EICAR test file, scan, verify detection + exit 2
    • Run `quarantine-file` on detected file, verify it moves
    • Run `list-quarantined`, verify it appears
    • Run `restore`, verify file returns
    • Clean up
  2. Create `tests/e2e_test.ps1` (Windows) — equivalent workflow in PowerShell
  3. Update `.github/workflows/` CI to:
    • Run on matrix: ubuntu-latest, macos-latest, windows-latest
    • Steps: fmt check → clippy → unit tests → integration tests → doc tests → e2e script
    • Run ignored tests explicitly: `cargo test -- --ignored`
  4. Ensure `cargo audit` runs in CI

Acceptance Criteria

  • E2E script tests the full scan → quarantine → restore workflow
  • E2E script works on Linux/macOS (bash) and Windows (PowerShell)
  • CI matrix runs on ubuntu-latest, macos-latest, windows-latest
  • CI runs: fmt, clippy, test (normal + ignored), doc tests, e2e
  • `cargo audit` runs in CI
  • EICAR detection is verified end-to-end in e2e script
  • All CI checks pass on all three platforms

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:ciCI / tooling / lintersarea:testsUnit/integration/e2e testingdifficulty:intermediateModerate complexityphase:6-polish-releasePolish, docs, testing, release (Steps 17–23)priority:p1Important but not blockingtrack:post-mvpDeferred until after the MVP demo; still aligned with the 2026 plan end goals

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions