name: Test Suite on: push: branches: [main, develop] pull_request: branches: [main] env: CARGO_TERM_COLOR: always RUST_BACKTRACE: 1 ENGRAM_TEST_MOCK_EMBEDDINGS: "1" jobs: unit-tests: name: Unit Tests runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: cargo test --workspace --lib mcp-tests: name: MCP E2E Tests runs-on: ubuntu-latest timeout-minutes: 20 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: cargo build --release --package engram-mcp - run: cargo test --package engram-e2e --test mcp_protocol -- --test-threads=1 cognitive-tests: name: Cognitive Science Tests runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: cargo test --package engram-e2e --test cognitive -- --test-threads=1 journey-tests: name: User Journey Tests runs-on: ubuntu-latest timeout-minutes: 30 needs: [unit-tests] steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: cargo test --package engram-e2e --test journeys -- --test-threads=1 extreme-tests: name: Extreme Validation Tests runs-on: ubuntu-latest timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: cargo test --package engram-e2e --test extreme -- --test-threads=1 benchmarks: name: Performance Benchmarks runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - run: cargo bench --package engram-e2e - uses: benchmark-action/github-action-benchmark@v1 with: tool: 'cargo' alert-threshold: '150%' comment-on-alert: true coverage: name: Code Coverage runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: llvm-tools-preview - uses: taiki-e/install-action@cargo-llvm-cov - run: cargo llvm-cov --workspace --lcov --output-path lcov.info - uses: codecov/codecov-action@v3 with: files: lcov.info