mirror of
https://github.com/serverless/serverless.git
synced 2025-12-08 19:46:03 +00:00
59 lines
1.8 KiB
JavaScript
59 lines
1.8 KiB
JavaScript
'use strict'
|
|
|
|
const chai = require('chai')
|
|
const sinon = require('sinon')
|
|
|
|
const observeOutput = require('@serverless/test/observe-output')
|
|
const handleError = require('../../../../lib/cli/handle-error')
|
|
const isStandaloneExecutable = require('../../../../lib/utils/is-standalone-executable')
|
|
const ServerlessError = require('../../../../lib/serverless-error')
|
|
|
|
chai.use(require('sinon-chai'))
|
|
|
|
const expect = chai.expect
|
|
|
|
describe('test/unit/lib/cli/handle-error.test.js', () => {
|
|
it('should output error', async () => {
|
|
const output = await observeOutput(() =>
|
|
handleError(new ServerlessError('Test error')),
|
|
)
|
|
expect(output).to.have.string('Test error')
|
|
})
|
|
|
|
if (isStandaloneExecutable) {
|
|
it('should report standalone installation', async () => {
|
|
const output = await observeOutput(() =>
|
|
handleError(new ServerlessError('Test error')),
|
|
)
|
|
expect(output).to.have.string('(standalone)')
|
|
})
|
|
}
|
|
|
|
it('should handle non-error objects', async () => {
|
|
const output = await observeOutput(() =>
|
|
handleError(handleError('NON-ERROR')),
|
|
)
|
|
expect(output).to.have.string('NON-ERROR')
|
|
})
|
|
|
|
describe('with mocked telemetry', () => {
|
|
beforeEach(() => {
|
|
sinon.resetHistory()
|
|
})
|
|
|
|
it('should add `location` to `failureReason` in telemetry if error code missing', async () => {
|
|
const {
|
|
telemetryData: { failureReason },
|
|
} = await handleError(new ServerlessError('Test error'), {})
|
|
expect(failureReason).to.have.property('location')
|
|
})
|
|
|
|
it('should add `location` to `failureReason` in telemetry for non-user errors', async () => {
|
|
const {
|
|
telemetryData: { failureReason },
|
|
} = await handleError(new Error('Test error'), {})
|
|
expect(failureReason).to.have.property('location')
|
|
})
|
|
})
|
|
})
|