Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 65 additions & 1 deletion __tests__/util.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,73 @@ const {
isCacheFeatureAvailable,
isGhes,
validatePaginationUrl,
getLatestMajorVersion
getLatestMajorVersion,
getBooleanInput
} = await import('../src/util.js');

describe('getBooleanInput', () => {
let inputs: Record<string, string>;

beforeEach(() => {
inputs = {};
(core.getInput as jest.Mock).mockImplementation(
(name: string) => inputs[name] ?? ''
);
});

afterEach(() => {
jest.resetAllMocks();
});

it.each([
['true', true],
['TRUE', true],
['TrUe', true],
[' true ', true],
['false', false],
['FALSE', false],
['FaLsE', false],
[' false ', false]
])('parses %j as %s', (value: string, expected: boolean) => {
inputs['boolean-input'] = value;

expect(getBooleanInput('boolean-input')).toBe(expected);
});

it.each([
[undefined, false],
[false, false],
[true, true]
])(
'uses the configured default %s when the input is omitted',
(defaultValue: boolean | undefined, expected: boolean) => {
expect(getBooleanInput('boolean-input', defaultValue)).toBe(expected);
}
);

it('uses the configured default for a whitespace-only input', () => {
inputs['boolean-input'] = ' ';

expect(getBooleanInput('boolean-input', true)).toBe(true);
});

it.each([
'check-latest',
'force-download',
'set-default',
'verify-signature',
'overwrite-settings',
'show-download-progress',
'problem-matcher'
])('rejects an invalid value for %s', inputName => {
inputs[inputName] = 'ture';

expect(() => getBooleanInput(inputName)).toThrow(
`Invalid value 'ture' for boolean input '${inputName}'. Expected 'true' or 'false'.`
);
});
});

describe('isVersionSatisfies', () => {
it.each([
['x', '11.0.0', true],
Expand Down
13 changes: 12 additions & 1 deletion dist/cleanup/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -97365,7 +97365,18 @@ function getTempDir() {
return tempDirectory;
}
function util_getBooleanInput(inputName, defaultValue = false) {
return ((core.getInput(inputName) || String(defaultValue)).toUpperCase() === 'TRUE');
const inputValue = core.getInput(inputName);
const normalizedValue = inputValue.trim().toLowerCase();
if (!normalizedValue) {
return defaultValue;
}
if (normalizedValue === 'true') {
return true;
}
if (normalizedValue === 'false') {
return false;
}
throw new Error(`Invalid value '${inputValue}' for boolean input '${inputName}'. Expected 'true' or 'false'.`);
}
function getVersionFromToolcachePath(toolPath) {
if (toolPath) {
Expand Down
13 changes: 12 additions & 1 deletion dist/setup/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -128364,7 +128364,18 @@ function getTempDir() {
return tempDirectory;
}
function util_getBooleanInput(inputName, defaultValue = false) {
return ((getInput(inputName) || String(defaultValue)).toUpperCase() === 'TRUE');
const inputValue = getInput(inputName);
const normalizedValue = inputValue.trim().toLowerCase();
if (!normalizedValue) {
return defaultValue;
}
if (normalizedValue === 'true') {
return true;
}
if (normalizedValue === 'false') {
return false;
}
throw new Error(`Invalid value '${inputValue}' for boolean input '${inputName}'. Expected 'true' or 'false'.`);
}
function getVersionFromToolcachePath(toolPath) {
if (toolPath) {
Expand Down
17 changes: 15 additions & 2 deletions src/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,21 @@ export function getTempDir() {
}

export function getBooleanInput(inputName: string, defaultValue = false) {
return (
(core.getInput(inputName) || String(defaultValue)).toUpperCase() === 'TRUE'
const inputValue = core.getInput(inputName);
const normalizedValue = inputValue.trim().toLowerCase();

if (!normalizedValue) {
return defaultValue;
}
Comment thread
brunoborges marked this conversation as resolved.
if (normalizedValue === 'true') {
return true;
}
if (normalizedValue === 'false') {
return false;
}

throw new Error(
`Invalid value '${inputValue}' for boolean input '${inputName}'. Expected 'true' or 'false'.`
);
}

Expand Down
Loading