95 lines
2.1 KiB
TypeScript
95 lines
2.1 KiB
TypeScript
import { determineFlakeDirectories } from "./inputs.js";
|
|
import { makeNixCommandArgs } from "./nix.js";
|
|
import { expect, test } from "vitest";
|
|
|
|
test("Nix command arguments", () => {
|
|
type TestCase = {
|
|
inputs: {
|
|
nixOptions: string[];
|
|
flakeInputs: string[];
|
|
commitMessage: string;
|
|
};
|
|
expected: string[];
|
|
};
|
|
|
|
const testCases: TestCase[] = [
|
|
{
|
|
inputs: {
|
|
nixOptions: ["--log-format", "raw"],
|
|
flakeInputs: [],
|
|
commitMessage: "just testing",
|
|
},
|
|
expected: [
|
|
"--log-format",
|
|
"raw",
|
|
"flake",
|
|
"update",
|
|
"--commit-lock-file",
|
|
"--commit-lockfile-summary",
|
|
"just testing",
|
|
],
|
|
},
|
|
{
|
|
inputs: {
|
|
nixOptions: [],
|
|
flakeInputs: ["nixpkgs", "rust-overlay"],
|
|
commitMessage: "just testing",
|
|
},
|
|
expected: [
|
|
"flake",
|
|
"lock",
|
|
"--update-input",
|
|
"nixpkgs",
|
|
"--update-input",
|
|
"rust-overlay",
|
|
"--commit-lock-file",
|
|
"--commit-lockfile-summary",
|
|
"just testing",
|
|
],
|
|
},
|
|
{
|
|
inputs: {
|
|
nixOptions: ["--debug"],
|
|
flakeInputs: [],
|
|
commitMessage: "just testing",
|
|
},
|
|
expected: [
|
|
"--debug",
|
|
"flake",
|
|
"update",
|
|
"--commit-lock-file",
|
|
"--commit-lockfile-summary",
|
|
"just testing",
|
|
],
|
|
},
|
|
];
|
|
|
|
testCases.forEach(({ inputs, expected }) => {
|
|
const args = makeNixCommandArgs(
|
|
inputs.nixOptions,
|
|
inputs.flakeInputs,
|
|
inputs.commitMessage,
|
|
);
|
|
expect(args).toStrictEqual(expected);
|
|
});
|
|
});
|
|
|
|
test("Flake directory parsing", () => {
|
|
type TestCase = {
|
|
input: string;
|
|
outputs: string[];
|
|
};
|
|
|
|
const testCases: TestCase[] = [
|
|
{ input: "", outputs: [] },
|
|
{ input: "one two three", outputs: ["one", "two", "three"] },
|
|
{
|
|
input: ` one two three `,
|
|
outputs: ["one", "two", "three"],
|
|
},
|
|
];
|
|
|
|
testCases.forEach(({ input, outputs }) => {
|
|
expect(determineFlakeDirectories(input)).toStrictEqual(outputs);
|
|
});
|
|
});
|