diff --git a/.github/workflows/insanity-check.yml b/.github/workflows/insanity-check.yml new file mode 100644 index 0000000..5b0d636 --- /dev/null +++ b/.github/workflows/insanity-check.yml @@ -0,0 +1,23 @@ +name: Insanity Check + +on: + pull_request: + workflow_dispatch: + +jobs: + clippy: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + components: clippy + + - name: Cache Rust build state + uses: Swatinem/rust-cache@v2 + + - name: Run clippy through Makefile + run: make check diff --git a/.github/workflows/integration-tests.yml b/.github/workflows/integration-tests.yml new file mode 100644 index 0000000..704fbbd --- /dev/null +++ b/.github/workflows/integration-tests.yml @@ -0,0 +1,26 @@ +name: Integration Tests + +on: + pull_request: + workflow_dispatch: + +jobs: + integration: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + components: clippy + + - name: Install cargo-nextest + uses: taiki-e/install-action@nextest + + - name: Cache Rust build state + uses: Swatinem/rust-cache@v2 + + - name: Run integration tests + run: make test-integration diff --git a/.github/workflows/it-is-alive.yml b/.github/workflows/it-is-alive.yml new file mode 100644 index 0000000..9318c88 --- /dev/null +++ b/.github/workflows/it-is-alive.yml @@ -0,0 +1,21 @@ +name: It is alive! + +on: + pull_request: + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + + - name: Cache Rust build state + uses: Swatinem/rust-cache@v2 + + - name: Build release binaries + run: make diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml new file mode 100644 index 0000000..7805b2d --- /dev/null +++ b/.github/workflows/unit-tests.yml @@ -0,0 +1,26 @@ +name: Unit Tests + +on: + pull_request: + workflow_dispatch: + +jobs: + unit: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + with: + components: clippy + + - name: Install cargo-nextest + uses: taiki-e/install-action@nextest + + - name: Cache Rust build state + uses: Swatinem/rust-cache@v2 + + - name: Run unit tests + run: make test-unit diff --git a/Makefile b/Makefile index 089f632..6b746e8 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: build dev devel check fix test test-all test-integration setup clean stats arm-devel arm x86-devel x86 setup-arm setup-x86 demo man +.PHONY: build dev devel check fix test test-unit test-all test-integration setup clean stats arm-devel arm x86-devel x86 setup-arm setup-x86 demo man DEFAULT_TARGET := build ARM_TARGET ?= aarch64-unknown-linux-musl @@ -27,6 +27,15 @@ test: setup cargo test $(CORE_WORKSPACE); \ fi +test-unit: setup + @if command -v cargo-nextest >/dev/null 2>&1; then \ + cargo nextest run -p logjet --lib -p logjetd --bins; \ + else \ + echo "cargo-nextest not available, falling back to cargo test unit-only targets"; \ + cargo test -p logjet --lib; \ + cargo test -p logjetd --bin logjetd; \ + fi + test-integration: setup @if command -v cargo-nextest >/dev/null 2>&1; then \ cargo nextest run -p logjetd --test bridge_flows; \