mirror of
https://github.com/astral-sh/setup-uv.git
synced 2025-09-06 03:56:51 +00:00
committed by
GitHub
parent
26cf676705
commit
1b46e13ec8
86
__tests__/utils/inputs.test.ts
Normal file
86
__tests__/utils/inputs.test.ts
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
jest.mock("@actions/core", () => {
|
||||||
|
return {
|
||||||
|
debug: jest.fn(),
|
||||||
|
getBooleanInput: jest.fn(
|
||||||
|
(name: string) => (mockInputs[name] ?? "") === "true",
|
||||||
|
),
|
||||||
|
getInput: jest.fn((name: string) => mockInputs[name] ?? ""),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
import {
|
||||||
|
afterEach,
|
||||||
|
beforeEach,
|
||||||
|
describe,
|
||||||
|
expect,
|
||||||
|
it,
|
||||||
|
jest,
|
||||||
|
} from "@jest/globals";
|
||||||
|
|
||||||
|
// Will be mutated per test before (re-)importing the module under test
|
||||||
|
let mockInputs: Record<string, string> = {};
|
||||||
|
const ORIGINAL_HOME = process.env.HOME;
|
||||||
|
|
||||||
|
describe("cacheDependencyGlob", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
jest.resetModules();
|
||||||
|
mockInputs = {};
|
||||||
|
process.env.HOME = "/home/testuser";
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
process.env.HOME = ORIGINAL_HOME;
|
||||||
|
});
|
||||||
|
|
||||||
|
it("returns empty string when input not provided", async () => {
|
||||||
|
mockInputs["working-directory"] = "/workspace";
|
||||||
|
const { cacheDependencyGlob } = await import("../../src/utils/inputs");
|
||||||
|
expect(cacheDependencyGlob).toBe("");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("resolves a single relative path", async () => {
|
||||||
|
mockInputs["working-directory"] = "/workspace";
|
||||||
|
mockInputs["cache-dependency-glob"] = "requirements.txt";
|
||||||
|
const { cacheDependencyGlob } = await import("../../src/utils/inputs");
|
||||||
|
expect(cacheDependencyGlob).toBe("/workspace/requirements.txt");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("strips leading ./ from relative path", async () => {
|
||||||
|
mockInputs["working-directory"] = "/workspace";
|
||||||
|
mockInputs["cache-dependency-glob"] = "./uv.lock";
|
||||||
|
const { cacheDependencyGlob } = await import("../../src/utils/inputs");
|
||||||
|
expect(cacheDependencyGlob).toBe("/workspace/uv.lock");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("handles multiple lines, trimming whitespace, tilde expansion and absolute paths", async () => {
|
||||||
|
mockInputs["working-directory"] = "/workspace";
|
||||||
|
mockInputs["cache-dependency-glob"] =
|
||||||
|
" ~/.cache/file1\n ./rel/file2 \nfile3.txt";
|
||||||
|
const { cacheDependencyGlob } = await import("../../src/utils/inputs");
|
||||||
|
expect(cacheDependencyGlob).toBe(
|
||||||
|
[
|
||||||
|
"/home/testuser/.cache/file1", // expanded tilde, absolute path unchanged
|
||||||
|
"/workspace/rel/file2", // ./ stripped and resolved
|
||||||
|
"/workspace/file3.txt", // relative path resolved
|
||||||
|
].join("\n"),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("keeps absolute path unchanged in multiline input", async () => {
|
||||||
|
mockInputs["working-directory"] = "/workspace";
|
||||||
|
mockInputs["cache-dependency-glob"] = "/abs/path.lock\nrelative.lock";
|
||||||
|
const { cacheDependencyGlob } = await import("../../src/utils/inputs");
|
||||||
|
expect(cacheDependencyGlob).toBe(
|
||||||
|
["/abs/path.lock", "/workspace/relative.lock"].join("\n"),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("handles exclusions in relative paths correct", async () => {
|
||||||
|
mockInputs["working-directory"] = "/workspace";
|
||||||
|
mockInputs["cache-dependency-glob"] = "!/abs/path.lock\n!relative.lock";
|
||||||
|
const { cacheDependencyGlob } = await import("../../src/utils/inputs");
|
||||||
|
expect(cacheDependencyGlob).toBe(
|
||||||
|
["!/abs/path.lock", "!/workspace/relative.lock"].join("\n"),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
15
dist/save-cache/index.js
generated
vendored
15
dist/save-cache/index.js
generated
vendored
@ -90169,16 +90169,11 @@ function expandTilde(input) {
|
|||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
function resolveRelativePath(inputPath) {
|
function resolveRelativePath(inputPath) {
|
||||||
if (node_path_1.default.isAbsolute(inputPath)) {
|
const hasNegation = inputPath.startsWith("!");
|
||||||
return inputPath;
|
const pathWithoutNegation = hasNegation ? inputPath.substring(1) : inputPath;
|
||||||
}
|
const resolvedPath = node_path_1.default.resolve(exports.workingDirectory, pathWithoutNegation);
|
||||||
let absolutePath = inputPath;
|
core.debug(`Resolving relative path ${inputPath} to ${hasNegation ? "!" : ""}${resolvedPath}`);
|
||||||
if (absolutePath.startsWith("./")) {
|
return hasNegation ? `!${resolvedPath}` : resolvedPath;
|
||||||
absolutePath = absolutePath.substring(2);
|
|
||||||
}
|
|
||||||
absolutePath = `${exports.workingDirectory}${node_path_1.default.sep}${absolutePath}`;
|
|
||||||
core.debug(`Resolving relative path ${inputPath} to ${absolutePath}`);
|
|
||||||
return absolutePath;
|
|
||||||
}
|
}
|
||||||
function getManifestFile() {
|
function getManifestFile() {
|
||||||
const manifestFileInput = core.getInput("manifest-file");
|
const manifestFileInput = core.getInput("manifest-file");
|
||||||
|
15
dist/setup/index.js
generated
vendored
15
dist/setup/index.js
generated
vendored
@ -128214,16 +128214,11 @@ function expandTilde(input) {
|
|||||||
return input;
|
return input;
|
||||||
}
|
}
|
||||||
function resolveRelativePath(inputPath) {
|
function resolveRelativePath(inputPath) {
|
||||||
if (node_path_1.default.isAbsolute(inputPath)) {
|
const hasNegation = inputPath.startsWith("!");
|
||||||
return inputPath;
|
const pathWithoutNegation = hasNegation ? inputPath.substring(1) : inputPath;
|
||||||
}
|
const resolvedPath = node_path_1.default.resolve(exports.workingDirectory, pathWithoutNegation);
|
||||||
let absolutePath = inputPath;
|
core.debug(`Resolving relative path ${inputPath} to ${hasNegation ? "!" : ""}${resolvedPath}`);
|
||||||
if (absolutePath.startsWith("./")) {
|
return hasNegation ? `!${resolvedPath}` : resolvedPath;
|
||||||
absolutePath = absolutePath.substring(2);
|
|
||||||
}
|
|
||||||
absolutePath = `${exports.workingDirectory}${node_path_1.default.sep}${absolutePath}`;
|
|
||||||
core.debug(`Resolving relative path ${inputPath} to ${absolutePath}`);
|
|
||||||
return absolutePath;
|
|
||||||
}
|
}
|
||||||
function getManifestFile() {
|
function getManifestFile() {
|
||||||
const manifestFileInput = core.getInput("manifest-file");
|
const manifestFileInput = core.getInput("manifest-file");
|
||||||
|
@ -116,16 +116,15 @@ function expandTilde(input: string): string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function resolveRelativePath(inputPath: string): string {
|
function resolveRelativePath(inputPath: string): string {
|
||||||
if (path.isAbsolute(inputPath)) {
|
const hasNegation = inputPath.startsWith("!");
|
||||||
return inputPath;
|
const pathWithoutNegation = hasNegation ? inputPath.substring(1) : inputPath;
|
||||||
}
|
|
||||||
let absolutePath = inputPath;
|
const resolvedPath = path.resolve(workingDirectory, pathWithoutNegation);
|
||||||
if (absolutePath.startsWith("./")) {
|
|
||||||
absolutePath = absolutePath.substring(2);
|
core.debug(
|
||||||
}
|
`Resolving relative path ${inputPath} to ${hasNegation ? "!" : ""}${resolvedPath}`,
|
||||||
absolutePath = `${workingDirectory}${path.sep}${absolutePath}`;
|
);
|
||||||
core.debug(`Resolving relative path ${inputPath} to ${absolutePath}`);
|
return hasNegation ? `!${resolvedPath}` : resolvedPath;
|
||||||
return absolutePath;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getManifestFile(): string | undefined {
|
function getManifestFile(): string | undefined {
|
||||||
|
Reference in New Issue
Block a user