@@ -11,7 +11,6 @@ import { instance, mock, verify, when } from 'ts-mockito';
11
11
import { WorkspaceConfiguration } from 'vscode' ;
12
12
import { IWorkspaceService } from '../../client/common/application/types' ;
13
13
import { WorkspaceService } from '../../client/common/application/workspace' ;
14
- import { EXTENSION_ROOT_DIR } from '../../client/constants' ;
15
14
import {
16
15
_resetSharedProperties ,
17
16
clearTelemetryReporter ,
@@ -30,6 +29,8 @@ suite('Telemetry', () => {
30
29
public static properties : Record < string , string > [ ] = [ ] ;
31
30
public static measures : { } [ ] = [ ] ;
32
31
public static errorProps : string [ ] | undefined ;
32
+ public static exception : Error | undefined ;
33
+
33
34
public static clear ( ) {
34
35
Reporter . eventName = [ ] ;
35
36
Reporter . properties = [ ] ;
@@ -45,6 +46,10 @@ suite('Telemetry', () => {
45
46
this . sendTelemetryEvent ( eventName , properties , measures ) ;
46
47
Reporter . errorProps = errorProps ;
47
48
}
49
+ public sendTelemetryException ( error : Error , properties ?: { } , measures ?: { } ) : void {
50
+ this . sendTelemetryEvent ( 'Exception' , properties , measures ) ;
51
+ Reporter . exception = error ;
52
+ }
48
53
}
49
54
50
55
setup ( ( ) => {
@@ -155,95 +160,22 @@ suite('Telemetry', () => {
155
160
expect ( Reporter . measures ) . to . deep . equal ( [ measures ] ) ;
156
161
expect ( Reporter . properties ) . to . deep . equal ( [ expectedProperties ] ) ;
157
162
} ) ;
158
- test ( 'Send Error Telemetry' , ( ) => {
159
- rewiremock . enable ( ) ;
160
- const error = new Error ( 'Boo' ) ;
161
- rewiremock ( 'vscode-extension-telemetry' ) . with ( { default : Reporter } ) ;
162
-
163
- const eventName = 'Testing' ;
164
- const properties = { hello : 'world' , foo : 'bar' } ;
165
- const measures = { start : 123 , end : 987 } ;
166
-
167
- // tslint:disable-next-line:no-any
168
- sendTelemetryEvent ( eventName as any , measures , properties as any , error ) ;
169
-
170
- const expectedErrorProperties = {
171
- originalEventName : eventName
172
- } ;
173
-
174
- expect ( Reporter . eventName ) . to . deep . equal ( [ 'ERROR' ] ) ;
175
- expect ( Reporter . measures ) . to . deep . equal ( [ measures ] ) ;
176
- expect ( Reporter . properties [ 0 ] . stackTrace ) . to . be . length . greaterThan ( 1 ) ;
177
- delete Reporter . properties [ 0 ] . stackTrace ;
178
- expect ( Reporter . properties ) . to . deep . equal ( [ expectedErrorProperties ] ) ;
179
- expect ( Reporter . errorProps ) . to . deep . equal ( [ ] ) ;
180
- } ) ;
181
- test ( 'Send Error Telemetry with stack trace' , ( ) => {
163
+ test ( 'Send Exception Telemetry' , ( ) => {
182
164
rewiremock . enable ( ) ;
183
165
const error = new Error ( 'Boo' ) ;
184
- const root = EXTENSION_ROOT_DIR . replace ( / \\ / g, '/' ) ;
185
- error . stack = [
186
- 'Error: Boo' ,
187
- `at Context.test (${ root } /src/test/telemetry/index.unit.test.ts:50:23)` ,
188
- `at callFn (${ root } /node_modules/mocha/lib/runnable.js:372:21)` ,
189
- `at Test.Runnable.run (${ root } /node_modules/mocha/lib/runnable.js:364:7)` ,
190
- `at Runner.runTest (${ root } /node_modules/mocha/lib/runner.js:455:10)` ,
191
- `at ${ root } /node_modules/mocha/lib/runner.js:573:12` ,
192
- `at next (${ root } /node_modules/mocha/lib/runner.js:369:14)` ,
193
- `at ${ root } /node_modules/mocha/lib/runner.js:379:7` ,
194
- `at next (${ root } /node_modules/mocha/lib/runner.js:303:14)` ,
195
- `at ${ root } /node_modules/mocha/lib/runner.js:342:7` ,
196
- `at done (${ root } /node_modules/mocha/lib/runnable.js:319:5)` ,
197
- `at callFn (${ root } /node_modules/mocha/lib/runnable.js:395:7)` ,
198
- `at Hook.Runnable.run (${ root } /node_modules/mocha/lib/runnable.js:364:7)` ,
199
- `at next (${ root } /node_modules/mocha/lib/runner.js:317:10)` ,
200
- `at Immediate.<anonymous> (${ root } /node_modules/mocha/lib/runner.js:347:5)` ,
201
- 'at runCallback (timers.js:789:20)' ,
202
- 'at tryOnImmediate (timers.js:751:5)' ,
203
- 'at processImmediate [as _immediateCallback] (timers.js:722:5)'
204
- ] . join ( '\n\t' ) ;
205
166
rewiremock ( 'vscode-extension-telemetry' ) . with ( { default : Reporter } ) ;
206
167
207
168
const eventName = 'Testing' ;
208
169
const properties = { hello : 'world' , foo : 'bar' } ;
209
- const measures = { start : 123 , end : 987 } ;
210
170
211
171
// tslint:disable-next-line:no-any
212
- sendTelemetryEvent ( eventName as any , measures , properties as any , error ) ;
172
+ sendTelemetryEvent ( eventName as any , { } , properties as any , error ) ;
213
173
214
174
const expectedErrorProperties = {
215
175
originalEventName : eventName
216
176
} ;
217
177
218
- const stackTrace = Reporter . properties [ 0 ] . stackTrace ;
219
- delete Reporter . properties [ 0 ] . stackTrace ;
220
-
221
- expect ( Reporter . eventName ) . to . deep . equal ( [ 'ERROR' ] ) ;
222
- expect ( Reporter . measures ) . to . deep . equal ( [ measures ] ) ;
223
178
expect ( Reporter . properties ) . to . deep . equal ( [ expectedErrorProperties ] ) ;
224
- expect ( stackTrace ) . to . be . length . greaterThan ( 1 ) ;
225
- expect ( Reporter . errorProps ) . to . deep . equal ( [ ] ) ;
226
-
227
- const expectedStack = [
228
- `at Context.test ${ root } /src/test/telemetry/index.unit.test.ts:50:23` ,
229
- `at callFn ${ root } /node_modules/mocha/lib/runnable.js:372:21` ,
230
- `at Test.Runnable.run ${ root } /node_modules/mocha/lib/runnable.js:364:7` ,
231
- `at Runner.runTest ${ root } /node_modules/mocha/lib/runner.js:455:10` ,
232
- `at ${ root } /node_modules/mocha/lib/runner.js:573:12` ,
233
- `at next ${ root } /node_modules/mocha/lib/runner.js:369:14` ,
234
- `at ${ root } /node_modules/mocha/lib/runner.js:379:7` ,
235
- `at next ${ root } /node_modules/mocha/lib/runner.js:303:14` ,
236
- `at ${ root } /node_modules/mocha/lib/runner.js:342:7` ,
237
- `at done ${ root } /node_modules/mocha/lib/runnable.js:319:5` ,
238
- `at callFn ${ root } /node_modules/mocha/lib/runnable.js:395:7` ,
239
- `at Hook.Runnable.run ${ root } /node_modules/mocha/lib/runnable.js:364:7` ,
240
- `at next ${ root } /node_modules/mocha/lib/runner.js:317:10` ,
241
- `at Immediate ${ root } /node_modules/mocha/lib/runner.js:347:5` ,
242
- 'at runCallback timers.js:789:20' ,
243
- 'at tryOnImmediate timers.js:751:5' ,
244
- 'at processImmediate [as _immediateCallback] timers.js:722:5'
245
- ] . join ( '\n\t' ) ;
246
-
247
- expect ( stackTrace ) . to . be . equal ( expectedStack ) ;
179
+ expect ( Reporter . exception ) . to . deep . equal ( error ) ;
248
180
} ) ;
249
181
} ) ;
0 commit comments