From 71742dfb54d9fddd5c7db2a8806979e7aeb44a33 Mon Sep 17 00:00:00 2001 From: Jonathan Machen Date: Thu, 15 Jan 2026 15:56:17 +0100 Subject: [PATCH 1/5] Update CI workflow to specify stable Rust toolchain - Added configuration to use the stable Rust toolchain in the CI workflow for all jobs. - Ensured consistent environment setup across different CI jobs. --- .github/workflows/ci.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b7761b4..b63c977 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,6 +33,8 @@ jobs: steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master + with: + toolchain: stable - name: Install cargo-tarpaulin run: cargo install cargo-tarpaulin - name: Run coverage @@ -53,6 +55,8 @@ jobs: steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master + with: + toolchain: stable - name: Build release run: cargo build --release --verbose @@ -62,6 +66,8 @@ jobs: steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master + with: + toolchain: stable - name: Check package run: cargo package --allow-dirty - name: Check publish From fc8d85cf4205c72171989d02708e35369d0e81ba Mon Sep 17 00:00:00 2001 From: Jonathan Machen Date: Thu, 15 Jan 2026 16:06:07 +0100 Subject: [PATCH 2/5] Update CI workflow to consistently use stable Rust toolchain - Changed the Rust toolchain specification from `master` to `stable` across all CI jobs. - Ensured that the `cargo publish` command allows dirty packages for better flexibility during checks. --- .github/workflows/ci.yml | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b63c977..98f6756 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,9 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@master - with: - toolchain: stable + - uses: dtolnay/rust-toolchain@stable - name: Install cargo-tarpaulin run: cargo install cargo-tarpaulin - name: Run coverage @@ -54,9 +52,7 @@ jobs: os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@master - with: - toolchain: stable + - uses: dtolnay/rust-toolchain@stable - name: Build release run: cargo build --release --verbose @@ -65,13 +61,11 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@master - with: - toolchain: stable + - uses: dtolnay/rust-toolchain@stable - name: Check package run: cargo package --allow-dirty - name: Check publish - run: cargo publish --dry-run + run: cargo publish --dry-run --allow-dirty release: name: Release @@ -99,9 +93,8 @@ jobs: asset_name: rpg-windows-x86_64.exe steps: - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@master + - uses: dtolnay/rust-toolchain@stable with: - toolchain: stable targets: ${{ matrix.target }} - name: Build release binary run: cargo build --release --target ${{ matrix.target }} From 8eece57353a98970f64f5699b09a30f749a64869 Mon Sep 17 00:00:00 2001 From: Jonathan Machen Date: Thu, 15 Jan 2026 16:12:04 +0100 Subject: [PATCH 3/5] Refactor CI workflow for improved code coverage and publish checks - Consolidated code coverage steps into a single job with conditional execution based on OS and Rust version. - Streamlined publish check steps to only run on Ubuntu, allowing for dirty packages during checks. - Enhanced overall clarity and maintainability of the CI configuration. --- .github/workflows/ci.yml | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 98f6756..904f2d1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,18 +26,13 @@ jobs: run: cargo clippy -- -D warnings - name: Check formatting run: cargo fmt -- --check - - coverage: - name: Code Coverage - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - name: Install cargo-tarpaulin - run: cargo install cargo-tarpaulin - - name: Run coverage - run: cargo tarpaulin --out Xml --output-dir coverage + - name: Code coverage + if: matrix.os == 'ubuntu-latest' && matrix.rust == 'stable' + run: | + cargo install cargo-tarpaulin + cargo tarpaulin --out Xml --output-dir coverage - name: Upload to codecov + if: matrix.os == 'ubuntu-latest' && matrix.rust == 'stable' uses: codecov/codecov-action@v4 with: files: ./coverage/cobertura.xml @@ -55,16 +50,11 @@ jobs: - uses: dtolnay/rust-toolchain@stable - name: Build release run: cargo build --release --verbose - - publish-check: - name: Publish Check - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - name: Check package + if: matrix.os == 'ubuntu-latest' run: cargo package --allow-dirty - name: Check publish + if: matrix.os == 'ubuntu-latest' run: cargo publish --dry-run --allow-dirty release: From 548074304a45498644d55f03840f76917383f2c3 Mon Sep 17 00:00:00 2001 From: Jonathan Machen Date: Thu, 15 Jan 2026 16:17:36 +0100 Subject: [PATCH 4/5] Fix integration tests to use CARGO_BIN_EXE_rpg --- tests/integration_test.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/integration_test.rs b/tests/integration_test.rs index 7cc4775..08f2c0e 100644 --- a/tests/integration_test.rs +++ b/tests/integration_test.rs @@ -2,7 +2,7 @@ use std::process::Command; #[test] fn test_basic_generation() { - let output = Command::new("./target/release/rpg") + let output = Command::new(env!("CARGO_BIN_EXE_rpg")) .args(&["3", "--quiet"]) .output() .expect("Failed to execute command"); @@ -21,7 +21,7 @@ fn test_basic_generation() { #[test] fn test_length_option() { - let output = Command::new("./target/release/rpg") + let output = Command::new(env!("CARGO_BIN_EXE_rpg")) .args(&["1", "--length", "20", "--quiet"]) .output() .expect("Failed to execute command"); @@ -55,12 +55,12 @@ fn test_length_option() { #[test] fn test_seed_reproducibility() { - let output1 = Command::new("./target/release/rpg") + let output1 = Command::new(env!("CARGO_BIN_EXE_rpg")) .args(&["1", "--seed", "12345", "--quiet"]) .output() .expect("Failed to execute command"); - let output2 = Command::new("./target/release/rpg") + let output2 = Command::new(env!("CARGO_BIN_EXE_rpg")) .args(&["1", "--seed", "12345", "--quiet"]) .output() .expect("Failed to execute command"); From 62609c39a5caf8e2e1c7cbb273bdf4750e4ef7a2 Mon Sep 17 00:00:00 2001 From: Jonathan Machen Date: Thu, 15 Jan 2026 16:21:55 +0100 Subject: [PATCH 5/5] Add clippy and rustfmt components to test toolchain --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 904f2d1..c26966d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -20,6 +20,7 @@ jobs: - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.rust }} + components: clippy, rustfmt - name: Run tests run: cargo test --verbose - name: Run clippy