rs-toolchain/__tests__/args.test.ts

106 lines
3.5 KiB
TypeScript
Raw Normal View History

2020-03-24 15:26:10 +02:00
import { getToolchainArgs } from "../src/args";
import { morph } from "mock-env";
import { sync as tempWriteSync } from "temp-write";
2019-09-12 16:44:29 +03:00
2020-03-24 15:26:10 +02:00
describe("actions-rs/toolchain", () => {
it("Parses action input into toolchain options", () => {
const args = morph(
() => {
return getToolchainArgs("./rust-toolchain");
},
{
INPUT_TOOLCHAIN: "nightly-2019-04-20",
INPUT_DEFAULT: "false",
INPUT_OVERRIDE: "true",
}
);
2020-03-24 15:26:10 +02:00
expect(args.name).toBe("nightly-2019-04-20");
expect(args.default).toBe(false);
expect(args.override).toBe(true);
});
2020-03-24 15:26:10 +02:00
it("uses input variable if rust-toolchain file does not exist", function () {
const args = morph(
() => {
return getToolchainArgs("./rust-toolchain");
},
{
INPUT_TOOLCHAIN: "nightly",
}
);
2020-03-24 15:26:10 +02:00
expect(args.name).toBe("nightly");
});
2020-03-24 15:26:10 +02:00
it("toolchain input is required if rust-toolchain does not exist", function () {
expect(() => getToolchainArgs("./rust-toolchain")).toThrowError();
});
2020-03-24 15:26:10 +02:00
it("prioritizes rust-toolchain file over input variable", function () {
const rustToolchainFile = tempWriteSync("1.39.0");
2020-03-24 15:26:10 +02:00
const args = morph(
() => {
return getToolchainArgs(rustToolchainFile);
},
{
INPUT_TOOLCHAIN: "nightly",
}
);
2020-03-24 15:26:10 +02:00
expect(args.name).toBe("nightly");
});
2020-03-24 15:26:10 +02:00
it("uses rust-toolchain file if input does not exist", function () {
const rustToolchainFile = tempWriteSync("1.39.0");
2020-03-24 15:26:10 +02:00
const args = morph(() => {
return getToolchainArgs(rustToolchainFile);
}, {});
2020-03-24 15:26:10 +02:00
expect(args.name).toBe("1.39.0");
});
it("uses new style rust-toolchain file if input does not exist", function () {
const rustToolchainFile = tempWriteSync(
'[toolchain]\nchannel = "1.51.0"\ncomponents = [ "rustfmt", "clippy" ]\nprofile = "minimal"\ntargets = [ "wasm32-unknown-unknown", "thumbv2-none-eabi" ]'
);
const args = morph(() => {
return getToolchainArgs(rustToolchainFile);
}, {});
expect(args.name).toBe("1.51.0");
expect(args.components).toStrictEqual(["rustfmt", "clippy"]);
expect(args.profile).toBe("minimal");
expect(args.target).toBe("wasm32-unknown-unknown");
});
it("uses new style rust-toolchain file with toml ending if input and rust-toolchain file does not exist", function () {
const rustToolchainFile = tempWriteSync(
'[toolchain]\nchannel = "1.51.0"\ncomponents = [ "rustfmt", "clippy" ]\nprofile = "minimal"\ntargets = [ "wasm32-unknown-unknown", "thumbv2-none-eabi" ]',
"./rust-toolchain.toml"
);
const args = morph(() => {
return getToolchainArgs(rustToolchainFile.replace(/\.toml^/, ""));
}, {});
expect(args.name).toBe("1.51.0");
expect(args.components).toStrictEqual(["rustfmt", "clippy"]);
expect(args.profile).toBe("minimal");
expect(args.target).toBe("wasm32-unknown-unknown");
});
2020-03-24 15:26:10 +02:00
it("trims content of the override file", function () {
const rustToolchainFile = tempWriteSync("\n 1.39.0\n\n\n\n");
2020-03-24 15:26:10 +02:00
const args = morph(() => {
return getToolchainArgs(rustToolchainFile);
}, {});
2019-09-12 16:44:29 +03:00
2020-03-24 15:26:10 +02:00
expect(args.name).toBe("1.39.0");
2019-09-12 16:44:29 +03:00
});
});