fix: Resolve duplicate error message and no trailing newline

* fix: Resolves duplicate error message

* test: Add trailing newline on error test
This commit is contained in:
smessie 2020-10-27 15:17:59 +01:00 committed by GitHub
parent 99464d9a95
commit a7fa61ab2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 1 deletions

View File

@ -27,7 +27,9 @@ export class BasicResponseWriter extends ResponseWriter {
}
input.response.setHeader('content-type', 'text/plain');
input.response.writeHead(code);
input.response.end(`${input.result.name}: ${input.result.message}\n${input.result.stack}`);
input.response.end(typeof input.result.stack === 'string' ?
`${input.result.stack}\n` :
`${input.result.name}: ${input.result.message}\n`);
} else {
input.response.setHeader('location', input.result.identifier.path);
if (input.result.body) {

View File

@ -81,4 +81,19 @@ describe('A BasicResponseWriter', (): void => {
expect(response._getStatusCode()).toBe(error.statusCode);
expect(response._getData()).toMatch('UnsupportedHttpError: error');
});
it('responds with the error name and message when no stack trace is lazily generated.', async(): Promise<void> => {
const error = new Error('error');
error.stack = undefined;
await writer.handle({ response, result: error });
expect(response._isEndCalled()).toBeTruthy();
expect(response._getStatusCode()).toBe(500);
expect(response._getData()).toMatch('Error: error');
});
it('ends its response with a newline if there is an error.', async(): Promise<void> => {
await writer.handle({ response, result: new Error('error') });
expect(response._isEndCalled()).toBeTruthy();
expect(response._getData().endsWith('\n')).toBeTruthy();
});
});