diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b3bc226..903751d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,71 +9,130 @@ permissions: contents: write jobs: + check: + name: Check + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 + + - name: Cache cargo registry + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 + with: + path: ~/.cargo/registry + key: ${{ runner.os }}-${{ matrix.target }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + + - name: Cache cargo index + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 + with: + path: ~/.cargo/git + key: ${{ runner.os }}-${{ matrix.target }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} + + - name: Cache cargo build + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 + with: + path: target + key: ${{ runner.os }}-${{ matrix.target }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + + - name: Install required tools + uses: jdx/mise-action@e3d7b8d67a7958d1207f6ed871e83b1ea780e7b0 # v3.3.1 + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt, clippy + + - name: Check formatting + run: cargo fmt --check + + - name: Run clippy + run: cargo clippy --all-targets --all-features -- -D warnings + + - name: Run tests + run: cargo nextest run --profile ci + build-release-artifacts: name: Build release artifacts + needs: check runs-on: ${{ matrix.os }} strategy: matrix: include: - os: ubuntu-latest target: x86_64-unknown-linux-gnu + use-cross: false - os: ubuntu-latest target: aarch64-unknown-linux-gnu + use-cross: true - os: macos-latest target: x86_64-apple-darwin + use-cross: false - os: macos-latest target: aarch64-apple-darwin + use-cross: false + - os: windows-latest + target: x86_64-pc-windows-msvc + use-cross: false steps: - name: Checkout code uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - name: Install required tools - uses: jdx/mise-action@e3d7b8d67a7958d1207f6ed871e83b1ea780e7b0 # v3.3.1 - - name: Cache cargo registry uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: ~/.cargo/registry - key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-${{ matrix.target }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo index uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: ~/.cargo/git - key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-${{ matrix.target }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo build uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: target - key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + key: ${{ runner.os }}-${{ matrix.target }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - name: Install ${{ matrix.target }} toolchain uses: dtolnay/rust-toolchain@stable with: targets: ${{ matrix.target }} - - name: Install cross-compilation tools - if: matrix.target == 'aarch64-unknown-linux-gnu' - run: | - sudo apt-get update - sudo apt-get install -y gcc-aarch64-linux-gnu - - - name: Check formatting - run: cargo fmt --check + - name: Install cross + if: matrix.use-cross + run: cargo install cross --git https://github.com/cross-rs/cross - - name: Run clippy - run: cargo clippy -- -D warnings + - name: Build release binary + run: | + if [ "${{ matrix.use-cross }}" == "true" ]; then + cross build --release --locked --target ${{ matrix.target }} + else + cargo build --release --locked --target ${{ matrix.target }} + fi + shell: bash - - name: Run tests - run: cargo nextest run --profile ci --target ${{ matrix.target }} + - name: Prepare binary (Unix) + if: runner.os != 'Windows' + run: | + cd target/${{ matrix.target }}/release + mv mk mk-0.5.4-${{ matrix.target }} - - name: Build release binary + - name: Prepare binary (Windows) + if: runner.os == 'Windows' run: | - cargo build --release --locked --target ${{ matrix.target }} - mv target/${{ matrix.target }}/release/mk target/${{ matrix.target }}/release/mk-${GITHUB_REF_NAME#v}-${{ matrix.target }} + cd target/${{ matrix.target }}/release + mv mk.exe mk-0.5.4-${{ matrix.target }}.exe + shell: bash - name: Upload Release Artifact env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: gh release upload ${{ github.ref_name }} ./target/${{ matrix.target }}/release/mk-${GITHUB_REF_NAME#v}-${{ matrix.target }} + run: | + if [ "${{ runner.os }}" == "Windows" ]; then + gh release upload v0.5.4 ./target/${{ matrix.target }}/release/mk-0.5.4-${{ matrix.target }}.exe + else + gh release upload v0.5.4 ./target/${{ matrix.target }}/release/mk-0.5.4-${{ matrix.target }} + fi + shell: bash diff --git a/Cargo.toml b/Cargo.toml index 6a55894..605954d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,6 +44,3 @@ serial_test = "=3.2.0" strip = true lto = true codegen-units = 1 - -[target.aarch64-unknown-linux-gnu] -linker = "aarch64-linux-gnu-gcc" diff --git a/mise.toml b/mise.toml index ba43051..ddd42eb 100644 --- a/mise.toml +++ b/mise.toml @@ -18,7 +18,7 @@ run = "cargo build --release --locked" run = "cargo install --path . --force" [tasks.test] -run = "cargo clippy -- -D warnings && cargo nextest run" +run = "cargo clippy --all-targets --all-features -- -D warnings && cargo nextest run" [tasks.coverage] run = "cargo tarpaulin --out Html" diff --git a/tests/ansible_tests.rs b/tests/ansible_tests.rs index f389259..2d9cff6 100644 --- a/tests/ansible_tests.rs +++ b/tests/ansible_tests.rs @@ -26,7 +26,7 @@ fn create_ansible_project(temp_dir: &TempDir, env: &str) -> String { fs::write( inventories_dir.join(format!("{}.yml", env)), - format!("all:\\n hosts:\\n server1:\\n ansible_host: 10.0.0.1\\n"), + "all:\\n hosts:\\n server1:\\n ansible_host: 10.0.0.1\\n", ) .unwrap(); @@ -49,7 +49,7 @@ fn test_ansible_list_command() { Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["list", ".", "dev"]) + .args(["list", ".", "dev"]) .assert() .success(); } @@ -70,7 +70,7 @@ fn test_ansible_list_with_environment() { let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["list", ".", "dev"]) + .args(["list", ".", "dev"]) .output() .unwrap(); @@ -85,7 +85,7 @@ fn test_ansible_list_invalid_environment() { Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["list", ".", "nonexistent"]) + .args(["list", ".", "nonexistent"]) .assert() .failure() .stderr(predicate::str::contains("not found").or(predicate::str::contains("Invalid"))); @@ -99,7 +99,7 @@ fn test_ansible_list_shows_command() { let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["list", ".", "dev"]) + .args(["list", ".", "dev"]) .output() .unwrap(); @@ -118,7 +118,7 @@ fn test_ansible_apply_command() { let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["apply", ".", "dev"]) + .args(["apply", ".", "dev"]) .output() .unwrap(); @@ -139,7 +139,7 @@ fn test_ansible_apply_with_check_option() { let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["apply", ".", "dev", "--", "--check"]) + .args(["apply", ".", "dev", "--", "--check"]) .output() .unwrap(); @@ -161,7 +161,7 @@ fn test_ansible_not_in_ansible_directory() { Command::cargo_bin("mk") .unwrap() .current_dir(temp_dir.path()) - .args(&["list", ".", "dev"]) + .args(["list", ".", "dev"]) .assert() .failure() .stderr( @@ -190,7 +190,7 @@ fn test_ansible_multiple_environments_available() { let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["list", ".", "dev"]) + .args(["list", ".", "dev"]) .output() .unwrap(); diff --git a/tests/bump_tests.rs b/tests/bump_tests.rs index 8fa15cf..7c8ebff 100644 --- a/tests/bump_tests.rs +++ b/tests/bump_tests.rs @@ -186,7 +186,7 @@ resource "google_compute_network" "vpc" { // Run bump command let mut cmd = Command::cargo_bin("mk").unwrap(); - cmd.current_dir(&project_dir) + cmd.current_dir(project_dir) .arg("bump") .arg(".") .arg("--verbose"); diff --git a/tests/cli_tests.rs b/tests/cli_tests.rs index a2e3163..d4bc36d 100644 --- a/tests/cli_tests.rs +++ b/tests/cli_tests.rs @@ -139,7 +139,7 @@ fn test_terraform_detection() { Command::cargo_bin("mk") .unwrap() - .args(&["check", &project_path, "dev"]) + .args(["check", &project_path, "dev"]) .assert() .stderr(predicate::str::contains("Detected terraform")); } @@ -151,7 +151,7 @@ fn test_helm_detection() { Command::cargo_bin("mk") .unwrap() - .args(&["template", &project_path, "dev"]) + .args(["template", &project_path, "dev"]) .assert() .stderr(predicate::str::contains("Detected helm")); } @@ -163,7 +163,7 @@ fn test_kustomize_detection() { Command::cargo_bin("mk") .unwrap() - .args(&["template", &project_path, "dev"]) + .args(["template", &project_path, "dev"]) .assert() .stderr(predicate::str::contains("Detected kustomize")); } @@ -175,7 +175,7 @@ fn test_ansible_detection() { Command::cargo_bin("mk") .unwrap() - .args(&["check", &project_path, "dev"]) + .args(["check", &project_path, "dev"]) .assert() .stderr(predicate::str::contains("Detected ansible")); } @@ -187,7 +187,7 @@ fn test_invalid_environment() { Command::cargo_bin("mk") .unwrap() - .args(&["check", &project_path, "invalid-env"]) + .args(["check", &project_path, "invalid-env"]) .assert() .failure() .stderr(predicate::str::contains("Invalid env")); @@ -200,7 +200,7 @@ fn test_valid_environment_accepted() { Command::cargo_bin("mk") .unwrap() - .args(&["check", &project_path, "dev"]) + .args(["check", &project_path, "dev"]) .assert() .stderr(predicate::str::contains("Invalid env").not()); } @@ -209,7 +209,7 @@ fn test_valid_environment_accepted() { fn test_nonexistent_path() { Command::cargo_bin("mk") .unwrap() - .args(&["check", "/nonexistent/path/12345", "dev"]) + .args(["check", "/nonexistent/path/12345", "dev"]) .assert() .failure() .stderr( @@ -227,7 +227,7 @@ fn test_terraform_check_command_generation() { // but we can check that the correct command is generated let output = Command::cargo_bin("mk") .unwrap() - .args(&["check", &project_path, "dev"]) + .args(["check", &project_path, "dev"]) .output() .unwrap(); @@ -242,7 +242,7 @@ fn test_helm_template_command_generation() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["template", &project_path, "dev"]) + .args(["template", &project_path, "dev"]) .output() .unwrap(); @@ -257,7 +257,7 @@ fn test_kustomize_template_command_generation() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["template", &project_path, "dev"]) + .args(["template", &project_path, "dev"]) .output() .unwrap(); @@ -272,7 +272,7 @@ fn test_ansible_check_command_generation() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["check", &project_path, "dev"]) + .args(["check", &project_path, "dev"]) .output() .unwrap(); @@ -287,7 +287,7 @@ fn test_verbose_flag() { Command::cargo_bin("mk") .unwrap() - .args(&["--verbose", "check", &project_path, "dev"]) + .args(["--verbose", "check", &project_path, "dev"]) .assert() .stderr(predicate::str::contains("Detected terraform")); } @@ -300,14 +300,14 @@ fn test_multiple_environments_available() { // Test with dev Command::cargo_bin("mk") .unwrap() - .args(&["check", &project_path, "dev"]) + .args(["check", &project_path, "dev"]) .assert() .stderr(predicate::str::contains("Invalid env").not()); // Test with prod Command::cargo_bin("mk") .unwrap() - .args(&["check", &project_path, "prod"]) + .args(["check", &project_path, "prod"]) .assert() .stderr(predicate::str::contains("Invalid env").not()); } @@ -319,7 +319,7 @@ fn test_error_message_shows_valid_environments() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["check", &project_path, "staging"]) + .args(["check", &project_path, "staging"]) .output() .unwrap(); @@ -339,7 +339,7 @@ fn test_invalid_subcommand() { Command::cargo_bin("mk") .unwrap() - .args(&["invalid-action", &project_path, "dev"]) + .args(["invalid-action", &project_path, "dev"]) .assert() .failure() .stderr(predicate::str::contains("error")); diff --git a/tests/config_tests.rs b/tests/config_tests.rs index bb2b34b..d282e9f 100644 --- a/tests/config_tests.rs +++ b/tests/config_tests.rs @@ -49,7 +49,7 @@ auto_approve = false let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["plan", ".", "dev"]) + .args(["plan", ".", "dev"]) .output() .unwrap(); @@ -93,7 +93,7 @@ backend_vars = "custom-backend" let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_dir) - .args(&["plan", ".", "dev"]) + .args(["plan", ".", "dev"]) .output() .unwrap(); @@ -118,7 +118,7 @@ terraform = "apply" let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["plan", ".", "dev"]) + .args(["plan", ".", "dev"]) .output() .unwrap(); @@ -147,7 +147,7 @@ auto_approve = false let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["terraform", "--env", "dev"]) + .args(["terraform", "--env", "dev"]) .output() .unwrap(); @@ -173,7 +173,7 @@ exclude = ["vendor", "node_modules"] let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["terraform", "--env", "dev"]) + .args(["terraform", "--env", "dev"]) .output() .unwrap(); @@ -211,7 +211,7 @@ fn test_no_config_file_uses_defaults() { let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_dir) - .args(&["terraform", "--env", "dev"]) + .args(["terraform", "--env", "dev"]) .output() .unwrap(); @@ -236,7 +236,7 @@ verbose = true let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["plan", ".", "dev"]) + .args(["plan", ".", "dev"]) .output() .unwrap(); @@ -278,7 +278,7 @@ namespace = "custom-namespace" let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_dir) - .args(&["helm", "--env", "dev"]) + .args(["helm", "--env", "dev"]) .output() .unwrap(); @@ -330,7 +330,7 @@ vault_password_file = ".vault-pass" let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_dir) - .args(&["ansible", "list", "--env", "dev"]) + .args(["ansible", "list", "--env", "dev"]) .output() .unwrap(); @@ -355,7 +355,7 @@ verbose = true let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_path) - .args(&["terraform", "--env", "dev"]) + .args(["terraform", "--env", "dev"]) .output() .unwrap(); @@ -399,7 +399,7 @@ terraform = "plan" let output = Command::cargo_bin("mk") .unwrap() .current_dir(&project_dir) - .args(&["terraform", "--env", "dev"]) + .args(["terraform", "--env", "dev"]) .output() .unwrap(); diff --git a/tests/dependency_tests.rs b/tests/dependency_tests.rs index 4fa1d2f..1e54d9c 100644 --- a/tests/dependency_tests.rs +++ b/tests/dependency_tests.rs @@ -115,7 +115,7 @@ fn test_ansible_deps_command() { // Run deps command let output = Command::cargo_bin("mk") .unwrap() - .args(&["deps", &project_path, "dev"]) + .args(["deps", &project_path, "dev"]) .output() .unwrap(); @@ -148,7 +148,7 @@ fn test_ansible_check_without_deps_fails() { // Try to run check without installing dependencies first let output = Command::cargo_bin("mk") .unwrap() - .args(&["check", &project_path, "dev"]) + .args(["check", &project_path, "dev"]) .output() .unwrap(); @@ -178,14 +178,14 @@ fn test_ansible_check_after_deps_succeeds() { // First install dependencies Command::cargo_bin("mk") .unwrap() - .args(&["deps", &project_path, "dev"]) + .args(["deps", &project_path, "dev"]) .output() .unwrap(); // Now run check - should generate the command successfully let output = Command::cargo_bin("mk") .unwrap() - .args(&["check", &project_path, "dev"]) + .args(["check", &project_path, "dev"]) .output() .unwrap(); @@ -207,7 +207,7 @@ fn test_helm_deps_command() { // Run deps command let output = Command::cargo_bin("mk") .unwrap() - .args(&["deps", &project_path, "dev"]) + .args(["deps", &project_path, "dev"]) .output() .unwrap(); @@ -255,7 +255,7 @@ fn test_helm_template_auto_downloads_deps() { // Run template without explicitly running deps first let output = Command::cargo_bin("mk") .unwrap() - .args(&["template", &project_path, "dev"]) + .args(["template", &project_path, "dev"]) .output() .unwrap(); @@ -294,7 +294,7 @@ fn test_helm_template_after_deleting_charts() { // First run deps to download charts Command::cargo_bin("mk") .unwrap() - .args(&["deps", &project_path, "dev"]) + .args(["deps", &project_path, "dev"]) .output() .unwrap(); @@ -307,7 +307,7 @@ fn test_helm_template_after_deleting_charts() { // Now run template - should re-download let output = Command::cargo_bin("mk") .unwrap() - .args(&["template", &project_path, "dev"]) + .args(["template", &project_path, "dev"]) .output() .unwrap(); diff --git a/tests/drift_tests.rs b/tests/drift_tests.rs index ecd3a56..89e95fd 100644 --- a/tests/drift_tests.rs +++ b/tests/drift_tests.rs @@ -113,7 +113,7 @@ fn test_drift_command_requires_base_path() { fn test_drift_nonexistent_directory() { Command::cargo_bin("mk") .unwrap() - .args(&["drift", "/nonexistent/path/12345"]) + .args(["drift", "/nonexistent/path/12345"]) .assert() .failure(); } @@ -124,7 +124,7 @@ fn test_drift_empty_directory() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["drift", temp_dir.path().to_str().unwrap()]) + .args(["drift", temp_dir.path().to_str().unwrap()]) .output() .unwrap(); @@ -143,7 +143,7 @@ fn test_drift_detects_terraform_project() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["drift", temp_dir.path().to_str().unwrap()]) + .args(["drift", temp_dir.path().to_str().unwrap()]) .output() .unwrap(); @@ -161,7 +161,7 @@ fn test_drift_detects_helm_project() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["drift", temp_dir.path().to_str().unwrap()]) + .args(["drift", temp_dir.path().to_str().unwrap()]) .output() .unwrap(); @@ -180,7 +180,7 @@ fn test_drift_with_tech_filter_terraform() { let output = Command::cargo_bin("mk") .unwrap() - .args(&[ + .args([ "drift", temp_dir.path().to_str().unwrap(), "--tech", @@ -202,7 +202,7 @@ fn test_drift_with_tech_filter_helm() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["drift", temp_dir.path().to_str().unwrap(), "--tech", "helm"]) + .args(["drift", temp_dir.path().to_str().unwrap(), "--tech", "helm"]) .output() .unwrap(); @@ -237,7 +237,7 @@ fn test_drift_with_env_filter() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["drift", temp_dir.path().to_str().unwrap(), "--env", "dev"]) + .args(["drift", temp_dir.path().to_str().unwrap(), "--env", "dev"]) .output() .unwrap(); @@ -274,7 +274,7 @@ fn test_drift_with_max_depth() { // Test with max-depth that's too shallow let output = Command::cargo_bin("mk") .unwrap() - .args(&[ + .args([ "drift", temp_dir.path().to_str().unwrap(), "--max-depth", @@ -293,7 +293,7 @@ fn test_drift_with_max_depth() { // Test with max-depth that's deep enough let output = Command::cargo_bin("mk") .unwrap() - .args(&[ + .args([ "drift", temp_dir.path().to_str().unwrap(), "--max-depth", @@ -316,7 +316,7 @@ fn test_drift_verbose_flag() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["drift", temp_dir.path().to_str().unwrap(), "--verbose"]) + .args(["drift", temp_dir.path().to_str().unwrap(), "--verbose"]) .output() .unwrap(); @@ -332,7 +332,7 @@ fn test_drift_capture_flag_creates_log_dir() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["drift", temp_dir.path().to_str().unwrap(), "--capture"]) + .args(["drift", temp_dir.path().to_str().unwrap(), "--capture"]) .output() .unwrap(); @@ -367,7 +367,7 @@ fn test_drift_multiple_projects() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["drift", temp_dir.path().to_str().unwrap()]) + .args(["drift", temp_dir.path().to_str().unwrap()]) .output() .unwrap(); diff --git a/tests/duplicate_tests.rs b/tests/duplicate_tests.rs index 6b7a213..283cccf 100644 --- a/tests/duplicate_tests.rs +++ b/tests/duplicate_tests.rs @@ -71,7 +71,7 @@ fn test_terraform_duplicate_creates_files() { Command::cargo_bin("mk") .unwrap() - .args(&["duplicate", &project_path, "dev", "staging"]) + .args(["duplicate", &project_path, "dev", "staging"]) .assert() .success(); @@ -97,7 +97,7 @@ fn test_terraform_duplicate_replaces_content() { Command::cargo_bin("mk") .unwrap() - .args(&["duplicate", &project_path, "dev", "staging"]) + .args(["duplicate", &project_path, "dev", "staging"]) .assert() .success(); @@ -134,7 +134,7 @@ fn test_helm_duplicate_creates_directory() { Command::cargo_bin("mk") .unwrap() - .args(&["duplicate", &project_path, "dev", "staging"]) + .args(["duplicate", &project_path, "dev", "staging"]) .assert() .success(); @@ -154,7 +154,7 @@ fn test_helm_duplicate_replaces_content() { Command::cargo_bin("mk") .unwrap() - .args(&["duplicate", &project_path, "dev", "staging"]) + .args(["duplicate", &project_path, "dev", "staging"]) .assert() .success(); @@ -187,7 +187,7 @@ fn test_duplicate_with_nonexistent_source_env() { Command::cargo_bin("mk") .unwrap() - .args(&["duplicate", &project_path, "nonexistent", "staging"]) + .args(["duplicate", &project_path, "nonexistent", "staging"]) .assert() .failure() .stderr(predicate::str::contains("Invalid env")); @@ -202,14 +202,14 @@ fn test_duplicate_target_env_already_exists() { // First duplicate Command::cargo_bin("mk") .unwrap() - .args(&["duplicate", &project_path, "dev", "staging"]) + .args(["duplicate", &project_path, "dev", "staging"]) .assert() .success(); // Try to duplicate again to same target let result = Command::cargo_bin("mk") .unwrap() - .args(&["duplicate", &project_path, "dev", "staging"]) + .args(["duplicate", &project_path, "dev", "staging"]) .output() .unwrap(); @@ -231,7 +231,7 @@ fn test_duplicate_preserves_source_files() { Command::cargo_bin("mk") .unwrap() - .args(&["duplicate", &project_path, "dev", "staging"]) + .args(["duplicate", &project_path, "dev", "staging"]) .assert() .success(); @@ -271,7 +271,7 @@ fn test_duplicate_case_sensitive_replacement() { Command::cargo_bin("mk") .unwrap() - .args(&["duplicate", project_path, "dev", "staging"]) + .args(["duplicate", project_path, "dev", "staging"]) .assert() .success(); diff --git a/tests/recursive_bump_tests.rs b/tests/recursive_bump_tests.rs index 31f8a5c..2cac240 100644 --- a/tests/recursive_bump_tests.rs +++ b/tests/recursive_bump_tests.rs @@ -58,7 +58,7 @@ fn test_recursive_bump_finds_single_project() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) + .args(["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) .output() .unwrap(); @@ -79,7 +79,7 @@ fn test_recursive_bump_finds_multiple_projects() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) + .args(["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) .output() .unwrap(); @@ -100,7 +100,7 @@ fn test_recursive_bump_mixed_technologies() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) + .args(["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) .output() .unwrap(); @@ -125,7 +125,7 @@ fn test_recursive_bump_nested_projects() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) + .args(["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) .output() .unwrap(); @@ -143,7 +143,7 @@ fn test_recursive_bump_with_include_prereleases() { let output = Command::cargo_bin("mk") .unwrap() - .args(&[ + .args([ "bump", temp_dir.path().to_str().unwrap(), "--recursive", @@ -166,7 +166,7 @@ fn test_recursive_bump_empty_directory() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) + .args(["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) .output() .unwrap(); @@ -188,7 +188,7 @@ fn test_recursive_bump_shows_project_count() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) + .args(["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) .output() .unwrap(); @@ -220,7 +220,7 @@ fn test_recursive_bump_max_depth_default() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) + .args(["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) .output() .unwrap(); @@ -236,7 +236,7 @@ fn test_recursive_bump_max_depth_default() { fn test_recursive_bump_nonexistent_directory() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["bump", "/nonexistent/path/12345", "--recursive"]) + .args(["bump", "/nonexistent/path/12345", "--recursive"]) .output() .unwrap(); @@ -259,7 +259,7 @@ fn test_recursive_bump_with_verbose() { let output = Command::cargo_bin("mk") .unwrap() - .args(&[ + .args([ "bump", temp_dir.path().to_str().unwrap(), "--recursive", @@ -286,7 +286,7 @@ fn test_recursive_bump_same_dependency_cached() { let output = Command::cargo_bin("mk") .unwrap() - .args(&[ + .args([ "bump", temp_dir.path().to_str().unwrap(), "--recursive", @@ -315,7 +315,7 @@ fn test_recursive_bump_reports_up_to_date() { let output = Command::cargo_bin("mk") .unwrap() - .args(&["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) + .args(["bump", temp_dir.path().to_str().unwrap(), "--recursive"]) .output() .unwrap();