Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Accept absolute paths for 'global-json-file' input (#396)
  • Loading branch information
Othmane KINANE authored and GitHub committed Mar 13, 2023
1 parent 2699274 commit 1d9f0da
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 12 deletions.
36 changes: 26 additions & 10 deletions __tests__/setup-dotnet.test.ts
Expand Up @@ -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', () => {
Expand Down Expand Up @@ -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);
Expand All @@ -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';
Expand All @@ -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);
});
2 changes: 1 addition & 1 deletion dist/index.js
Expand Up @@ -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`);
}
Expand Down
2 changes: 1 addition & 1 deletion src/setup-dotnet.ts
Expand Up @@ -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`
Expand Down

0 comments on commit 1d9f0da

Please sign in to comment.