From 1d9f0dad5b6a438ed2c0d849c49ccdf4e8604279 Mon Sep 17 00:00:00 2001 From: Othmane KINANE <76955412+othmane-kinane-nw@users.noreply.github.com> Date: Mon, 13 Mar 2023 12:34:56 +0100 Subject: [PATCH] Accept absolute paths for 'global-json-file' input (#396) --- __tests__/setup-dotnet.test.ts | 36 ++++++++++++++++++++++++---------- dist/index.js | 2 +- src/setup-dotnet.ts | 2 +- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/__tests__/setup-dotnet.test.ts b/__tests__/setup-dotnet.test.ts index bf39881..76c1da4 100644 --- a/__tests__/setup-dotnet.test.ts +++ b/__tests__/setup-dotnet.test.ts @@ -18,6 +18,15 @@ if (IS_WINDOWS) { toolDir = path.join(process.env['HOME'] + '', '.dotnet'); } +function createGlobalJsonPath(dotnetVersion: string) { + const globalJsonPath = path.join(process.cwd(), 'global.json'); + const jsonContents = `{${os.EOL}"sdk": {${os.EOL}"version": "${dotnetVersion}"${os.EOL}}${os.EOL}}`; + if (!fs.existsSync(globalJsonPath)) { + fs.writeFileSync(globalJsonPath, jsonContents); + } + return globalJsonPath; +} + const tempDir = path.join(__dirname, 'runner', 'temp2'); describe('setup-dotnet tests', () => { @@ -52,11 +61,7 @@ describe('setup-dotnet tests', () => { }, 30000); it('Acquires version of dotnet from global.json if no matching version is installed', async () => { - const globalJsonPath = path.join(process.cwd(), 'global.json'); - const jsonContents = `{${os.EOL}"sdk": {${os.EOL}"version": "3.1.201"${os.EOL}}${os.EOL}}`; - if (!fs.existsSync(globalJsonPath)) { - fs.writeFileSync(globalJsonPath, jsonContents); - } + createGlobalJsonPath('3.1.201'); await setup.run(); expect(fs.existsSync(path.join(toolDir, 'sdk', '3.1.201'))).toBe(true); @@ -78,11 +83,7 @@ describe('setup-dotnet tests', () => { }, 400000); it("Sets output with the version specified in global.json, if it's present", async () => { - const globalJsonPath = path.join(process.cwd(), 'global.json'); - const jsonContents = `{${os.EOL}"sdk": {${os.EOL}"version": "3.0.103"${os.EOL}}${os.EOL}}`; - if (!fs.existsSync(globalJsonPath)) { - fs.writeFileSync(globalJsonPath, jsonContents); - } + createGlobalJsonPath('3.0.103'); inputs['dotnet-version'] = ['3.1.201', '6.0.401']; inputs['global-json-file'] = './global.json'; @@ -95,4 +96,19 @@ describe('setup-dotnet tests', () => { expect(setOutputSpy).toHaveBeenCalledWith('dotnet-version', '3.0.103'); }, 400000); + + it('Sets output with the version specified in global.json with absolute path', async () => { + const globalJsonPath = createGlobalJsonPath('3.0.103'); + + inputs['dotnet-version'] = ['3.1.201', '6.0.401']; + inputs['global-json-file'] = globalJsonPath; + + getMultilineInputSpy.mockImplementation(input => inputs[input]); + + getInputSpy.mockImplementation(input => inputs[input]); + + await setup.run(); + + expect(setOutputSpy).toHaveBeenCalledWith('dotnet-version', '3.0.103'); + }, 400000); }); diff --git a/dist/index.js b/dist/index.js index bbe2c2b..8e20d7f 100644 --- a/dist/index.js +++ b/dist/index.js @@ -513,7 +513,7 @@ function run() { const installedDotnetVersions = []; const globalJsonFileInput = core.getInput('global-json-file'); if (globalJsonFileInput) { - const globalJsonPath = path_1.default.join(process.cwd(), globalJsonFileInput); + const globalJsonPath = path_1.default.resolve(process.cwd(), globalJsonFileInput); if (!fs.existsSync(globalJsonPath)) { throw new Error(`The specified global.json file '${globalJsonFileInput}' does not exist`); } diff --git a/src/setup-dotnet.ts b/src/setup-dotnet.ts index 119053a..31c80a2 100644 --- a/src/setup-dotnet.ts +++ b/src/setup-dotnet.ts @@ -31,7 +31,7 @@ export async function run() { const globalJsonFileInput = core.getInput('global-json-file'); if (globalJsonFileInput) { - const globalJsonPath = path.join(process.cwd(), globalJsonFileInput); + const globalJsonPath = path.resolve(process.cwd(), globalJsonFileInput); if (!fs.existsSync(globalJsonPath)) { throw new Error( `The specified global.json file '${globalJsonFileInput}' does not exist`