From 57660207889ac4a5ec580351193d2cc38d2998e4 Mon Sep 17 00:00:00 2001 From: Amin Yahyaabadi Date: Thu, 3 Sep 2020 08:47:25 -0500 Subject: [PATCH] feat: add arch tests Co-Authored-By: Tyler Ang-Wanek --- .../mock-node-v8.8.0-linux-x86.tar.gz | Bin 0 -> 211 bytes .../__fixtures__/mock-node-v8.8.0-win-x86.7z | Bin 0 -> 211 bytes .../mock-node-v8.9.1-linux-x64.tar.gz | Bin 0 -> 212 bytes .../__fixtures__/mock-node-v8.9.1-win-x64.7z | Bin 0 -> 213 bytes __tests__/installer.test.ts | 72 ++++++++++++++++++ 5 files changed, 72 insertions(+) create mode 100644 __tests__/__fixtures__/mock-node-v8.8.0-linux-x86.tar.gz create mode 100644 __tests__/__fixtures__/mock-node-v8.8.0-win-x86.7z create mode 100644 __tests__/__fixtures__/mock-node-v8.9.1-linux-x64.tar.gz create mode 100644 __tests__/__fixtures__/mock-node-v8.9.1-win-x64.7z diff --git a/__tests__/__fixtures__/mock-node-v8.8.0-linux-x86.tar.gz b/__tests__/__fixtures__/mock-node-v8.8.0-linux-x86.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..fd88664a8a7f04170d46129113f8fc7b88d2b826 GIT binary patch literal 211 zcmV;^04)C>iwFQcV~$+_1MSk?YQrEHfMJh!72ZHv6a6%|lXk)a!9r`=^zN4o%68D~ z2V`UPeGokO1cldhc#hS%-LxB14SgD?YHIyf6=h~2$gPBf(=K9Y)c>ny;pY*)aA?q&bIK};#yWJ3<{`zGA00000000000002^ Nj#t=hVFmyw002KFZCC&R literal 0 HcmV?d00001 diff --git a/__tests__/__fixtures__/mock-node-v8.8.0-win-x86.7z b/__tests__/__fixtures__/mock-node-v8.8.0-win-x86.7z new file mode 100644 index 0000000000000000000000000000000000000000..9a16b0912b48cd5ce688931498b33d2ee3f50966 GIT binary patch literal 211 zcmXr7+Ou9=hJj_W6i>$_1_)4u(vO~=jALYwEXl|$Rsf>B{1S!4JcZPX)a25V#H5^5 zE}*(bWA=6Y=U*F$@V|aFXTO>4zl!DGG#K`J>`2s!V4r=={_ozqdRJWg{^zB$x;WSr zG96HEx4P7M?S{^b)72HMCIP{pt)9xxzsUY~kL&lcEd|QjTMP@d^wz{1PYddH5 zTgU8(r%f^MiuTTMFzD|G+9=K@$H-a2z|PIcz^Kg3$jBPYAi%)D)3A+;F}H&|hk*eA D;;BkK literal 0 HcmV?d00001 diff --git a/__tests__/__fixtures__/mock-node-v8.9.1-linux-x64.tar.gz b/__tests__/__fixtures__/mock-node-v8.9.1-linux-x64.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..3a482445663d36b0561995378b3ee110ab278c4a GIT binary patch literal 212 zcmV;_04x6=iwFQQVvbz^1MSk$O2aS|fZ<&G6nTNpq{&J2aXJmGP%_w3SKr=NknLi1 z3PBP7k3cR?Ab~%5|D2kaht1>0HbbAsshNVmS5=u=jI!)Din-iBDC@*KFA~~T8S727 zN=w~mTsIy|chFju*C8EF>*sFG|EPSm|F+K+|G+o;`{>{M2k+?r6W04LlR9@SfkW`? z{at(RFK+HHVvW+K&h?-B=l#pBKk9kqebHUkX-ZFH>9#|<`|Xzj00000000000002s OE8YM%&4C>NC;$M&dTOBn literal 0 HcmV?d00001 diff --git a/__tests__/__fixtures__/mock-node-v8.9.1-win-x64.7z b/__tests__/__fixtures__/mock-node-v8.9.1-win-x64.7z new file mode 100644 index 0000000000000000000000000000000000000000..dda8188f32ff927873fd7f8d9150c8649e0c157d GIT binary patch literal 213 zcmXr7+Ou9=hJhtMV&(TK3=p6QrQ3e*TEfU6S(1@itN=uL`6UX8c?zi&smY}!iAg!B zTtIb=#_a3(&%ZVh;eY*V&VDo7e-+EWX)x^d*pa9c!9M$#{olQJ^{%+~{m)Bhb#bsM zWICYSZgr{i+LiciDskVXINSx-q%#`$?EFx=+W+^@_i4JdYW%ZKyM{T}GS3v{V0n9I zBd2@)dfwgAAEj;cp1)dh@-@&-aW*+d&N2peZbk-1WoAZ3)>sAs1_qvnZCs4eMsK$= GFaQAO1xt$n literal 0 HcmV?d00001 diff --git a/__tests__/installer.test.ts b/__tests__/installer.test.ts index 6f3a411eb..71b7b8058 100644 --- a/__tests__/installer.test.ts +++ b/__tests__/installer.test.ts @@ -9,6 +9,7 @@ import * as main from '../src/main'; import * as im from '../src/installer'; import * as auth from '../src/authutil'; import {context} from '@actions/github'; +import nock = require('nock'); let nodeTestManifest = require('./data/versions-manifest.json'); let nodeTestDist = require('./data/node-dist-index.json'); @@ -40,7 +41,20 @@ describe('setup-node', () => { let execSpy: jest.SpyInstance; let authSpy: jest.SpyInstance; + const IS_WINDOWS = process.platform === 'win32'; + const toolDir = path.join( + __dirname, + 'runner', + path.join( + Math.random() + .toString(36) + .substring(7) + ), + 'tools' + ); + beforeEach(() => { + nock.cleanAll(); // @actions/core inputs = {}; inSpy = jest.spyOn(core, 'getInput'); @@ -337,6 +351,64 @@ describe('setup-node', () => { expect(cnSpy).toHaveBeenCalledWith(`::error::${errMsg}${osm.EOL}`); }); + it('Acquires specified x86 version of node if no matching version is installed', async () => { + const arch = 'x86'; + const version = '8.8.0'; + const fileExtension = IS_WINDOWS ? '7z' : 'tar.gz'; + const platform = { + linux: 'linux', + darwin: 'darwin', + win32: 'win' + }[process.platform]; + const fileName = `node-v${version}-${platform}-${arch}.${fileExtension}`; + const pathOnNodeJs = `/dist/v${version}/${fileName}`; + const scope = nock('nodejs.org') + .get(pathOnNodeJs) + .replyWithFile( + 200, + path.join(__dirname, '__fixtures__', `mock-${fileName}`) + ); + await im.getNode(version, true, true, arch); + const nodeDir = path.join(toolDir, 'node', version, arch); + + expect(scope.isDone()).toBe(true); + expect(fs.existsSync(`${nodeDir}.complete`)).toBe(true); + if (IS_WINDOWS) { + expect(fs.existsSync(path.join(nodeDir, 'node.exe'))).toBe(true); + } else { + expect(fs.existsSync(path.join(nodeDir, 'bin', 'node'))).toBe(true); + } + }, 100000); + + it('Acquires specified x64 version of node if no matching version is installed', async () => { + const arch = 'x64'; + const version = '8.9.1'; + const fileExtension = IS_WINDOWS ? '7z' : 'tar.gz'; + const platform = { + linux: 'linux', + darwin: 'darwin', + win32: 'win' + }[process.platform]; + const fileName = `node-v${version}-${platform}-${arch}.${fileExtension}`; + const pathOnNodeJs = `/dist/v${version}/${fileName}`; + const scope = nock('nodejs.org') + .get(pathOnNodeJs) + .replyWithFile( + 200, + path.join(__dirname, '__fixtures__', `mock-${fileName}`) + ); + await im.getNode(version, true, true, arch); + const nodeDir = path.join(toolDir, 'node', version, arch); + + expect(scope.isDone()).toBe(true); + expect(fs.existsSync(`${nodeDir}.complete`)).toBe(true); + if (IS_WINDOWS) { + expect(fs.existsSync(path.join(nodeDir, 'node.exe'))).toBe(true); + } else { + expect(fs.existsSync(path.join(nodeDir, 'bin', 'node'))).toBe(true); + } + }, 100000); + describe('check-latest flag', () => { it('use local version and dont check manifest if check-latest is not specified', async () => { os.platform = 'linux';