From 354cb7d8c5748130afed20ca8dce833c5e9e9934 Mon Sep 17 00:00:00 2001 From: Cameron Garnham Date: Thu, 3 Aug 2023 10:33:03 +0100 Subject: [PATCH] ci: overhaul testing workflow --- .github/workflows/develop.yml | 34 --------- .github/workflows/testing.yaml | 126 +++++++++++++++++++++++++++++++++ README.md | 2 +- project-words.txt | 3 + 4 files changed, 130 insertions(+), 35 deletions(-) delete mode 100644 .github/workflows/develop.yml create mode 100644 .github/workflows/testing.yaml diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml deleted file mode 100644 index 1558176f..00000000 --- a/.github/workflows/develop.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: Development Checks - -on: [push, pull_request] - -jobs: - run: - runs-on: ubuntu-latest - env: - CARGO_TERM_COLOR: always - steps: - - uses: actions/checkout@v3 - - uses: dtolnay/rust-toolchain@nightly - with: - components: rustfmt, clippy - - uses: Swatinem/rust-cache@v2 - - name: Format - run: cargo fmt --all --check - - name: Check - run: cargo check --all-targets - - name: Clippy - run: cargo clippy --version && cargo clippy --all-targets -- -D clippy::pedantic - env: - CARGO_INCREMENTAL: 0 - - name: Install torrent edition tool (needed for testing) - run: cargo install imdl - - name: Unit and integration tests - run: cargo test --all-targets - - uses: taiki-e/install-action@cargo-llvm-cov - - uses: taiki-e/install-action@nextest - - name: Test Coverage - run: cargo llvm-cov nextest - - name: E2E Tests - run: ./docker/bin/e2e/run-e2e-tests.sh - diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml new file mode 100644 index 00000000..beaf0754 --- /dev/null +++ b/.github/workflows/testing.yaml @@ -0,0 +1,126 @@ +name: Testing + +on: + push: + pull_request: + +env: + CARGO_TERM_COLOR: always + +jobs: + format: + name: Formatting + runs-on: ubuntu-latest + + steps: + - id: checkout + name: Checkout Repository + uses: actions/checkout@v3 + + - id: setup + name: Setup Toolchain + uses: dtolnay/rust-toolchain@stable + with: + toolchain: nightly + components: rustfmt + + - id: cache + name: Enable Workflow Cache + uses: Swatinem/rust-cache@v2 + + - id: format + name: Run Formatting-Checks + run: cargo fmt --check + + check: + name: Static Analysis + runs-on: ubuntu-latest + needs: format + + strategy: + matrix: + toolchain: [stable, nightly] + + steps: + - id: checkout + name: Checkout Repository + uses: actions/checkout@v3 + + - id: setup + name: Setup Toolchain + uses: dtolnay/rust-toolchain@stable + with: + toolchain: nightly + components: clippy + + - id: cache + name: Enable Workflow Cache + uses: Swatinem/rust-cache@v2 + + - id: check + name: Run Build Checks + run: cargo check --tests --benches --examples --workspace --all-targets --all-features + + - id: lint + name: Run Lint Checks + run: cargo clippy --tests --benches --examples --workspace --all-targets --all-features -- -D clippy::correctness -D clippy::suspicious -D clippy::complexity -D clippy::perf -D clippy::style -D clippy::pedantic + + - id: doc + name: Run Documentation Checks + run: cargo test --doc + + unit: + name: Units + runs-on: ubuntu-latest + needs: check + + strategy: + matrix: + toolchain: [stable, nightly] + + steps: + - id: checkout + name: Checkout Repository + uses: actions/checkout@v3 + + - id: setup + name: Setup Toolchain + uses: dtolnay/rust-toolchain@stable + with: + toolchain: ${{ matrix.toolchain }} + components: llvm-tools-preview + + - id: cache + name: Enable Job Cache + uses: Swatinem/rust-cache@v2 + + - id: tools + name: Install Tools + uses: taiki-e/install-action@v2 + with: + tool: cargo-llvm-cov, cargo-nextest + + - id: imdl + name: Install Intermodal + run: cargo install imdl + + - id: test + name: Run Unit Tests + run: cargo test --tests --benches --examples --workspace --all-targets --all-features + + - id: coverage + name: Generate Coverage Report + run: cargo llvm-cov nextest --tests --benches --examples --workspace --all-targets --all-features + + integration: + name: Integrations + runs-on: ubuntu-latest + + steps: + - id: checkout + name: Checkout Repository + uses: actions/checkout@v3 + + - id: test + name: Run Integration Tests + run: ./docker/bin/e2e/run-e2e-tests.sh diff --git a/README.md b/README.md index 7067293c..f2a878d5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Torrust Index Backend -[![Development Checks](https://github.com/torrust/torrust-index-backend/actions/workflows/develop.yml/badge.svg)](https://github.com/torrust/torrust-index-backend/actions/workflows/develop.yml) [![Publish crate](https://github.com/torrust/torrust-index-backend/actions/workflows/publish_crate.yml/badge.svg)](https://github.com/torrust/torrust-index-backend/actions/workflows/publish_crate.yml) [![Publish Docker Image](https://github.com/torrust/torrust-index-backend/actions/workflows/publish_docker_image.yml/badge.svg)](https://github.com/torrust/torrust-index-backend/actions/workflows/publish_docker_image.yml) [![Publish Github Release](https://github.com/torrust/torrust-index-backend/actions/workflows/release.yml/badge.svg)](https://github.com/torrust/torrust-index-backend/actions/workflows/release.yml) [![Test Docker build](https://github.com/torrust/torrust-index-backend/actions/workflows/test_docker.yml/badge.svg)](https://github.com/torrust/torrust-index-backend/actions/workflows/test_docker.yml) +[![Testing](https://github.com/torrust/torrust-index-backend/actions/workflows/testing.yaml/badge.svg)](https://github.com/torrust/torrust-index-backend/actions/workflows/testing.yaml) [![Publish crate](https://github.com/torrust/torrust-index-backend/actions/workflows/publish_crate.yml/badge.svg)](https://github.com/torrust/torrust-index-backend/actions/workflows/publish_crate.yml) [![Publish Docker Image](https://github.com/torrust/torrust-index-backend/actions/workflows/publish_docker_image.yml/badge.svg)](https://github.com/torrust/torrust-index-backend/actions/workflows/publish_docker_image.yml) [![Publish Github Release](https://github.com/torrust/torrust-index-backend/actions/workflows/release.yml/badge.svg)](https://github.com/torrust/torrust-index-backend/actions/workflows/release.yml) [![Test Docker build](https://github.com/torrust/torrust-index-backend/actions/workflows/test_docker.yml/badge.svg)](https://github.com/torrust/torrust-index-backend/actions/workflows/test_docker.yml) This repository serves as the backend for the [Torrust Index](https://github.com/torrust/torrust-index) project, which implements the [Torrust Index Application Interface](https://github.com/torrust/torrust-index-api-lib). diff --git a/project-words.txt b/project-words.txt index 31530f59..a890960f 100644 --- a/project-words.txt +++ b/project-words.txt @@ -8,6 +8,7 @@ Benoit binascii btih chrono +clippy codecov codegen compatiblelicenses @@ -45,6 +46,7 @@ mandelbrotset metainfo nanos NCCA +nextest nilm nocapture Oberhachingerstr @@ -57,6 +59,7 @@ ROADMAP rowid RUSTDOCFLAGS RUSTFLAGS +rustfmt sgxj singlepart sqlx