mirror of
https://github.com/serverless/serverless.git
synced 2026-01-18 14:58:43 +00:00
53 lines
1.8 KiB
JavaScript
53 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');
|
|
});
|
|
});
|
|
});
|