Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
c3812bd
Implemented support for repository defined node version files such as…
TJMcCarthy95 Nov 1, 2020
a0d376d
Expand node version file support to include lts based codenames
TJMcCarthy95 Nov 19, 2020
75c8584
fixed missing brackets and merged main
hkaur008 Sep 30, 2021
820128a
test commit ignore
Xlient Sep 30, 2021
ac10981
Revert "test commit ignore"
hkaur008 Sep 30, 2021
bca2818
fixed merge conflicts
Xlient Oct 1, 2021
82441b3
Refactored code and removed redundant logic
Xlient Oct 1, 2021
052bc8b
created test workflow & nvmrc file
Xlient Oct 1, 2021
7f7335c
updated nvmrc & added ignore paths
Xlient Oct 4, 2021
1f26500
fixed error in workflow file
Xlient Oct 4, 2021
510ffc9
Update version-file-workflow.yml
Xlient Oct 4, 2021
2579409
fixed merge conflicts
Xlient Oct 4, 2021
1650600
Merge branch 'pull209' of https://github.com/hkaur008/setup-node into…
Xlient Oct 4, 2021
2fb803b
refactored installer.test.ts
hkaur008 Oct 4, 2021
42c8cd4
deleted node-version-file
hkaur008 Oct 4, 2021
e471f47
code syntax matched
hkaur008 Oct 4, 2021
b1ed0c3
moved node version section in README to advanced usage
Xlient Oct 5, 2021
c178bbb
removed test logic in ParseNodeVersionFile for lts and partial matching
Xlient Oct 5, 2021
eb7c472
removed extra tabs (versions.yml)
hkaur008 Oct 5, 2021
7fb46ef
removed extra tabs (versions.yml)
hkaur008 Oct 5, 2021
ec979d0
removed unnessary test
Xlient Oct 6, 2021
fe30936
Delete index.js
Xlient Oct 6, 2021
7d40f6c
added correct path to version file
Xlient Oct 6, 2021
6e5214f
build successful
hkaur008 Oct 6, 2021
5b7f417
build successful
hkaur008 Oct 6, 2021
ab0d6af
refactored test to seperate lts alias describe()
Xlient Oct 7, 2021
fa3de08
removed await from line 25 main.ts
hkaur008 Oct 7, 2021
b8f2a97
changed path of versionFilePath line 24 main.ts
hkaur008 Oct 7, 2021
a03cbe2
changed import from syntax instead require line 3 and line 8
hkaur008 Oct 7, 2021
b94f87b
parseNodeVersionFile changed from async function
hkaur008 Oct 7, 2021
10f97d5
removed extra line 15 installer.js
hkaur008 Oct 7, 2021
04a1a57
node-version-file: '../.nvmrc' changed to .nvmrc
hkaur008 Oct 7, 2021
aa06bd5
import * as hc from '@actions/http-client';
hkaur008 Oct 7, 2021
3f779ed
built done for changes
hkaur008 Oct 7, 2021
6f69e28
defined GITHUB_WORKSPACE env variable for node-version-file test
Xlient Oct 8, 2021
a4b8ed2
Update dependencies (#346)
dmitry-shibanov Oct 14, 2021
fd4bd82
Add issue and pull request templates (#344)
dmitry-shibanov Oct 18, 2021
01342a8
- name: Setup node from node version file
hkaur008 Oct 25, 2021
fa4605f
.nvmrc
hkaur008 Oct 25, 2021
acc44a6
paragraph added in version.yml btw jobs
hkaur008 Oct 25, 2021
f606613
diff explanation for advanced-usage.md
hkaur008 Oct 25, 2021
9cdff02
link to supported section added
hkaur008 Oct 25, 2021
7ba3c8c
added paragraph in installer.test.ts line 11
hkaur008 Oct 25, 2021
96fa061
it blocks in lowercase
hkaur008 Oct 25, 2021
f927de6
separate function for resolving version file added
hkaur008 Oct 25, 2021
1b0aeb7
v14 .nvmrc
hkaur008 Oct 26, 2021
aab770a
set added to check the version of the file
hkaur008 Oct 26, 2021
36bb47b
return version otherwise action will fail
hkaur008 Oct 26, 2021
34ece93
syncing with main
hkaur008 Oct 26, 2021
edcb32f
Merge branch 'actions:main' into pull209
hkaur008 Nov 2, 2021
6382f41
checks implemented for node version file
hkaur008 Nov 2, 2021
ff9e2a3
Merge branch 'pull209' of https://github.com/hkaur008/setup-node into…
hkaur008 Nov 2, 2021
cc29140
build syncing
hkaur008 Nov 2, 2021
36c80a7
minor changes and error fix
hkaur008 Nov 2, 2021
7ff10b1
advanced.md changes
hkaur008 Nov 2, 2021
c1c4632
build success
hkaur008 Nov 2, 2021
243f7be
fixed unit tests
Xlient Nov 2, 2021
e313959
updated path to version file
Xlient Nov 2, 2021
8dfead4
fix error in unit test
Xlient Nov 8, 2021
d465795
add fix for installer tests
dmitry-shibanov Nov 8, 2021
12a17b4
Merge pull request #2 from dmitry-shibanov/v-dmshib/fix-installer-tests
Xlient Nov 8, 2021
caf9b24
removed redundant test
Xlient Nov 11, 2021
6ef0f8d
update dist
Xlient Nov 11, 2021
3f95f41
additional unit test coverage
Xlient Nov 5, 2021
6544989
add runInBand option to jest
Xlient Nov 5, 2021
4cf38f1
run formatting
Xlient Nov 11, 2021
cc6b809
Update docs/advanced-usage.md
Xlient Nov 15, 2021
54e2b09
Merge branch 'pull209' into test-node-version-file
Xlient Nov 16, 2021
fc72eb9
test `.node-version` file
Xlient Nov 16, 2021
80fa0cf
add file path to error output
Xlient Nov 16, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
name: Bug report
about: Create a bug report
title: ''
labels: bug, needs triage
assignees: ''

---

<!--- Please direct any generic questions related to actions to our support community forum at https://github.bokerqi.topmunity/c/code-to-cloud/github-actions/41 --->
<!--- Before opening up a new bug report, please make sure to check for similar existing issues -->

**Description:**
A clear and concise description of what the bug is.

**Action version:**
Specify the action version

**Platform:**
- [ ] Ubuntu
- [ ] macOS
- [ ] Windows

**Runner type:**
- [ ] Hosted
- [ ] Self-hosted

**Tools version:**
<!--- Please specify versions of node and package manager (npm, yarn, pnpm and etc)-->

**Repro steps:**
A description with steps to reproduce the issue. If your have a public example or repo to share, please provide the link.

**Expected behavior:**
A description of what you expected to happen.

**Actual behavior:**
A description of what is actually happening.
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
blank_issues_enabled: false
18 changes: 18 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: feature request, needs triage
assignees: ''
---
<!--- Please direct any generic questions related to actions to our support community forum at https://github.bokerqi.topmunity/c/code-to-cloud/github-actions/41 --->
<!--- Before opening up a new feature request, please make sure to check for similar existing issues and pull requests -->

**Description:**
Describe your proposal.

**Justification:**
Justification or a use case for your proposal.

**Are you willing to submit a PR?**
<!--- We accept contributions! -->
9 changes: 9 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
**Description:**
Describe your changes.

**Related issue:**
Add link to the related issue.

**Check list:**
- [ ] Mark if documentation changes are required.
- [ ] Mark if tests were added or updated to cover the changes.
15 changes: 15 additions & 0 deletions .github/workflows/versions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,21 @@ jobs:
run: __tests__/verify-node.sh "${{ matrix.node-version }}"
shell: bash

version-file:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- uses: actions/checkout@v2
- name: Setup node from node version file
uses: ./
with:
node-version-file: '__tests__/data/.node-version'
- name: Verify node
run: __tests__/verify-node.sh 12

node-dist:
runs-on: ${{ matrix.os }}
strategy:
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

32 changes: 0 additions & 32 deletions .licenses/npm/@actions/http-client-1.0.6.dep.yml

This file was deleted.

15 changes: 8 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
# setup-node

<p align="left">
<a href="https://github.com/actions/setup-node/actions?query=workflow%3Abuild-test"><img alt="build-test status" src="https://github.com/actions/setup-node/workflows/build-test/badge.svg"></a> <a href="https://github.com/actions/setup-node/actions?query=workflow%3Aversions"><img alt="versions status" src="https://github.com/actions/setup-node/workflows/versions/badge.svg"></a> <a href="https://github.com/actions/setup-node/actions?query=workflow%3Aproxy"><img alt="proxy status" src="https://github.com/actions/setup-node/workflows/proxy/badge.svg"></a>
</p>
Expand Down Expand Up @@ -72,6 +71,7 @@ steps:
- run: npm test
```


## Matrix Testing:
```yaml
jobs:
Expand All @@ -93,12 +93,13 @@ jobs:
## Advanced usage

1. [Check latest version](docs/advanced-usage.md#check-latest-version)
2. [Using different architectures](docs/advanced-usage.md#architecture)
3. [Caching packages dependencies](docs/advanced-usage.md#caching-packages-dependencies)
4. [Using multiple operating systems and architectures](docs/advanced-usage.md#multiple-operating-systems-and-architectures)
5. [Publishing to npmjs and GPR with npm](docs/advanced-usage.md#publish-to-npmjs-and-gpr-with-npm)
6. [Publishing to npmjs and GPR with yarn](docs/advanced-usage.md#publish-to-npmjs-and-gpr-with-yarn)
7. [Using private packages](docs/advanced-usage.md#use-private-packages)
2. [Using a node version file](docs/advanced-usage.md#Node-version-file)
3. [Using different architectures](docs/advanced-usage.md#architecture)
4. [Caching packages dependencies](docs/advanced-usage.md#caching-packages-dependencies)
5. [Using multiple operating systems and architectures](docs/advanced-usage.md#multiple-operating-systems-and-architectures)
6. [Publishing to npmjs and GPR with npm](docs/advanced-usage.md#publish-to-npmjs-and-gpr-with-npm)
7. [Publishing to npmjs and GPR with yarn](docs/advanced-usage.md#publish-to-npmjs-and-gpr-with-yarn)
8. [Using private packages](docs/advanced-usage.md#use-private-packages)

# License

Expand Down
1 change: 1 addition & 0 deletions __tests__/data/.n-node-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
lts/*
1 change: 1 addition & 0 deletions __tests__/data/.node-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
v12
1 change: 1 addition & 0 deletions __tests__/data/.nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
v14
100 changes: 98 additions & 2 deletions __tests__/installer.test.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import * as core from '@actions/core';
import * as io from '@actions/io';
import * as tc from '@actions/tool-cache';
import * as im from '../src/installer';
import fs from 'fs';
import cp from 'child_process';
import osm = require('os');
import path from 'path';
import * as main from '../src/main';
import * as im from '../src/installer';
import * as auth from '../src/authutil';

let nodeTestManifest = require('./data/versions-manifest.json');
Expand All @@ -31,9 +31,11 @@ describe('setup-node', () => {
let dbgSpy: jest.SpyInstance;
let whichSpy: jest.SpyInstance;
let existsSpy: jest.SpyInstance;
let readFileSyncSpy: jest.SpyInstance;
let mkdirpSpy: jest.SpyInstance;
let execSpy: jest.SpyInstance;
let authSpy: jest.SpyInstance;
let parseNodeVersionSpy: jest.SpyInstance;

beforeEach(() => {
// @actions/core
Expand All @@ -58,6 +60,7 @@ describe('setup-node', () => {
cacheSpy = jest.spyOn(tc, 'cacheDir');
getManifestSpy = jest.spyOn(tc, 'getManifestFromRepo');
getDistSpy = jest.spyOn(im, 'getVersionsFromDist');
parseNodeVersionSpy = jest.spyOn(im, 'parseNodeVersionFile');

// io
whichSpy = jest.spyOn(io, 'which');
Expand Down Expand Up @@ -91,6 +94,10 @@ describe('setup-node', () => {
// uncomment to see debug output
// process.stderr.write(msg + '\n');
});
warningSpy.mockImplementation(msg => {
// uncomment to debug
// process.stderr.write('log:' + line + '\n');
});
});

afterEach(() => {
Expand All @@ -101,6 +108,7 @@ describe('setup-node', () => {

afterAll(async () => {
console.log('::stoptoken::'); // Re-enable executing of runner commands when running tests in actions
jest.restoreAllMocks();
}, 100000);

//--------------------------------------------------
Expand Down Expand Up @@ -343,7 +351,7 @@ describe('setup-node', () => {
expect(cnSpy).toHaveBeenCalledWith(`::error::${errMsg}${osm.EOL}`);
});

it('Acquires specified architecture of node', async () => {
it('acquires specified architecture of node', async () => {
for (const {arch, version, osSpec} of [
{arch: 'x86', version: '12.16.2', osSpec: 'win32'},
{arch: 'x86', version: '14.0.0', osSpec: 'win32'}
Expand Down Expand Up @@ -549,6 +557,94 @@ describe('setup-node', () => {
});
});

describe('node-version-file flag', () => {
it('not used if node-version is provided', async () => {
// Arrange
inputs['node-version'] = '12';

// Act
await main.run();

// Assert
expect(parseNodeVersionSpy).toHaveBeenCalledTimes(0);
});

it('not used if node-version-file not provided', async () => {
// Act
await main.run();

// Assert
expect(parseNodeVersionSpy).toHaveBeenCalledTimes(0);
});

it('reads node-version-file if provided', async () => {
// Arrange
const versionSpec = 'v14';
const versionFile = '.nvmrc';
const expectedVersionSpec = '14';
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';
const versionFile = '.nvmrc';
const expectedVersionSpec = '14';
process.env['GITHUB_WORKSPACE'] = path.join(__dirname, '..');
inputs['node-version-file'] = versionFile;

parseNodeVersionSpy.mockImplementation(() => expectedVersionSpec);

// Act
await main.run();

// Assert
expect(existsSpy).toHaveBeenCalledTimes(0);
expect(parseNodeVersionSpy).not.toHaveBeenCalled();
expect(warningSpy).toHaveBeenCalledWith(
'Both node-version and node-version-file inputs are specified, only node-version will be used'
);
});

it('should throw an error if node-version-file is not found', async () => {
const versionFile = '.nvmrc';
const versionFilePath = path.join(__dirname, '..', versionFile);
inputs['node-version-file'] = versionFile;

inSpy.mockImplementation(name => inputs[name]);
existsSpy.mockImplementationOnce(
input => input === path.join(__dirname, 'data', versionFile)
);

// Act
await main.run();

// Assert
expect(existsSpy).toHaveBeenCalled();
expect(existsSpy).toHaveReturnedWith(false);
expect(parseNodeVersionSpy).not.toHaveBeenCalled();
expect(cnSpy).toHaveBeenCalledWith(
`::error::The specified node version file at: ${versionFilePath} does not exist${osm.EOL}`
);
});
});

describe('LTS version', () => {
beforeEach(() => {
os.platform = 'linux';
Expand Down
2 changes: 2 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ inputs:
default: 'false'
node-version:
description: 'Version Spec of the version to use. Examples: 12.x, 10.15.1, >=10.15.0'
node-version-file:
description: 'File containing the version Spec of the version to use. Examples: .nvmrc'
architecture:
description: 'Target architecture for Node to use. Examples: x86, x64. Will use system architecture by default.'
check-latest:
Expand Down
Loading