1
0
Fork 0

Make use of @actions/exit in @actions/toolkit

pull/1/head
Jonathan Clem 2019-04-20 10:54:42 -04:00
parent cca9523c73
commit b3e79eb868
No known key found for this signature in database
GPG Key ID: 48C5B22E9FD6E80F
4 changed files with 73 additions and 83 deletions

View File

@ -1,14 +1,16 @@
import * as exitPkg from '@actions/exit'
import {Signale} from 'signale'
import {Exit, ExitCode} from '../src/exit'
import {Exit} from '../src/exit'
describe('Exit', () => {
const tests: [keyof Exit, keyof Signale, ExitCode][] = [
['success', 'success', ExitCode.Success],
['neutral', 'info', ExitCode.Neutral],
['failure', 'fatal', ExitCode.Failure]
]
jest.mock('@actions/exit')
describe.each(tests)('%s', (method, log, code) => {
const tests: [keyof Exit, keyof Signale][] = [
['success', 'success'],
['neutral', 'info'],
['failure', 'fatal']
]
describe.each(tests)('%s', (method, log) => {
let logger: Signale
let exit: Exit
@ -23,14 +25,13 @@ describe('Exit', () => {
exit = new Exit(logger)
})
it('exits with the expected code', () => {
it('exits with the expected method', () => {
exit[method]()
expect(process.exit).toHaveBeenCalledWith(code)
expect(exitPkg[method]).toHaveBeenCalled()
})
it('logs the expected message', () => {
exit[method]('hello')
expect(logger[log]).toHaveBeenCalledWith('hello')
})
})
})

View File

@ -1,9 +1,10 @@
import * as exitPkg from '@actions/exit'
import {Signale} from 'signale'
import {ExitCode} from '../src/exit'
import {Toolkit} from '../src/toolkit'
describe('Toolkit', () => {
describe('.run', () => {
jest.mock('@actions/exit')
describe('.run', () => {
it('runs a sync function', async () => {
const cb = jest.fn(() => true)
const value = await Toolkit.run(cb)
@ -29,9 +30,9 @@ describe('Toolkit', () => {
expect(exitFailure).toHaveBeenCalledWith(err)
})
})
})
it('asserts required keys are present', async () => {
it('asserts required keys are present', async () => {
const missingKey = '__DOES_NOT_EXIST__'
Reflect.deleteProperty(process.env, missingKey)
@ -42,9 +43,8 @@ describe('Toolkit', () => {
new Toolkit({logger, requiredEnv: [missingKey]})
expect(process.exit).toHaveBeenCalledWith(ExitCode.Failure)
expect(exitPkg.failure).toHaveBeenCalled()
expect(logger.fatal)
.toHaveBeenCalledWith(`The following environment variables are required for this action to run:
- __DOES_NOT_EXIST__`)
})
})

View File

@ -31,8 +31,8 @@
"url": "https://github.com/actions/toolkit/issues"
},
"dependencies": {
"@actions/exit": "^0.0.0",
"@octokit/rest": "^16.25.0",
"signale": "^1.4.0"
},
"devDependencies": {}
}
}

View File

@ -1,17 +1,6 @@
import * as exit from '@actions/exit'
import {Signale} from 'signale'
/**
* The code to exit an action
*/
export enum ExitCode {
Success = 0,
Failure = 1,
Neutral = 78
}
// TODO: These exit codes may not behave as expected on the new runtime, due to
// complexities of async logging and sync exiting.
/**
* A class that wraps some basic methods of exiting from an action
*/
@ -23,7 +12,7 @@ export class Exit {
*/
success(message?: string) {
if (message) this.logger.success(message)
process.exit(ExitCode.Success)
exit.success()
}
/**
@ -31,7 +20,7 @@ export class Exit {
*/
neutral(message?: string) {
if (message) this.logger.info(message)
process.exit(ExitCode.Neutral)
exit.neutral()
}
/**
@ -39,6 +28,6 @@ export class Exit {
*/
failure(message?: string) {
if (message) this.logger.fatal(message)
process.exit(ExitCode.Failure)
exit.failure()
}
}