name: Run Tests on: push: branches: - main - develop - 'feature/**' pull_request: jobs: test-server: name: Test Server runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable target: x86_64-unknown-linux-gnu components: rustfmt, clippy - name: Cache Cargo dependencies uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-test-${{ hashFiles('server/Cargo.lock') }} - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y pkg-config libssl-dev protobuf-compiler - name: Run unit tests run: | cd server cargo test --lib --release - name: Run integration tests run: | cd server cargo test --test '*' --release - name: Run doc tests run: | cd server cargo test --doc --release test-agent: name: Test Agent runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable - name: Run agent tests run: | cd agent cargo test --release code-coverage: name: Code Coverage runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable components: llvm-tools-preview - name: Install tarpaulin run: cargo install cargo-tarpaulin - name: Generate coverage report run: | cd server cargo tarpaulin --out Xml --output-dir ../coverage - name: Upload coverage to artifact uses: actions/upload-artifact@v3 with: name: coverage-report path: coverage/ lint: name: Lint and Format Check runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable components: rustfmt, clippy - name: Check formatting (server) run: cd server && cargo fmt --all -- --check - name: Check formatting (agent) run: cd agent && cargo fmt --all -- --check - name: Run clippy (server) run: cd server && cargo clippy --all-targets --all-features -- -D warnings - name: Run clippy (agent) run: cd agent && cargo clippy --all-targets --all-features -- -D warnings