Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/base/test/common/errors.test.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import assert from 'assert';
7
import { toErrorMessage } from '../../common/errorMessage.js';
8
import { ensureNoDisposablesAreLeakedInTestSuite } from './utils.js';
9
import { transformErrorForSerialization, transformErrorFromSerialization } from '../../common/errors.js';
10
import { assertType } from '../../common/types.js';
11
12
suite('Errors', () => {
13
ensureNoDisposablesAreLeakedInTestSuite();
14
15
test('Get Error Message', function () {
16
assert.strictEqual(toErrorMessage('Foo Bar'), 'Foo Bar');
17
assert.strictEqual(toErrorMessage(new Error('Foo Bar')), 'Foo Bar');
18
19
let error: any = new Error();
20
error = new Error();
21
error.detail = {};
22
error.detail.exception = {};
23
error.detail.exception.message = 'Foo Bar';
24
assert.strictEqual(toErrorMessage(error), 'Foo Bar');
25
assert.strictEqual(toErrorMessage(error, true), 'Foo Bar');
26
27
assert(toErrorMessage());
28
assert(toErrorMessage(null));
29
assert(toErrorMessage({}));
30
31
try {
32
throw new Error();
33
} catch (error) {
34
assert.strictEqual(toErrorMessage(error), 'An unknown error occurred. Please consult the log for more details.');
35
assert.ok(toErrorMessage(error, true).length > 'An unknown error occurred. Please consult the log for more details.'.length);
36
}
37
});
38
39
test('Transform Error for Serialization', function () {
40
const error = new Error('Test error');
41
const serializedError = transformErrorForSerialization(error);
42
assert.strictEqual(serializedError.name, 'Error');
43
assert.strictEqual(serializedError.message, 'Test error');
44
assert.strictEqual(serializedError.stack, error.stack);
45
assert.strictEqual(serializedError.noTelemetry, false);
46
assert.strictEqual(serializedError.cause, undefined);
47
});
48
49
test('Transform Error with Cause for Serialization', function () {
50
const cause = new Error('Cause error');
51
const error = new Error('Test error', { cause });
52
const serializedError = transformErrorForSerialization(error);
53
assert.strictEqual(serializedError.name, 'Error');
54
assert.strictEqual(serializedError.message, 'Test error');
55
assert.strictEqual(serializedError.stack, error.stack);
56
assert.strictEqual(serializedError.noTelemetry, false);
57
assert.ok(serializedError.cause);
58
assert.strictEqual(serializedError.cause?.name, 'Error');
59
assert.strictEqual(serializedError.cause?.message, 'Cause error');
60
assert.strictEqual(serializedError.cause?.stack, cause.stack);
61
});
62
63
test('Transform Error from Serialization', function () {
64
const serializedError = transformErrorForSerialization(new Error('Test error'));
65
const error = transformErrorFromSerialization(serializedError);
66
assert.strictEqual(error.name, 'Error');
67
assert.strictEqual(error.message, 'Test error');
68
assert.strictEqual(error.stack, serializedError.stack);
69
assert.strictEqual(error.cause, undefined);
70
});
71
72
test('Transform Error with Cause from Serialization', function () {
73
const cause = new Error('Cause error');
74
const serializedCause = transformErrorForSerialization(cause);
75
const error = new Error('Test error', { cause });
76
const serializedError = transformErrorForSerialization(error);
77
const deserializedError = transformErrorFromSerialization(serializedError);
78
assert.strictEqual(deserializedError.name, 'Error');
79
assert.strictEqual(deserializedError.message, 'Test error');
80
assert.strictEqual(deserializedError.stack, serializedError.stack);
81
assert.ok(deserializedError.cause);
82
assertType(deserializedError.cause instanceof Error);
83
assert.strictEqual(deserializedError.cause?.name, 'Error');
84
assert.strictEqual(deserializedError.cause?.message, 'Cause error');
85
assert.strictEqual(deserializedError.cause?.stack, serializedCause.stack);
86
});
87
});
88
89