Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,4 +133,4 @@ Once the scenario has been recorded, it's often useful to remove some of the req

### Scenario data location

Pre-recorded scenarios are stored in `./src/mocks/scenarios`. However, it's possible to configure the location, by setting the `codeQL.mockGitHubApiServer.scenariosPath` configuration property in the VS Code user settings.
Pre-recorded scenarios are stored in `./src/variant-analysis/github-api/mocks/scenarios`. However, it's possible to configure the location, by setting the `codeQL.mockGitHubApiServer.scenariosPath` configuration property in the VS Code user settings.
9 changes: 6 additions & 3 deletions extensions/ql-vscode/scripts/add-fields-to-scenarios.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,16 @@ import { Octokit, type RestEndpointMethodTypes } from "@octokit/rest";
import { throttling } from "@octokit/plugin-throttling";

import { getFiles } from "./util/files";
import type { GitHubApiRequest } from "../src/mocks/gh-api-request";
import { isGetVariantAnalysisRequest } from "../src/mocks/gh-api-request";
import type { GitHubApiRequest } from "../src/variant-analysis/gh-api/mocks/gh-api-request";
import { isGetVariantAnalysisRequest } from "../src/variant-analysis/gh-api/mocks/gh-api-request";
import { VariantAnalysis } from "../src/variant-analysis/gh-api/variant-analysis";
import { RepositoryWithMetadata } from "../src/variant-analysis/gh-api/repository";

const extensionDirectory = resolve(__dirname, "..");
const scenariosDirectory = resolve(extensionDirectory, "src/mocks/scenarios");
const scenariosDirectory = resolve(
extensionDirectory,
"src/variant-analysis/gh-api/mocks/scenarios",
);

// Make sure we don't run into rate limits by automatically waiting until we can
// make another request.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,10 @@ if (process.argv.length !== 3) {
const scenarioName = process.argv[2];

const extensionDirectory = resolve(__dirname, "..");
const scenariosDirectory = resolve(extensionDirectory, "src/mocks/scenarios");
const scenariosDirectory = resolve(
extensionDirectory,
"src/variant-analysis/gh-api/mocks/scenarios",
);
const scenarioDirectory = resolve(scenariosDirectory, scenarioName);

async function fixScenarioFiles() {
Expand Down
10 changes: 8 additions & 2 deletions extensions/ql-vscode/scripts/lint-scenarios.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,19 @@ import { getFiles } from "./util/files";

const extensionDirectory = resolve(__dirname, "..");
const rootDirectory = resolve(extensionDirectory, "../..");
const scenariosDirectory = resolve(extensionDirectory, "src/mocks/scenarios");
const scenariosDirectory = resolve(
extensionDirectory,
"src/variant-analysis/gh-api/mocks/scenarios",
);

const debug = process.env.RUNNER_DEBUG || process.argv.includes("--debug");

async function lintScenarios() {
const schema = createGenerator({
path: resolve(extensionDirectory, "src/mocks/gh-api-request.ts"),
path: resolve(
extensionDirectory,
"src/variant-analysis/gh-api/mocks/gh-api-request.ts",
),
tsconfig: resolve(extensionDirectory, "tsconfig.json"),
type: "GitHubApiRequest",
skipTypeCheck: true,
Expand Down
2 changes: 1 addition & 1 deletion extensions/ql-vscode/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ import { VariantAnalysisView } from "./variant-analysis/variant-analysis-view";
import { VariantAnalysisViewSerializer } from "./variant-analysis/variant-analysis-view-serializer";
import { VariantAnalysisManager } from "./variant-analysis/variant-analysis-manager";
import { createVariantAnalysisContentProvider } from "./variant-analysis/variant-analysis-content-provider";
import { VSCodeMockGitHubApiServer } from "./mocks/vscode-mock-gh-api-server";
import { VSCodeMockGitHubApiServer } from "./variant-analysis/gh-api/mocks/vscode-mock-gh-api-server";
import { VariantAnalysisResultsManager } from "./variant-analysis/variant-analysis-results-manager";
import { ExtensionApp } from "./common/vscode/vscode-app";
import { DbModule } from "./databases/db-module";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
import { Repository } from "../variant-analysis/gh-api/repository";
import {
VariantAnalysis,
VariantAnalysisRepoTask,
} from "../variant-analysis/gh-api/variant-analysis";
import { Repository } from "../repository";
import { VariantAnalysis, VariantAnalysisRepoTask } from "../variant-analysis";

// Types that represent requests/responses from the GitHub API
// that we need to mock.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ import { join, resolve } from "path";
import { pathExists } from "fs-extra";
import { setupServer, SetupServer } from "msw/node";

import { DisposableObject } from "../pure/disposable-object";
import { DisposableObject } from "../../../pure/disposable-object";

import { Recorder } from "./recorder";
import { createRequestHandlers } from "./request-handlers";
import { getDirectoryNamesInsidePath } from "../pure/files";
import { getDirectoryNamesInsidePath } from "../../../pure/files";

/**
* Enables mocking of the GitHub API server via HTTP interception, using msw.
Expand Down Expand Up @@ -129,9 +129,12 @@ export class MockGitHubApiServer extends DisposableObject {

public async getDefaultScenariosPath(): Promise<string | undefined> {
// This should be the directory where package.json is located
const rootDirectory = resolve(__dirname, "../..");
const rootDirectory = resolve(__dirname, "../../../..");

const scenariosPath = resolve(rootDirectory, "src/mocks/scenarios");
const scenariosPath = resolve(
rootDirectory,
"src/variant-analysis/gh-api/mocks/scenarios",
);
if (await pathExists(scenariosPath)) {
return scenariosPath;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { IsomorphicResponse } from "@mswjs/interceptors";
import { Headers } from "headers-polyfill";
import fetch from "node-fetch";

import { DisposableObject } from "../pure/disposable-object";
import { DisposableObject } from "../../../pure/disposable-object";

import {
GetVariantAnalysisRepoResultRequest,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ import { env, QuickPickItem, Uri, window } from "vscode";
import {
getMockGitHubApiServerScenariosPath,
MockGitHubApiConfigListener,
} from "../config";
import { DisposableObject } from "../pure/disposable-object";
} from "../../../config";
import { DisposableObject } from "../../../pure/disposable-object";
import { MockGitHubApiServer } from "./mock-gh-api-server";
import { MockGitHubApiServerCommands } from "../common/commands";
import { App, AppMode } from "../common/app";
import { MockGitHubApiServerCommands } from "../../../common/commands";
import { App, AppMode } from "../../../common/app";
import path from "path";

/**
Expand Down Expand Up @@ -222,7 +222,7 @@ export class VSCodeMockGitHubApiServer extends DisposableObject {
if (this.app.mode === AppMode.Development) {
const developmentScenariosPath = path.join(
this.app.extensionPath,
"src/mocks/scenarios",
"src/variant-analysis/gh-api/mocks/scenarios",
);
if (await pathExists(developmentScenariosPath)) {
return developmentScenariosPath;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import {
submitVariantAnalysis,
} from "../../../../src/variant-analysis/gh-api/gh-api-client";
import { createMockSubmission } from "../../../factories/variant-analysis/shared/variant-analysis-submission";
import { MockGitHubApiServer } from "../../../../src/mocks/mock-gh-api-server";
import { MockGitHubApiServer } from "../../../../src/variant-analysis/gh-api/mocks/mock-gh-api-server";

import { response } from "../../../../src/mocks/scenarios/problem-query-success/0-getRepo.json";
import { response as variantAnalysisJson_response } from "../../../../src/mocks/scenarios/problem-query-success/1-submitVariantAnalysis.json";
import { response as variantAnalysisRepoJson_response } from "../../../../src/mocks/scenarios/problem-query-success/9-getVariantAnalysisRepo.json";
import { response } from "../../../../src/variant-analysis/gh-api/mocks/scenarios/problem-query-success/0-getRepo.json";
import { response as variantAnalysisJson_response } from "../../../../src/variant-analysis/gh-api/mocks/scenarios/problem-query-success/1-submitVariantAnalysis.json";
import { response as variantAnalysisRepoJson_response } from "../../../../src/variant-analysis/gh-api/mocks/scenarios/problem-query-success/9-getVariantAnalysisRepo.json";
import { testCredentialsWithRealOctokit } from "../../../factories/authentication";

const mockServer = new MockGitHubApiServer();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {
workspace,
} from "vscode";

import { MockGitHubApiServer } from "../../../../src/mocks/mock-gh-api-server";
import { MockGitHubApiServer } from "../../../../src/variant-analysis/gh-api/mocks/mock-gh-api-server";
import { mockedQuickPickItem } from "../../utils/mocking.helpers";
import { setRemoteControllerRepo } from "../../../../src/config";
import { getActivatedExtension } from "../../global.helper";
Expand Down