mirror of
				https://github.com/actions/setup-go.git
				synced 2025-10-31 16:13:43 +00:00 
			
		
		
		
	couple tests
This commit is contained in:
		
							parent
							
								
									a030287975
								
							
						
					
					
						commit
						1c06f0e82e
					
				| @ -1,13 +1,12 @@ | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| import * as core from '@actions/core'; | ||||
| import fs = require('fs'); | ||||
| import * as io from '@actions/io'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| import fs from 'fs'; | ||||
| import cp from 'child_process'; | ||||
| import osm = require('os'); | ||||
| import path = require('path'); | ||||
| import {run} from '../src/main'; | ||||
| import * as httpm from '@actions/http-client'; | ||||
| import path from 'path'; | ||||
| import * as main from '../src/main'; | ||||
| import * as im from '../src/installer'; | ||||
| import * as sys from '../src/system'; | ||||
| import {ITypedResponse} from '@actions/http-client/interfaces'; | ||||
| 
 | ||||
| let goJsonData = require('./data/golang-dl.json'); | ||||
| 
 | ||||
| @ -25,6 +24,11 @@ describe('setup-go', () => { | ||||
|   let dlSpy: jest.SpyInstance; | ||||
|   let exSpy: jest.SpyInstance; | ||||
|   let cacheSpy: jest.SpyInstance; | ||||
|   let dbgSpy: jest.SpyInstance; | ||||
|   let whichSpy: jest.SpyInstance; | ||||
|   let existsSpy: jest.SpyInstance; | ||||
|   let mkdirpSpy: jest.SpyInstance; | ||||
|   let execSpy: jest.SpyInstance; | ||||
| 
 | ||||
|   beforeEach(() => { | ||||
|     // @actions/core
 | ||||
| @ -32,12 +36,13 @@ describe('setup-go', () => { | ||||
|     inSpy = jest.spyOn(core, 'getInput'); | ||||
|     inSpy.mockImplementation(name => inputs[name]); | ||||
| 
 | ||||
|     // node 'os'
 | ||||
|     // node
 | ||||
|     os = {}; | ||||
|     platSpy = jest.spyOn(osm, 'platform'); | ||||
|     platSpy.mockImplementation(() => os['platform']); | ||||
|     archSpy = jest.spyOn(osm, 'arch'); | ||||
|     archSpy.mockImplementation(() => os['arch']); | ||||
|     execSpy = jest.spyOn(cp, 'execSync'); | ||||
| 
 | ||||
|     // @actions/tool-cache
 | ||||
|     findSpy = jest.spyOn(tc, 'find'); | ||||
| @ -46,9 +51,15 @@ describe('setup-go', () => { | ||||
|     cacheSpy = jest.spyOn(tc, 'cacheDir'); | ||||
|     getSpy = jest.spyOn(im, 'getVersions'); | ||||
| 
 | ||||
|     // io
 | ||||
|     whichSpy = jest.spyOn(io, 'which'); | ||||
|     existsSpy = jest.spyOn(fs, 'existsSync'); | ||||
|     mkdirpSpy = jest.spyOn(io, 'mkdirP'); | ||||
| 
 | ||||
|     // writes
 | ||||
|     cnSpy = jest.spyOn(process.stdout, 'write'); | ||||
|     logSpy = jest.spyOn(console, 'log'); | ||||
|     dbgSpy = jest.spyOn(main, '_debug'); | ||||
|     getSpy.mockImplementation(() => <im.IGoVersion[]>goJsonData); | ||||
|     cnSpy.mockImplementation(line => { | ||||
|       // uncomment to debug
 | ||||
| @ -58,11 +69,16 @@ describe('setup-go', () => { | ||||
|       // uncomment to debug
 | ||||
|       // process.stderr.write('log:' + line + '\n');
 | ||||
|     }); | ||||
|     dbgSpy.mockImplementation(msg => { | ||||
|       // uncomment to see debug output
 | ||||
|       // process.stderr.write(msg + '\n');
 | ||||
|     }); | ||||
|   }); | ||||
| 
 | ||||
|   afterEach(() => { | ||||
|     jest.resetAllMocks(); | ||||
|     jest.clearAllMocks(); | ||||
|     //jest.restoreAllMocks();
 | ||||
|   }); | ||||
| 
 | ||||
|   afterAll(async () => {}, 100000); | ||||
| @ -164,7 +180,7 @@ describe('setup-go', () => { | ||||
| 
 | ||||
|     let toolPath = path.normalize('/cache/go/1.13.0/x64'); | ||||
|     findSpy.mockImplementation(() => toolPath); | ||||
|     await run(); | ||||
|     await main.run(); | ||||
| 
 | ||||
|     expect(logSpy).toHaveBeenCalledWith(`Setup go stable version spec 1.13.0`); | ||||
|   }); | ||||
| @ -176,7 +192,7 @@ describe('setup-go', () => { | ||||
| 
 | ||||
|     let toolPath = path.normalize('/cache/go/1.13.0/x64'); | ||||
|     findSpy.mockImplementation(() => toolPath); | ||||
|     await run(); | ||||
|     await main.run(); | ||||
| 
 | ||||
|     expect(logSpy).toHaveBeenCalledWith(`Setup go stable version spec 1.13.0`); | ||||
|   }); | ||||
| @ -186,7 +202,7 @@ describe('setup-go', () => { | ||||
| 
 | ||||
|     let toolPath = path.normalize('/cache/go/1.13.0/x64'); | ||||
|     findSpy.mockImplementation(() => toolPath); | ||||
|     await run(); | ||||
|     await main.run(); | ||||
| 
 | ||||
|     let expPath = path.join(toolPath, 'bin'); | ||||
|   }); | ||||
| @ -195,7 +211,7 @@ describe('setup-go', () => { | ||||
|     inputs['go-version'] = '1.13.0'; | ||||
|     let toolPath = path.normalize('/cache/go/1.13.0/x64'); | ||||
|     findSpy.mockImplementation(() => toolPath); | ||||
|     await run(); | ||||
|     await main.run(); | ||||
| 
 | ||||
|     let expPath = path.join(toolPath, 'bin'); | ||||
|     expect(cnSpy).toHaveBeenCalledWith(`::add-path::${expPath}${osm.EOL}`); | ||||
| @ -208,7 +224,7 @@ describe('setup-go', () => { | ||||
|     findSpy.mockImplementation(() => { | ||||
|       throw new Error(errMsg); | ||||
|     }); | ||||
|     await run(); | ||||
|     await main.run(); | ||||
|     expect(cnSpy).toHaveBeenCalledWith('::error::' + errMsg + osm.EOL); | ||||
|   }); | ||||
| 
 | ||||
| @ -223,7 +239,7 @@ describe('setup-go', () => { | ||||
|     let toolPath = path.normalize('/cache/go/1.13.0/x64'); | ||||
|     exSpy.mockImplementation(() => '/some/other/temp/path'); | ||||
|     cacheSpy.mockImplementation(() => toolPath); | ||||
|     await run(); | ||||
|     await main.run(); | ||||
| 
 | ||||
|     let expPath = path.join(toolPath, 'bin'); | ||||
| 
 | ||||
| @ -239,7 +255,7 @@ describe('setup-go', () => { | ||||
|     inputs['go-version'] = '9.99.9'; | ||||
| 
 | ||||
|     findSpy.mockImplementation(() => ''); | ||||
|     await run(); | ||||
|     await main.run(); | ||||
| 
 | ||||
|     expect(cnSpy).toHaveBeenCalledWith( | ||||
|       `::error::Could not find a version that satisfied version spec: 9.99.9${osm.EOL}` | ||||
| @ -257,7 +273,7 @@ describe('setup-go', () => { | ||||
|     dlSpy.mockImplementation(() => { | ||||
|       throw new Error(errMsg); | ||||
|     }); | ||||
|     await run(); | ||||
|     await main.run(); | ||||
| 
 | ||||
|     expect(cnSpy).toHaveBeenCalledWith( | ||||
|       `::error::Failed to download version 1.13.1: Error: ${errMsg}${osm.EOL}` | ||||
| @ -273,13 +289,39 @@ describe('setup-go', () => { | ||||
| 
 | ||||
|     findSpy.mockImplementation(() => ''); | ||||
|     getSpy.mockImplementation(() => null); | ||||
|     await run(); | ||||
|     await main.run(); | ||||
| 
 | ||||
|     expect(cnSpy).toHaveBeenCalledWith( | ||||
|       `::error::Failed to download version 1.13.1: Error: golang download url did not return results${osm.EOL}` | ||||
|     ); | ||||
|   }); | ||||
| 
 | ||||
|   it('does not add BIN if go is not in path', async () => { | ||||
|     whichSpy.mockImplementation(async () => { | ||||
|       return ''; | ||||
|     }); | ||||
|     let added = await main.addBinToPath(); | ||||
|     expect(added).toBeFalsy(); | ||||
|   }); | ||||
| 
 | ||||
|   it('adds bin if dir not exists', async () => { | ||||
|     whichSpy.mockImplementation(async () => { | ||||
|       return '/usr/local/go/bin/go'; | ||||
|     }); | ||||
| 
 | ||||
|     execSpy.mockImplementation(() => { | ||||
|       return '/Users/testuser/go'; | ||||
|     }); | ||||
| 
 | ||||
|     mkdirpSpy.mockImplementation(async () => {}); | ||||
|     existsSpy.mockImplementation(path => { | ||||
|       return false; | ||||
|     }); | ||||
| 
 | ||||
|     let added = await main.addBinToPath(); | ||||
|     expect(added).toBeTruthy; | ||||
|   }); | ||||
| 
 | ||||
|   // 1.13.1 => 1.13.1
 | ||||
|   // 1.13 => 1.13.0
 | ||||
|   // 1.10beta1 => 1.10.0-beta1, 1.10rc1 => 1.10.0-rc1
 | ||||
|  | ||||
							
								
								
									
										36
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										36
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							| @ -1274,14 +1274,17 @@ var __importStar = (this && this.__importStar) || function (mod) { | ||||
|     result["default"] = mod; | ||||
|     return result; | ||||
| }; | ||||
| var __importDefault = (this && this.__importDefault) || function (mod) { | ||||
|     return (mod && mod.__esModule) ? mod : { "default": mod }; | ||||
| }; | ||||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||||
| const core = __importStar(__webpack_require__(470)); | ||||
| const io = __importStar(__webpack_require__(1)); | ||||
| const tc = __importStar(__webpack_require__(533)); | ||||
| const installer = __importStar(__webpack_require__(749)); | ||||
| const path = __importStar(__webpack_require__(622)); | ||||
| const cp = __importStar(__webpack_require__(129)); | ||||
| const fs = __importStar(__webpack_require__(747)); | ||||
| const path_1 = __importDefault(__webpack_require__(622)); | ||||
| const child_process_1 = __importDefault(__webpack_require__(129)); | ||||
| const fs_1 = __importDefault(__webpack_require__(747)); | ||||
| function run() { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         try { | ||||
| @ -1303,7 +1306,7 @@ function run() { | ||||
|                 } | ||||
|                 if (installDir) { | ||||
|                     core.exportVariable('GOROOT', installDir); | ||||
|                     core.addPath(path.join(installDir, 'bin')); | ||||
|                     core.addPath(path_1.default.join(installDir, 'bin')); | ||||
|                     console.log('Added go to the path'); | ||||
|                     let added = addBinToPath(); | ||||
|                     core.debug(`add bin ${added}`); | ||||
| @ -1313,7 +1316,7 @@ function run() { | ||||
|                 } | ||||
|             } | ||||
|             // add problem matchers
 | ||||
|             const matchersPath = path.join(__dirname, '..', 'matchers.json'); | ||||
|             const matchersPath = path_1.default.join(__dirname, '..', 'matchers.json'); | ||||
|             console.log(`##[add-matcher]${matchersPath}`); | ||||
|         } | ||||
|         catch (error) { | ||||
| @ -1326,23 +1329,23 @@ function addBinToPath() { | ||||
|     return __awaiter(this, void 0, void 0, function* () { | ||||
|         let added = false; | ||||
|         let g = yield io.which('go'); | ||||
|         core.debug(`which go :${g}:`); | ||||
|         _debug(`which go :${g}:`); | ||||
|         if (!g) { | ||||
|             core.debug('go not in the path'); | ||||
|             _debug('go not in the path'); | ||||
|             return added; | ||||
|         } | ||||
|         let buf = cp.execSync('go env GOPATH'); | ||||
|         let buf = child_process_1.default.execSync('go env GOPATH'); | ||||
|         if (buf) { | ||||
|             let gp = buf.toString().trim(); | ||||
|             core.debug(`go env GOPATH :${gp}:`); | ||||
|             if (!fs.existsSync(gp)) { | ||||
|             _debug(`go env GOPATH :${gp}:`); | ||||
|             if (!fs_1.default.existsSync(gp)) { | ||||
|                 // some of the hosted images have go install but not profile dir
 | ||||
|                 core.debug(`creating ${gp}`); | ||||
|                 _debug(`creating ${gp}`); | ||||
|                 io.mkdirP(gp); | ||||
|             } | ||||
|             let bp = path.join(gp, 'bin'); | ||||
|             if (!fs.existsSync(bp)) { | ||||
|                 core.debug(`creating ${bp}`); | ||||
|             let bp = path_1.default.join(gp, 'bin'); | ||||
|             if (!fs_1.default.existsSync(bp)) { | ||||
|                 _debug(`creating ${bp}`); | ||||
|                 io.mkdirP(bp); | ||||
|             } | ||||
|             core.addPath(bp); | ||||
| @ -1351,6 +1354,11 @@ function addBinToPath() { | ||||
|         return added; | ||||
|     }); | ||||
| } | ||||
| exports.addBinToPath = addBinToPath; | ||||
| function _debug(message) { | ||||
|     core.debug(message); | ||||
| } | ||||
| exports._debug = _debug; | ||||
| 
 | ||||
| 
 | ||||
| /***/ }), | ||||
|  | ||||
							
								
								
									
										22
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								src/main.ts
									
									
									
									
									
								
							| @ -2,9 +2,9 @@ import * as core from '@actions/core'; | ||||
| import * as io from '@actions/io'; | ||||
| import * as tc from '@actions/tool-cache'; | ||||
| import * as installer from './installer'; | ||||
| import * as path from 'path'; | ||||
| import * as cp from 'child_process'; | ||||
| import * as fs from 'fs'; | ||||
| import path from 'path'; | ||||
| import cp from 'child_process'; | ||||
| import fs from 'fs'; | ||||
| 
 | ||||
| export async function run() { | ||||
|   try { | ||||
| @ -55,28 +55,28 @@ export async function run() { | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| async function addBinToPath(): Promise<boolean> { | ||||
| export async function addBinToPath(): Promise<boolean> { | ||||
|   let added = false; | ||||
|   let g = await io.which('go'); | ||||
|   core.debug(`which go :${g}:`); | ||||
|   _debug(`which go :${g}:`); | ||||
|   if (!g) { | ||||
|     core.debug('go not in the path'); | ||||
|     _debug('go not in the path'); | ||||
|     return added; | ||||
|   } | ||||
| 
 | ||||
|   let buf = cp.execSync('go env GOPATH'); | ||||
|   if (buf) { | ||||
|     let gp = buf.toString().trim(); | ||||
|     core.debug(`go env GOPATH :${gp}:`); | ||||
|     _debug(`go env GOPATH :${gp}:`); | ||||
|     if (!fs.existsSync(gp)) { | ||||
|       // some of the hosted images have go install but not profile dir
 | ||||
|       core.debug(`creating ${gp}`); | ||||
|       _debug(`creating ${gp}`); | ||||
|       io.mkdirP(gp); | ||||
|     } | ||||
| 
 | ||||
|     let bp = path.join(gp, 'bin'); | ||||
|     if (!fs.existsSync(bp)) { | ||||
|       core.debug(`creating ${bp}`); | ||||
|       _debug(`creating ${bp}`); | ||||
|       io.mkdirP(bp); | ||||
|     } | ||||
| 
 | ||||
| @ -85,3 +85,7 @@ async function addBinToPath(): Promise<boolean> { | ||||
|   } | ||||
|   return added; | ||||
| } | ||||
| 
 | ||||
| export function _debug(message: string) { | ||||
|   core.debug(message); | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user