@@ -35,6 +35,61 @@ describe("runQuery", () => {
3535 } ) ) ;
3636 } ) ;
3737
38+ it ( "should log an error" , async ( ) => {
39+ const showAndLogExceptionWithTelemetrySpy : jest . SpiedFunction <
40+ typeof showAndLogExceptionWithTelemetry
41+ > = jest . spyOn ( log , "showAndLogExceptionWithTelemetry" ) ;
42+
43+ const logPath = ( await file ( ) ) . path ;
44+
45+ const query = fetchExternalApiQueries [ cases [ 0 ] . language ] ;
46+ if ( ! query ) {
47+ throw new Error ( `No query found for language ${ cases [ 0 ] . language } ` ) ;
48+ }
49+
50+ const options = {
51+ cliServer : {
52+ resolveQlpacks : jest . fn ( ) . mockResolvedValue ( {
53+ "my/extensions" : "/a/b/c/" ,
54+ } ) ,
55+ } ,
56+ queryRunner : {
57+ createQueryRun : jest . fn ( ) . mockReturnValue ( {
58+ evaluate : jest . fn ( ) . mockResolvedValue ( {
59+ resultType : QueryResultType . CANCELLATION ,
60+ } ) ,
61+ outputDir : {
62+ logPath,
63+ } ,
64+ } ) ,
65+ logger : createMockLogger ( ) ,
66+ } ,
67+ databaseItem : {
68+ databaseUri : mockedUri ( "/a/b/c/src.zip" ) ,
69+ contents : {
70+ kind : DatabaseKind . Database ,
71+ name : "foo" ,
72+ datasetUri : mockedUri ( ) ,
73+ } ,
74+ language : cases [ 0 ] . language ,
75+ } ,
76+ queryStorageDir : "/tmp/queries" ,
77+ queryDir : cases [ 0 ] . queryDir ,
78+ progress : jest . fn ( ) ,
79+ token : {
80+ isCancellationRequested : false ,
81+ onCancellationRequested : jest . fn ( ) ,
82+ } ,
83+ } ;
84+
85+ expect ( await runQuery ( cases [ 0 ] . queryName , options ) ) . toBeUndefined ( ) ;
86+ expect ( showAndLogExceptionWithTelemetrySpy ) . toHaveBeenCalledWith (
87+ expect . anything ( ) ,
88+ undefined ,
89+ expect . any ( RedactableError ) ,
90+ ) ;
91+ } ) ;
92+
3893 test . each ( cases ) (
3994 "should run $queryName for $language" ,
4095 async ( { language, queryName, queryDir } ) => {
0 commit comments