44 workspace ,
55 ConfigurationTarget ,
66 window ,
7+ env ,
78} from "vscode" ;
89import {
910 ExtensionTelemetryListener ,
@@ -30,13 +31,18 @@ describe("telemetry reporting", () => {
3031 let sendTelemetryEventSpy : jest . SpiedFunction <
3132 typeof TelemetryReporter . prototype . sendTelemetryEvent
3233 > ;
33- let sendTelemetryExceptionSpy : jest . SpiedFunction <
34- typeof TelemetryReporter . prototype . sendTelemetryException
34+ let sendTelemetryErrorEventSpy : jest . SpiedFunction <
35+ typeof TelemetryReporter . prototype . sendTelemetryErrorEvent
3536 > ;
3637 let disposeSpy : jest . SpiedFunction <
3738 typeof TelemetryReporter . prototype . dispose
3839 > ;
3940
41+ let isTelemetryEnabledSpy : jest . SpyInstance <
42+ typeof env . isTelemetryEnabled ,
43+ [ ]
44+ > ;
45+
4046 let showInformationMessageSpy : jest . SpiedFunction <
4147 typeof window . showInformationMessage
4248 > ;
@@ -56,8 +62,8 @@ describe("telemetry reporting", () => {
5662 sendTelemetryEventSpy = jest
5763 . spyOn ( TelemetryReporter . prototype , "sendTelemetryEvent" )
5864 . mockReturnValue ( undefined ) ;
59- sendTelemetryExceptionSpy = jest
60- . spyOn ( TelemetryReporter . prototype , "sendTelemetryException " )
65+ sendTelemetryErrorEventSpy = jest
66+ . spyOn ( TelemetryReporter . prototype , "sendTelemetryErrorEvent " )
6167 . mockReturnValue ( undefined ) ;
6268 disposeSpy = jest
6369 . spyOn ( TelemetryReporter . prototype , "dispose" )
@@ -78,6 +84,9 @@ describe("telemetry reporting", () => {
7884 . get < boolean > ( "codeQL.canary" ) ) . toString ( ) ;
7985
8086 // each test will default to telemetry being enabled
87+ isTelemetryEnabledSpy = jest
88+ . spyOn ( env , "isTelemetryEnabled" , "get" )
89+ . mockReturnValue ( true ) ;
8190 await enableTelemetry ( "telemetry" , true ) ;
8291 await enableTelemetry ( "codeQL.telemetry" , true ) ;
8392
@@ -116,6 +125,7 @@ describe("telemetry reporting", () => {
116125 } ) ;
117126
118127 it ( "should initialize telemetry when global option disabled" , async ( ) => {
128+ isTelemetryEnabledSpy . mockReturnValue ( false ) ;
119129 await enableTelemetry ( "telemetry" , false ) ;
120130 await telemetryListener . initialize ( ) ;
121131 expect ( telemetryListener . _reporter ) . toBeDefined ( ) ;
@@ -133,6 +143,7 @@ describe("telemetry reporting", () => {
133143
134144 it ( "should not initialize telemetry when both options disabled" , async ( ) => {
135145 await enableTelemetry ( "codeQL.telemetry" , false ) ;
146+ isTelemetryEnabledSpy . mockReturnValue ( false ) ;
136147 await enableTelemetry ( "telemetry" , false ) ;
137148 await telemetryListener . initialize ( ) ;
138149 expect ( telemetryListener . _reporter ) . toBeUndefined ( ) ;
@@ -179,6 +190,7 @@ describe("telemetry reporting", () => {
179190 const reporter : any = telemetryListener . _reporter ;
180191 expect ( reporter . userOptIn ) . toBe ( true ) ; // enabled
181192
193+ isTelemetryEnabledSpy . mockReturnValue ( false ) ;
182194 await enableTelemetry ( "telemetry" , false ) ;
183195 expect ( reporter . userOptIn ) . toBe ( false ) ; // disabled
184196 } ) ;
@@ -198,8 +210,7 @@ describe("telemetry reporting", () => {
198210 } ,
199211 { executionTime : 1234 } ,
200212 ) ;
201-
202- expect ( sendTelemetryExceptionSpy ) . not . toBeCalled ( ) ;
213+ expect ( sendTelemetryErrorEventSpy ) . not . toBeCalled ( ) ;
203214 } ) ;
204215
205216 it ( "should send a command usage event with an error" , async ( ) => {
@@ -221,8 +232,7 @@ describe("telemetry reporting", () => {
221232 } ,
222233 { executionTime : 1234 } ,
223234 ) ;
224-
225- expect ( sendTelemetryExceptionSpy ) . not . toBeCalled ( ) ;
235+ expect ( sendTelemetryErrorEventSpy ) . not . toBeCalled ( ) ;
226236 } ) ;
227237
228238 it ( "should send a command usage event with a cli version" , async ( ) => {
@@ -245,8 +255,7 @@ describe("telemetry reporting", () => {
245255 } ,
246256 { executionTime : 1234 } ,
247257 ) ;
248-
249- expect ( sendTelemetryExceptionSpy ) . not . toBeCalled ( ) ;
258+ expect ( sendTelemetryErrorEventSpy ) . not . toBeCalled ( ) ;
250259
251260 // Verify that if the cli version is not set, then the telemetry falls back to "not-set"
252261 sendTelemetryEventSpy . mockClear ( ) ;
@@ -268,6 +277,7 @@ describe("telemetry reporting", () => {
268277 } ,
269278 { executionTime : 5678 } ,
270279 ) ;
280+ expect ( sendTelemetryErrorEventSpy ) . not . toBeCalled ( ) ;
271281 } ) ;
272282
273283 it ( "should avoid sending an event when telemetry is disabled" , async ( ) => {
@@ -278,7 +288,7 @@ describe("telemetry reporting", () => {
278288 telemetryListener . sendCommandUsage ( "command-id" , 1234 , new Error ( ) ) ;
279289
280290 expect ( sendTelemetryEventSpy ) . not . toBeCalled ( ) ;
281- expect ( sendTelemetryExceptionSpy ) . not . toBeCalled ( ) ;
291+ expect ( sendTelemetryErrorEventSpy ) . not . toBeCalled ( ) ;
282292 } ) ;
283293
284294 it ( "should send an event when telemetry is re-enabled" , async ( ) => {
@@ -298,6 +308,7 @@ describe("telemetry reporting", () => {
298308 } ,
299309 { executionTime : 1234 } ,
300310 ) ;
311+ expect ( sendTelemetryErrorEventSpy ) . not . toBeCalled ( ) ;
301312 } ) ;
302313
303314 it ( "should filter undesired properties from telemetry payload" , async ( ) => {
@@ -345,6 +356,8 @@ describe("telemetry reporting", () => {
345356 resolveArg ( 3 /* "yes" item */ ) ,
346357 ) ;
347358 await ctx . globalState . update ( "telemetry-request-viewed" , false ) ;
359+ expect ( env . isTelemetryEnabled ) . toBe ( true ) ;
360+
348361 await enableTelemetry ( "codeQL.telemetry" , false ) ;
349362
350363 await telemetryListener . initialize ( ) ;
@@ -411,6 +424,7 @@ describe("telemetry reporting", () => {
411424 // If the user ever turns global telemetry back on, then we can
412425 // show the dialog.
413426
427+ isTelemetryEnabledSpy . mockReturnValue ( false ) ;
414428 await enableTelemetry ( "telemetry" , false ) ;
415429 await ctx . globalState . update ( "telemetry-request-viewed" , false ) ;
416430
@@ -455,6 +469,7 @@ describe("telemetry reporting", () => {
455469 } ,
456470 { } ,
457471 ) ;
472+ expect ( sendTelemetryErrorEventSpy ) . not . toBeCalled ( ) ;
458473 } ) ;
459474
460475 it ( "should send a ui-interaction telementry event with a cli version" , async ( ) => {
@@ -472,14 +487,16 @@ describe("telemetry reporting", () => {
472487 } ,
473488 { } ,
474489 ) ;
490+ expect ( sendTelemetryErrorEventSpy ) . not . toBeCalled ( ) ;
475491 } ) ;
476492
477493 it ( "should send an error telementry event" , async ( ) => {
478494 await telemetryListener . initialize ( ) ;
479495
480496 telemetryListener . sendError ( redactableError `test` ) ;
481497
482- expect ( sendTelemetryEventSpy ) . toHaveBeenCalledWith (
498+ expect ( sendTelemetryEventSpy ) . not . toBeCalled ( ) ;
499+ expect ( sendTelemetryErrorEventSpy ) . toHaveBeenCalledWith (
483500 "error" ,
484501 {
485502 message : "test" ,
@@ -497,7 +514,8 @@ describe("telemetry reporting", () => {
497514
498515 telemetryListener . sendError ( redactableError `test` ) ;
499516
500- expect ( sendTelemetryEventSpy ) . toHaveBeenCalledWith (
517+ expect ( sendTelemetryEventSpy ) . not . toBeCalled ( ) ;
518+ expect ( sendTelemetryErrorEventSpy ) . toHaveBeenCalledWith (
501519 "error" ,
502520 {
503521 message : "test" ,
@@ -516,7 +534,8 @@ describe("telemetry reporting", () => {
516534 redactableError `test message with secret information: ${ 42 } and more ${ "secret" } parts` ,
517535 ) ;
518536
519- expect ( sendTelemetryEventSpy ) . toHaveBeenCalledWith (
537+ expect ( sendTelemetryEventSpy ) . not . toBeCalled ( ) ;
538+ expect ( sendTelemetryErrorEventSpy ) . toHaveBeenCalledWith (
520539 "error" ,
521540 {
522541 message :
0 commit comments