feat: auto-detect go.mod when no version inputs specified

- Add unit tests for auto-detection behavior
- Implement go.mod auto-detection in resolveVersionInput()
- Explicit inputs still take precedence over auto-detection

Related issue: #523
This commit is contained in:
raeperd 2025-10-12 17:43:59 +09:00
parent c0137caad7
commit 612cee1af9
3 changed files with 32 additions and 0 deletions

View File

@ -1090,4 +1090,29 @@ use .
expect(vars).toStrictEqual({GOTOOLCHAIN: 'local'}); expect(vars).toStrictEqual({GOTOOLCHAIN: 'local'});
expect(process.env).toHaveProperty('GOTOOLCHAIN', 'local'); expect(process.env).toHaveProperty('GOTOOLCHAIN', 'local');
}); });
describe('auto-detect go.mod', () => {
it('uses go.mod from workspace root when no inputs provided', async () => {
existsSpy.mockImplementation((filePath: string) => {
return filePath === 'go.mod';
});
readFileSpy.mockImplementation(() =>
Buffer.from('module test\n\ngo 1.20')
);
await main.run();
expect(logSpy).toHaveBeenCalledWith('Setup go version spec 1.20');
});
it('uses pre-installed Go when no inputs and no go.mod exists', async () => {
existsSpy.mockImplementation(() => false);
await main.run();
expect(logSpy).toHaveBeenCalledWith(
'[warning]go-version input was not specified. The action will try to use pre-installed version.'
);
});
});
}); });

3
dist/setup/index.js vendored
View File

@ -94902,6 +94902,9 @@ function resolveVersionInput() {
} }
version = installer.parseGoVersionFile(versionFilePath); version = installer.parseGoVersionFile(versionFilePath);
} }
if (!version && fs_1.default.existsSync('go.mod')) {
version = installer.parseGoVersionFile('go.mod');
}
return version; return version;
} }
function setGoToolchain() { function setGoToolchain() {

View File

@ -160,6 +160,10 @@ function resolveVersionInput(): string {
version = installer.parseGoVersionFile(versionFilePath); version = installer.parseGoVersionFile(versionFilePath);
} }
if (!version && fs.existsSync('go.mod')) {
version = installer.parseGoVersionFile('go.mod');
}
return version; return version;
} }