diff --git a/__tests__/auth.test.ts b/__tests__/auth.test.ts index e7b4c032..58b1134b 100644 --- a/__tests__/auth.test.ts +++ b/__tests__/auth.test.ts @@ -17,18 +17,19 @@ jest.mock('@actions/exec', () => { }; }); +const tempDir = path.join(__dirname, 'runner', 'temp'); +process.env['RUNNER_TEMP'] = tempDir; + import * as auth from '../src/auth'; const m2Dir = path.join(__dirname, auth.M2_DIR); const settingsFile = path.join(m2Dir, auth.SETTINGS_FILE); -const tempDir = path.join(__dirname, 'runner', 'temp'); const privateKeyFile = path.join(tempDir, auth.PRIVATE_KEY_FILE); -process.env['RUNNER_TEMP'] = tempDir; - describe('auth tests', () => { beforeEach(async () => { await io.rmRF(m2Dir); + await io.mkdirP(tempDir); }, 300000); afterAll(async () => { diff --git a/__tests__/util.test.ts b/__tests__/util.test.ts new file mode 100644 index 00000000..d7809b51 --- /dev/null +++ b/__tests__/util.test.ts @@ -0,0 +1,56 @@ +import path = require('path'); + +const env = process.env; + +describe('util tests', () => { + beforeEach(() => { + process.env = Object.assign({}, env); + Object.defineProperty(process, 'platform', {value: 'linux'}); + }); + + describe('getTempDir', () => { + it('gets temp dir using env', () => { + process.env['RUNNER_TEMP'] = 'defaulttmp' + const util = require('../src/util'); + + const tempDir = util.getTempDir(); + + expect(tempDir).toEqual(process.env['RUNNER_TEMP']); + }); + + it('gets temp dir for windows using userprofile', () => { + Object.defineProperty(process, 'platform', {value: 'win32'}); + process.env['USERPROFILE'] = 'winusertmp'; + const util = require('../src/util'); + + const tempDir = util.getTempDir(); + + expect(tempDir).toEqual(path.join(process.env['USERPROFILE'], 'actions', 'temp')); + }); + + it('gets temp dir for windows using c drive', () => { + Object.defineProperty(process, 'platform', {value: 'win32'}); + const util = require('../src/util'); + + const tempDir = util.getTempDir(); + + expect(tempDir).toEqual(path.join('C:\\', 'actions', 'temp')); + }); + + it('gets temp dir for mac', () => { + Object.defineProperty(process, 'platform', {value: 'darwin'}); + const util = require('../src/util'); + + const tempDir = util.getTempDir(); + + expect(tempDir).toEqual(path.join('/Users', 'actions', 'temp')); + }); + + it('gets temp dir for linux', () => { + const util = require('../src/util'); + const tempDir = util.getTempDir(); + + expect(tempDir).toEqual(path.join('/home', 'actions', 'temp')); + }); + }); +}); diff --git a/dist/index.js b/dist/index.js index b708bbe3..c879345f 100644 Binary files a/dist/index.js and b/dist/index.js differ diff --git a/src/auth.ts b/src/auth.ts index 6e6f2afa..e7978d55 100644 --- a/src/auth.ts +++ b/src/auth.ts @@ -4,9 +4,10 @@ import * as path from 'path'; import * as core from '@actions/core'; import * as io from '@actions/io'; import * as exec from '@actions/exec'; +import * as util from './util'; export const M2_DIR = '.m2'; -export const TEMP_DIR = process.env['RUNNER_TEMP'] || ''; +export const TEMP_DIR = util.getTempDir(); export const SETTINGS_FILE = 'settings.xml'; export const PRIVATE_KEY_FILE = 'private-key.asc'; diff --git a/src/installer.ts b/src/installer.ts index cce8fa3d..d7a44710 100644 --- a/src/installer.ts +++ b/src/installer.ts @@ -1,5 +1,3 @@ -let tempDirectory = process.env['RUNNER_TEMP'] || ''; - import * as core from '@actions/core'; import * as io from '@actions/io'; import * as exec from '@actions/exec'; @@ -8,23 +6,10 @@ import * as tc from '@actions/tool-cache'; import * as fs from 'fs'; import * as path from 'path'; import * as semver from 'semver'; +import * as util from './util'; -const IS_WINDOWS = process.platform === 'win32'; - -if (!tempDirectory) { - let baseLocation; - if (IS_WINDOWS) { - // On windows use the USERPROFILE env variable - baseLocation = process.env['USERPROFILE'] || 'C:\\'; - } else { - if (process.platform === 'darwin') { - baseLocation = '/Users'; - } else { - baseLocation = '/home'; - } - } - tempDirectory = path.join(baseLocation, 'actions', 'temp'); -} +const tempDirectory = util.getTempDir(); +const IS_WINDOWS = util.isWindows(); export async function getJava( version: string, diff --git a/src/util.ts b/src/util.ts new file mode 100644 index 00000000..a061593b --- /dev/null +++ b/src/util.ts @@ -0,0 +1,24 @@ +import * as path from 'path'; + +export function getTempDir() { + let tempDirectory = process.env.RUNNER_TEMP; + if (tempDirectory === undefined) { + let baseLocation; + if (isWindows()) { + // On windows use the USERPROFILE env variable + baseLocation = (process.env['USERPROFILE']) ? process.env['USERPROFILE'] : 'C:\\'; + } else { + if (process.platform === 'darwin') { + baseLocation = '/Users'; + } else { + baseLocation = '/home'; + } + } + tempDirectory = path.join(baseLocation, 'actions', 'temp'); + } + return tempDirectory; +} + +export function isWindows() { + return (process.platform === 'win32'); +} \ No newline at end of file