From b33912b7cc32792e1ec010d574872f40c9e2604d Mon Sep 17 00:00:00 2001 From: Luke Tomlinson Date: Tue, 11 May 2021 13:51:36 -0400 Subject: [PATCH] Core: Add trimWhitespace to getInput (#802) * Add option to not trim whitespace from inputs * Fix typos * Add doc clarification * Rename options --- packages/core/__tests__/core.test.ts | 17 +++++++++++++++++ packages/core/src/core.ts | 7 +++++++ 2 files changed, 24 insertions(+) diff --git a/packages/core/__tests__/core.test.ts b/packages/core/__tests__/core.test.ts index a1ebfd7b9f..dee2c78d81 100644 --- a/packages/core/__tests__/core.test.ts +++ b/packages/core/__tests__/core.test.ts @@ -27,6 +27,7 @@ const testEnvVars = { INPUT_BOOLEAN_INPUT_FALSE2: 'False', INPUT_BOOLEAN_INPUT_FALSE3: 'FALSE', INPUT_WRONG_BOOLEAN_INPUT: 'wrong', + INPUT_WITH_TRAILING_WHITESPACE: ' some val ', // Save inputs STATE_TEST_1: 'state_val', @@ -165,6 +166,22 @@ describe('@actions/core', () => { ) }) + it('getInput trims whitespace by default', () => { + expect(core.getInput('with trailing whitespace')).toBe('some val') + }) + + it('getInput trims whitespace when option is explicitly true', () => { + expect( + core.getInput('with trailing whitespace', {trimWhitespace: true}) + ).toBe('some val') + }) + + it('getInput does not trim whitespace when option is false', () => { + expect( + core.getInput('with trailing whitespace', {trimWhitespace: false}) + ).toBe(' some val ') + }) + it('getInput gets non-required boolean input', () => { expect(core.getBooleanInput('boolean input')).toBe(true) }) diff --git a/packages/core/src/core.ts b/packages/core/src/core.ts index 1822bf9372..52e6d7950e 100644 --- a/packages/core/src/core.ts +++ b/packages/core/src/core.ts @@ -11,6 +11,9 @@ import * as path from 'path' export interface InputOptions { /** Optional. Whether the input is required. If required and not present, will throw. Defaults to false */ required?: boolean + + /** Optional. Whether leading/trailing whitespace will be trimmed for the input. Defaults to true */ + trimWhitespace?: boolean } /** @@ -88,6 +91,10 @@ export function getInput(name: string, options?: InputOptions): string { throw new Error(`Input required and not supplied: ${name}`) } + if (options && options.trimWhitespace === false) { + return val + } + return val.trim() }