First attempt at tests
This commit is contained in:
@@ -37,7 +37,7 @@ export async function handleDownloadPacks(
|
||||
maxStep: 2,
|
||||
});
|
||||
let packsToDownload: string[] = [];
|
||||
const queryPackOption = 'Download core query packs';
|
||||
const queryPackOption = 'Download all core query packs';
|
||||
const customPackOption = 'Download custom specified pack';
|
||||
const quickpick = await window.showQuickPick(
|
||||
[queryPackOption, customPackOption],
|
||||
@@ -57,7 +57,7 @@ export async function handleDownloadPacks(
|
||||
throw new UserCancellationException('No pack specified.');
|
||||
}
|
||||
}
|
||||
if (packsToDownload && packsToDownload.length > 0) {
|
||||
if (packsToDownload?.length > 0) {
|
||||
progress({
|
||||
message: 'Downloading packs. This may take a few minutes.',
|
||||
step: 2,
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
import * as sinon from 'sinon';
|
||||
import { extensions, window } from 'vscode';
|
||||
import 'mocha';
|
||||
import * as path from 'path';
|
||||
|
||||
import * as pq from 'proxyquire';
|
||||
|
||||
import { CodeQLCliServer } from '../../cli';
|
||||
import { CodeQLExtensionInterface } from '../../extension';
|
||||
import { expect } from 'chai';
|
||||
|
||||
const proxyquire = pq.noPreserveCache();
|
||||
|
||||
describe('Packaging commands', function() {
|
||||
let sandbox: sinon.SinonSandbox;
|
||||
|
||||
// up to 3 minutes per test
|
||||
this.timeout(3 * 60 * 1000);
|
||||
|
||||
let cli: CodeQLCliServer;
|
||||
let progress: sinon.SinonSpy;
|
||||
let quickPickSpy: sinon.SinonStub;
|
||||
let inputBoxSpy: sinon.SinonStub;
|
||||
let showAndLogErrorMessageSpy: sinon.SinonStub;
|
||||
let showAndLogInformationMessageSpy: sinon.SinonStub;
|
||||
let mod: any;
|
||||
|
||||
beforeEach(async function() {
|
||||
sandbox = sinon.createSandbox();
|
||||
|
||||
const extension = await extensions
|
||||
.getExtension<CodeQLExtensionInterface | Record<string, never>>(
|
||||
'GitHub.vscode-codeql'
|
||||
)!
|
||||
.activate();
|
||||
if ('cliServer' in extension) {
|
||||
cli = extension.cliServer;
|
||||
} else {
|
||||
throw new Error(
|
||||
'Extension not initialized. Make sure cli is downloaded and installed properly.'
|
||||
);
|
||||
}
|
||||
|
||||
progress = sandbox.spy();
|
||||
quickPickSpy = sandbox.stub(window, 'showQuickPick');
|
||||
inputBoxSpy = sandbox.stub(window, 'showInputBox');
|
||||
showAndLogErrorMessageSpy = sandbox.stub();
|
||||
showAndLogInformationMessageSpy = sandbox.stub();
|
||||
mod = proxyquire('../../packaging', {
|
||||
'../helpers': {
|
||||
showAndLogErrorMessage: showAndLogErrorMessageSpy,
|
||||
showAndLogInformationMessage: showAndLogInformationMessageSpy,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
sandbox.restore();
|
||||
});
|
||||
|
||||
it('should download all core query packs', async () => {
|
||||
quickPickSpy.resolves('Download all core query packs');
|
||||
|
||||
await mod.handleDownloadPacks(cli, progress);
|
||||
expect(showAndLogInformationMessageSpy.firstCall.args[0]).to.contain(
|
||||
'Finished downloading packs.'
|
||||
);
|
||||
});
|
||||
|
||||
it('should download valid user-specified pack', async () => {
|
||||
quickPickSpy.resolves('Download custom specified pack');
|
||||
inputBoxSpy.resolves('codeql/csharp-solorigate-queries');
|
||||
|
||||
await mod.handleDownloadPacks(cli, progress);
|
||||
expect(showAndLogInformationMessageSpy.firstCall.args[0]).to.contain(
|
||||
'Finished downloading packs.'
|
||||
);
|
||||
});
|
||||
|
||||
it('should show error for invalid user-specified pack', async () => {
|
||||
quickPickSpy.resolves('Download custom specified pack');
|
||||
inputBoxSpy.resolves('foo/not-a-real-pack@0.0.1');
|
||||
|
||||
await mod.handleDownloadPacks(cli, progress);
|
||||
|
||||
expect(showAndLogErrorMessageSpy.firstCall.args[0]).to.contain(
|
||||
'Unable to download all packs.'
|
||||
);
|
||||
});
|
||||
|
||||
it('should install selected workspace packs', async () => {
|
||||
const rootDir = path.join(__dirname, '../../../src/vscode-tests/cli-integration/data');
|
||||
quickPickSpy.resolves(
|
||||
[
|
||||
{
|
||||
label: 'integration-test-queries-javascript',
|
||||
packRootDir: [rootDir],
|
||||
},
|
||||
]
|
||||
);
|
||||
|
||||
await mod.handleInstallPacks(cli, progress);
|
||||
|
||||
expect(showAndLogInformationMessageSpy.firstCall.args[0]).to.contain(
|
||||
'Finished installing packs.'
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user