From 6347a0e822e7bdc112cc4521f2a524a4eba58750 Mon Sep 17 00:00:00 2001 From: Alexandru Placinta Date: Wed, 1 Nov 2023 20:04:00 +0100 Subject: [PATCH] Fix test --- .github/workflows/test_components.yml | 11 +++--- .../test_install_as_default_toolchain.yml | 4 +-- .github/workflows/test_stable_nightly.yml | 17 +++++---- .github/workflows/test_targets.yml | 6 ++-- .github/workflows/test_toolchain_version.yml | 4 +-- tests/toolchain_install.test.ts | 36 ++++++++++++++++--- 6 files changed, 52 insertions(+), 26 deletions(-) diff --git a/.github/workflows/test_components.yml b/.github/workflows/test_components.yml index 3e45dc88..4c23f1bf 100644 --- a/.github/workflows/test_components.yml +++ b/.github/workflows/test_components.yml @@ -20,12 +20,14 @@ jobs: toolchain: nightly profile: minimal override: true - # Clippy is not included in minimal, so this would force to get clippy as well - components: clippy + # 2 components not included within the minimal profile + components: clippy, miri - name: Test clippy exists run: cargo clippy -V + - name: Test miri exists + run: cargo miri -V install_in_docker: runs-on: ubuntu-latest # Docker image, not the GitHub Actions VM @@ -44,12 +46,11 @@ jobs: toolchain: nightly profile: minimal override: true - # Clippy is not included in minimal, so this would force to get clippy - # and miri as well + # 2 components not included within the minimal profile components: clippy, miri - name: Test clippy exists run: cargo clippy -V - - name: Test rls exists + - name: Test miri exists run: cargo miri -V diff --git a/.github/workflows/test_install_as_default_toolchain.yml b/.github/workflows/test_install_as_default_toolchain.yml index 39e2547a..5f28dccd 100644 --- a/.github/workflows/test_install_as_default_toolchain.yml +++ b/.github/workflows/test_install_as_default_toolchain.yml @@ -26,7 +26,7 @@ jobs: - name: Test toolchain version run: | - test "${{ steps.toolchain.outputs.rustc }}" = "${{ matrix.toolchain }}" || (echo "Expected: ${{ matrix.toolchain }}; Got: ${{ steps.toolchain.outputs.rustc }}" && exit 1) + test "${{ steps.toolchain.outputs.rustc }}" = "${{ matrix.toolchain }}" install_in_docker: runs-on: ubuntu-latest @@ -54,4 +54,4 @@ jobs: - name: Test toolchain version run: | - test "${{ steps.toolchain.outputs.rustc }}" = "${{ matrix.toolchain }}" || (echo "Expected: ${{ matrix.toolchain }}; Got: ${{ steps.toolchain.outputs.rustc }}" && exit 1) + test "${{ steps.toolchain.outputs.rustc }}" = "${{ matrix.toolchain }}" diff --git a/.github/workflows/test_stable_nightly.yml b/.github/workflows/test_stable_nightly.yml index 6dcf60d3..6a1073de 100644 --- a/.github/workflows/test_stable_nightly.yml +++ b/.github/workflows/test_stable_nightly.yml @@ -32,11 +32,10 @@ jobs: CARGO: ${{ steps.toolchain.outputs.cargo }} RUSTUP: ${{ steps.toolchain.outputs.rustup }} run: | - echo $RUSTC - echo $RUSTC_HASH - echo $CARGO - echo $RUSTUP - + echo "$RUSTC" && test "$RUSTC" + echo "$RUSTC_HASH" && test "$RUSTC_HASH" + echo "$CARGO" && test "$CARGO" + echo "$RUSTUP" && test "$RUSTUP" install_in_docker: runs-on: ubuntu-latest strategy: @@ -69,7 +68,7 @@ jobs: CARGO: ${{ steps.toolchain.outputs.cargo }} RUSTUP: ${{ steps.toolchain.outputs.rustup }} run: | - echo $RUSTC - echo $RUSTC_HASH - echo $CARGO - echo $RUSTUP + echo "$RUSTC" && test "$RUSTC" + echo "$RUSTC_HASH" && test "$RUSTC_HASH" + echo "$CARGO" && test "$CARGO" + echo "$RUSTUP" && test "$RUSTUP" diff --git a/.github/workflows/test_targets.yml b/.github/workflows/test_targets.yml index ca9c6581..c28eb4a4 100644 --- a/.github/workflows/test_targets.yml +++ b/.github/workflows/test_targets.yml @@ -28,8 +28,7 @@ jobs: - name: Test ${{ matrix.target }} exists # We check for 3 as we expect the target for the current runner + 2 # from the target from the matrix - run: | - ( test $(rustup target list | grep -c installed) -eq 3 ) || ( echo "Targets ${{ matrix.target }} not installed properly installed" && exit 1 ) + run: test $(rustup target list | grep -c installed) -eq 3 install_in_docker: runs-on: ubuntu-latest @@ -59,5 +58,4 @@ jobs: - name: Test ${{ matrix.target }} exists # We check for 3 as we expect the target for the current runner + 2 # from the target from the matrix - run: | - ( test $(rustup target list | grep -c installed) -eq 3 ) || ( echo "Targets ${{ matrix.target }} not installed properly installed" && exit 1 ) + run: test $(rustup target list | grep -c installed) -eq 3 diff --git a/.github/workflows/test_toolchain_version.yml b/.github/workflows/test_toolchain_version.yml index f250aae1..cb832595 100644 --- a/.github/workflows/test_toolchain_version.yml +++ b/.github/workflows/test_toolchain_version.yml @@ -26,7 +26,7 @@ jobs: - name: Test toolchain version run: | - test "${{ steps.toolchain.outputs.rustc }}" = "${{ matrix.toolchain }}" || (echo "Expected: ${{ matrix.toolchain }}; Got: ${{ steps.toolchain.outputs.rustc }}" && exit 1) + test "${{ steps.toolchain.outputs.rustc }}" = "${{ matrix.toolchain }}" install_in_docker: runs-on: ubuntu-latest @@ -54,4 +54,4 @@ jobs: - name: Test toolchain version run: | - test "${{ steps.toolchain.outputs.rustc }}" = "${{ matrix.toolchain }}" || (echo "Expected: ${{ matrix.toolchain }}; Got: ${{ steps.toolchain.outputs.rustc }}" && exit 1) + test "${{ steps.toolchain.outputs.rustc }}" = "${{ matrix.toolchain }}" diff --git a/tests/toolchain_install.test.ts b/tests/toolchain_install.test.ts index 554c8e58..cd362fbf 100644 --- a/tests/toolchain_install.test.ts +++ b/tests/toolchain_install.test.ts @@ -2,6 +2,7 @@ import { installToolchainCommand } from "../src/toolchain_install"; import { RustUp } from "../src/installers/rustup"; import { Outputs } from "../src/output"; import * as mockedCore from "@actions/core"; +import * as mockedToolchainUtil from "../src/utils/toolchain"; jest.mock("@actions/exec", () => ({ exec: jest.fn(), @@ -24,6 +25,7 @@ jest.mock("../src/output", () => ({ outputs: jest.fn(), }, })); +jest.mock("../src/utils/toolchain"); describe("Tests of toolchain command", () => { const originalEnv = process.env; @@ -44,9 +46,38 @@ describe("Tests of toolchain command", () => { jest.resetAllMocks(); }); + test("Install toolchain: rust toolchain file", () => { + mockedRustUp.supportProfiles.mockReturnValue(Promise.resolve(true)); + (RustUp.getOrInstall as jest.Mock).mockImplementation(async () => { + return Promise.resolve(mockedRustUp); + }); + (Outputs.outputs as jest.Mock).mockReturnValue(Promise.resolve([])); + (mockedToolchainUtil.rustToolchainFile as jest.Mock).mockReturnValue( + "rust-toolchain.toml", + ); + + const toolchainArgs = { + toolchain: "some toolchain", + profile: "a profile", + }; + (mockedToolchainUtil.toolchainArgs as jest.Mock).mockReturnValue( + toolchainArgs, + ); + + installToolchainCommand() + .hook("postAction", () => { + expect(mockedToolchainUtil.toolchainArgs).toHaveBeenCalledWith( + "rust-toolchain.toml", + ); + expect(mockedRustUp.setProfile).toHaveBeenCalledWith( + toolchainArgs.profile, + ); + }) + .parse([]); + }); + test("Install toolchain: should self update due to profiles", () => { mockedRustUp.supportProfiles.mockReturnValue(Promise.resolve(false)); - (RustUp.getOrInstall as jest.Mock).mockImplementation(async () => { return Promise.resolve(mockedRustUp); }); @@ -61,7 +92,6 @@ describe("Tests of toolchain command", () => { test("Install toolchain: should self update due to components", () => { mockedRustUp.supportComponents.mockReturnValue(Promise.resolve(false)); - (RustUp.getOrInstall as jest.Mock).mockImplementation(async () => { return Promise.resolve(mockedRustUp); }); @@ -83,7 +113,6 @@ describe("Tests of toolchain command", () => { test("Install toolchain: profile is set", () => { mockedRustUp.supportComponents.mockReturnValue(Promise.resolve(false)); - (RustUp.getOrInstall as jest.Mock).mockImplementation(async () => { return Promise.resolve(mockedRustUp); }); @@ -101,7 +130,6 @@ describe("Tests of toolchain command", () => { test("Install toolchain: downgrade on nightly", () => { mockedRustUp.supportProfiles.mockReturnValue(Promise.resolve(true)); mockedRustUp.supportComponents.mockReturnValue(Promise.resolve(true)); - (RustUp.getOrInstall as jest.Mock).mockImplementation(async () => { return Promise.resolve(mockedRustUp); });