Only install cargo nextest if it's not already there

Piotr Osiewicz created

Change summary

.github/workflows/release_nightly.yml      | 4 ++--
.github/workflows/run_tests.yml            | 6 +++---
tooling/xtask/src/tasks/workflows/steps.rs | 5 ++++-
3 files changed, 9 insertions(+), 6 deletions(-)

Detailed changes

.github/workflows/release_nightly.yml 🔗

@@ -53,7 +53,7 @@ jobs:
       run: ./script/clippy
       shell: bash -euxo pipefail {0}
     - name: steps::cargo_install_nextest
-      run: cargo install cargo-nextest --locked
+      run: cargo nextest || cargo install cargo-nextest --locked
       shell: bash -euxo pipefail {0}
     - name: steps::clear_target_dir_if_large
       run: ./script/clear-target-dir-if-larger-than 300
@@ -88,7 +88,7 @@ jobs:
       run: ./script/clippy.ps1
       shell: pwsh
     - name: steps::cargo_install_nextest
-      run: cargo install cargo-nextest --locked
+      run: cargo nextest || cargo install cargo-nextest --locked
       shell: pwsh
     - name: steps::clear_target_dir_if_large
       run: ./script/clear-target-dir-if-larger-than.ps1 250

.github/workflows/run_tests.yml 🔗

@@ -117,7 +117,7 @@ jobs:
       run: ./script/clippy.ps1
       shell: pwsh
     - name: steps::cargo_install_nextest
-      run: cargo install cargo-nextest --locked
+      run: cargo nextest || cargo install cargo-nextest --locked
       shell: pwsh
     - name: steps::clear_target_dir_if_large
       run: ./script/clear-target-dir-if-larger-than.ps1 250
@@ -167,7 +167,7 @@ jobs:
       run: ./script/clippy
       shell: bash -euxo pipefail {0}
     - name: steps::cargo_install_nextest
-      run: cargo install cargo-nextest --locked
+      run: cargo nextest || cargo install cargo-nextest --locked
       shell: bash -euxo pipefail {0}
     - name: steps::clear_target_dir_if_large
       run: ./script/clear-target-dir-if-larger-than 100
@@ -204,7 +204,7 @@ jobs:
       run: ./script/clippy
       shell: bash -euxo pipefail {0}
     - name: steps::cargo_install_nextest
-      run: cargo install cargo-nextest --locked
+      run: cargo nextest || cargo install cargo-nextest --locked
       shell: bash -euxo pipefail {0}
     - name: steps::clear_target_dir_if_large
       run: ./script/clear-target-dir-if-larger-than 300

tooling/xtask/src/tasks/workflows/steps.rs 🔗

@@ -49,7 +49,10 @@ pub fn cargo_fmt() -> Step<Run> {
 }
 
 pub fn cargo_install_nextest(platform: Platform) -> Step<Run> {
-    named::run(platform, "cargo install cargo-nextest --locked")
+    named::run(
+        platform,
+        "cargo nextest || cargo install cargo-nextest --locked",
+    )
 }
 
 pub fn cargo_nextest(platform: Platform) -> Step<Run> {