11import { assert , expect } from 'chai' ;
22import * as path from 'path' ;
33import * as sinon from 'sinon' ;
4- import { CancellationTokenSource , extensions , QuickPickItem , Uri , window } from 'vscode' ;
4+ import { CancellationTokenSource , ExtensionContext , extensions , QuickPickItem , Uri , window } from 'vscode' ;
55import * as fs from 'fs-extra' ;
66import * as os from 'os' ;
77import * as yaml from 'js-yaml' ;
@@ -21,6 +21,9 @@ import {
2121import { Repository } from '../../../remote-queries/gh-api/repository' ;
2222import { VariantAnalysisStatus } from '../../../remote-queries/shared/variant-analysis' ;
2323import { createMockApiResponse } from '../../factories/remote-queries/gh-api/variant-analysis-api-response' ;
24+ import { createMockExtensionContext } from '../../no-workspace' ;
25+ import { VariantAnalysisManager } from '../../../remote-queries/variant-analysis-manager' ;
26+ import { OutputChannelLogger } from '../../../logging' ;
2427
2528describe ( 'Remote queries' , function ( ) {
2629 const baseDir = path . join ( __dirname , '../../../../src/vscode-tests/cli-integration' ) ;
@@ -37,6 +40,9 @@ describe('Remote queries', function() {
3740 let showQuickPickSpy : sinon . SinonStub ;
3841 let getRepositoryFromNwoStub : sinon . SinonStub ;
3942 let liveResultsStub : sinon . SinonStub ;
43+ let ctx : ExtensionContext ;
44+ let logger : any ;
45+ let variantAnalysisManager : VariantAnalysisManager ;
4046
4147 // use `function` so we have access to `this`
4248 beforeEach ( async function ( ) {
@@ -49,21 +55,18 @@ describe('Remote queries', function() {
4955 throw new Error ( 'Extension not initialized. Make sure cli is downloaded and installed properly.' ) ;
5056 }
5157
58+ ctx = createMockExtensionContext ( ) ;
59+ logger = new OutputChannelLogger ( 'test-logger' ) ;
60+ variantAnalysisManager = new VariantAnalysisManager ( ctx , cli , 'fake-storage-dir' , logger ) ;
61+
5262 if ( ! ( await cli . cliConstraints . supportsRemoteQueries ( ) ) ) {
5363 console . log ( `Remote queries are not supported on CodeQL CLI v${ CliVersionConstraint . CLI_VERSION_REMOTE_QUERIES
5464 } . Skipping this test.`) ;
5565 this . skip ( ) ;
5666 }
5767 credentials = { } as unknown as Credentials ;
5868
59- cancellationTokenSource = {
60- token : {
61- isCancellationRequested : false ,
62- onCancellationRequested : sandbox . stub ( )
63- } ,
64- cancel : sandbox . stub ( ) ,
65- dispose : sandbox . stub ( )
66- } ;
69+ cancellationTokenSource = new CancellationTokenSource ( ) ;
6770
6871 progress = sandbox . spy ( ) ;
6972 // Should not have asked for a language
@@ -94,7 +97,7 @@ describe('Remote queries', function() {
9497 it ( 'should run a remote query that is part of a qlpack' , async ( ) => {
9598 const fileUri = getFile ( 'data-remote-qlpack/in-pack.ql' ) ;
9699
97- const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token ) ;
100+ const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token , variantAnalysisManager ) ;
98101 expect ( querySubmissionResult ) . to . be . ok ;
99102 const queryPackRootDir = querySubmissionResult ! . queryDirPath ! ;
100103 printDirectoryContents ( queryPackRootDir ) ;
@@ -155,7 +158,7 @@ describe('Remote queries', function() {
155158 it ( 'should run a remote query that is not part of a qlpack' , async ( ) => {
156159 const fileUri = getFile ( 'data-remote-no-qlpack/in-pack.ql' ) ;
157160
158- const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token ) ;
161+ const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token , variantAnalysisManager ) ;
159162 expect ( querySubmissionResult ) . to . be . ok ;
160163 const queryPackRootDir = querySubmissionResult ! . queryDirPath ! ;
161164
@@ -218,7 +221,7 @@ describe('Remote queries', function() {
218221 it ( 'should run a remote query that is nested inside a qlpack' , async ( ) => {
219222 const fileUri = getFile ( 'data-remote-qlpack-nested/subfolder/in-pack.ql' ) ;
220223
221- const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token ) ;
224+ const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token , variantAnalysisManager ) ;
222225 expect ( querySubmissionResult ) . to . be . ok ;
223226 const queryPackRootDir = querySubmissionResult ! . queryDirPath ! ;
224227
@@ -280,9 +283,9 @@ describe('Remote queries', function() {
280283 it ( 'should cancel a run before uploading' , async ( ) => {
281284 const fileUri = getFile ( 'data-remote-no-qlpack/in-pack.ql' ) ;
282285
283- const promise = runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token ) ;
286+ const promise = runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token , variantAnalysisManager ) ;
284287
285- cancellationTokenSource . token . isCancellationRequested = true ;
288+ cancellationTokenSource . cancel ( ) ;
286289
287290 try {
288291 await promise ;
@@ -306,7 +309,7 @@ describe('Remote queries', function() {
306309 it ( 'should run a variant analysis that is part of a qlpack' , async ( ) => {
307310 const fileUri = getFile ( 'data-remote-qlpack/in-pack.ql' ) ;
308311
309- const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token ) ;
312+ const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token , variantAnalysisManager ) ;
310313 expect ( querySubmissionResult ) . to . be . ok ;
311314 const variantAnalysis = querySubmissionResult ! . variantAnalysis ! ;
312315 expect ( variantAnalysis . id ) . to . be . equal ( mockApiResponse . id ) ;
@@ -319,7 +322,7 @@ describe('Remote queries', function() {
319322 it ( 'should run a remote query that is not part of a qlpack' , async ( ) => {
320323 const fileUri = getFile ( 'data-remote-no-qlpack/in-pack.ql' ) ;
321324
322- const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token ) ;
325+ const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token , variantAnalysisManager ) ;
323326 expect ( querySubmissionResult ) . to . be . ok ;
324327 const variantAnalysis = querySubmissionResult ! . variantAnalysis ! ;
325328 expect ( variantAnalysis . id ) . to . be . equal ( mockApiResponse . id ) ;
@@ -332,7 +335,7 @@ describe('Remote queries', function() {
332335 it ( 'should run a remote query that is nested inside a qlpack' , async ( ) => {
333336 const fileUri = getFile ( 'data-remote-qlpack-nested/subfolder/in-pack.ql' ) ;
334337
335- const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token ) ;
338+ const querySubmissionResult = await runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token , variantAnalysisManager ) ;
336339 expect ( querySubmissionResult ) . to . be . ok ;
337340 const variantAnalysis = querySubmissionResult ! . variantAnalysis ! ;
338341 expect ( variantAnalysis . id ) . to . be . equal ( mockApiResponse . id ) ;
@@ -345,9 +348,9 @@ describe('Remote queries', function() {
345348 it ( 'should cancel a run before uploading' , async ( ) => {
346349 const fileUri = getFile ( 'data-remote-no-qlpack/in-pack.ql' ) ;
347350
348- const promise = runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token ) ;
351+ const promise = runRemoteQuery ( cli , credentials , fileUri , true , progress , cancellationTokenSource . token , variantAnalysisManager ) ;
349352
350- cancellationTokenSource . token . isCancellationRequested = true ;
353+ cancellationTokenSource . cancel ( ) ;
351354
352355 try {
353356 await promise ;
0 commit comments