mirror of
https://github.com/actions/setup-node.git
synced 2025-04-22 09:21:00 +00:00
Allow using .tool-versions for node-version-file
This enables developers which use `asdf` to use their version file Signed-off-by: Timo Sand <timo.sand@iki.fi>
This commit is contained in:
parent
ed960c9656
commit
bd33d2e93f
3 changed files with 36 additions and 0 deletions
2
__tests__/data/.tool-versions
Normal file
2
__tests__/data/.tool-versions
Normal file
|
@ -0,0 +1,2 @@
|
|||
yarn 1.22.4
|
||||
nodejs 17.6.0
|
|
@ -601,6 +601,32 @@ describe('setup-node', () => {
|
|||
);
|
||||
});
|
||||
|
||||
it('reads node-version-file of `asdf` if provided', async () => {
|
||||
// Arrange
|
||||
const versionSpec = `yarn 1.22.4
|
||||
nodejs 17.6.0
|
||||
`;
|
||||
const versionFile = '.tool-versions';
|
||||
const expectedVersionSpec = '17.6.0';
|
||||
process.env['GITHUB_WORKSPACE'] = path.join(__dirname, 'data');
|
||||
inputs['node-version-file'] = versionFile;
|
||||
|
||||
parseNodeVersionSpy.mockImplementation(() => expectedVersionSpec);
|
||||
existsSpy.mockImplementationOnce(
|
||||
input => input === path.join(__dirname, 'data', versionFile)
|
||||
);
|
||||
// Act
|
||||
await main.run();
|
||||
|
||||
// Assert
|
||||
expect(existsSpy).toHaveBeenCalledTimes(1);
|
||||
expect(existsSpy).toHaveReturnedWith(true);
|
||||
expect(parseNodeVersionSpy).toHaveBeenCalledWith(versionSpec);
|
||||
expect(logSpy).toHaveBeenCalledWith(
|
||||
`Resolved ${versionFile} as ${expectedVersionSpec}`
|
||||
);
|
||||
});
|
||||
|
||||
it('both node-version-file and node-version are provided', async () => {
|
||||
inputs['node-version'] = '12';
|
||||
const versionSpec = 'v14';
|
||||
|
|
|
@ -468,6 +468,14 @@ function translateArchToDistUrl(arch: string): string {
|
|||
export function parseNodeVersionFile(contents: string): string {
|
||||
let nodeVersion = contents.trim();
|
||||
|
||||
if (contents.indexOf('nodejs') !== -1) {
|
||||
const lineWithNodeJsVersions = contents.match(/^nodejs.*$/gm);
|
||||
const firstLineWithNodeJsVersion =
|
||||
lineWithNodeJsVersions && lineWithNodeJsVersions[0];
|
||||
nodeVersion =
|
||||
firstLineWithNodeJsVersion?.replace('nodejs', '').trim() || nodeVersion;
|
||||
}
|
||||
|
||||
if (/^v\d/.test(nodeVersion)) {
|
||||
nodeVersion = nodeVersion.substring(1);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue