Refactoring: Introduce common method to stub a config

This means that we don't need to update irrelevant test cases when we
add a new configuration property.
This commit is contained in:
Henry Mercer 2024-01-30 18:57:41 +00:00
parent ec42edcaab
commit d2e867f3be
18 changed files with 114 additions and 207 deletions

View file

@ -6,11 +6,15 @@ import * as sinon from "sinon";
import { runQueries } from "./analyze";
import { setCodeQL } from "./codeql";
import { Config } from "./config-utils";
import { Feature } from "./feature-flags";
import { Language } from "./languages";
import { getRunnerLogger } from "./logging";
import { setupTests, setupActionsVars, createFeatures } from "./testing-utils";
import {
setupTests,
setupActionsVars,
createFeatures,
createTestConfig,
} from "./testing-utils";
import * as uploadLib from "./upload-lib";
import * as util from "./util";
@ -82,25 +86,11 @@ test("status report fields", async (t) => {
databasePrintBaseline: async () => "",
});
const config: Config = {
const config = createTestConfig({
languages: [language],
originalUserInput: {},
tempDir: tmpDir,
codeQLCmd: "",
gitHubVersion: {
type: util.GitHubVariant.DOTCOM,
} as util.GitHubVersion,
dbLocation: path.resolve(tmpDir, "codeql_databases"),
debugMode: false,
debugArtifactName: util.DEFAULT_DEBUG_ARTIFACT_NAME,
debugDatabaseName: util.DEFAULT_DEBUG_DATABASE_NAME,
augmentationProperties: {
packsInputCombines: false,
queriesInputCombines: false,
},
trapCaches: {},
trapCacheDownloadTime: 0,
};
});
fs.mkdirSync(util.getCodeQLDatabasePath(config, language), {
recursive: true,
});

View file

@ -26,6 +26,7 @@ import {
SAMPLE_DEFAULT_CLI_VERSION,
mockBundleDownloadApi,
makeVersionInfo,
createTestConfig,
} from "./testing-utils";
import * as util from "./util";
import { initializeEnvironment } from "./util";
@ -37,25 +38,9 @@ let stubConfig: Config;
test.beforeEach(() => {
initializeEnvironment("1.2.3");
stubConfig = {
stubConfig = createTestConfig({
languages: [Language.cpp],
originalUserInput: {},
tempDir: "",
codeQLCmd: "",
gitHubVersion: {
type: util.GitHubVariant.DOTCOM,
} as util.GitHubVersion,
dbLocation: "",
debugMode: false,
debugArtifactName: util.DEFAULT_DEBUG_ARTIFACT_NAME,
debugDatabaseName: util.DEFAULT_DEBUG_DATABASE_NAME,
augmentationProperties: {
packsInputCombines: false,
queriesInputCombines: false,
},
trapCaches: {},
trapCacheDownloadTime: 0,
};
});
});
async function installIntoToolcache({

View file

@ -8,19 +8,18 @@ import * as actionsUtil from "./actions-util";
import { GitHubApiDetails } from "./api-client";
import * as apiClient from "./api-client";
import { setCodeQL } from "./codeql";
import { Config, defaultAugmentationProperties } from "./config-utils";
import { Config } from "./config-utils";
import { uploadDatabases } from "./database-upload";
import { Language } from "./languages";
import { RepositoryNwo } from "./repository";
import {
createTestConfig,
getRecordingLogger,
LoggedMessage,
setupActionsVars,
setupTests,
} from "./testing-utils";
import {
DEFAULT_DEBUG_ARTIFACT_NAME,
DEFAULT_DEBUG_DATABASE_NAME,
GitHubVariant,
HTTPError,
initializeEnvironment,
@ -41,20 +40,10 @@ const testApiDetails: GitHubApiDetails = {
};
function getTestConfig(tmpDir: string): Config {
return {
return createTestConfig({
languages: [Language.javascript],
originalUserInput: {},
tempDir: tmpDir,
codeQLCmd: "foo",
gitHubVersion: { type: GitHubVariant.DOTCOM },
dbLocation: tmpDir,
debugMode: false,
debugArtifactName: DEFAULT_DEBUG_ARTIFACT_NAME,
debugDatabaseName: DEFAULT_DEBUG_DATABASE_NAME,
augmentationProperties: defaultAugmentationProperties,
trapCaches: {},
trapCacheDownloadTime: 0,
};
});
}
async function mockHttpRequests(databaseUploadStatusCode: number) {

View file

@ -9,13 +9,20 @@ import * as sinon from "sinon";
import * as apiClient from "./api-client";
import { GitHubApiDetails } from "./api-client";
import * as codeql from "./codeql";
import { Config } from "./config-utils";
import {
CodeQLDefaultVersionInfo,
Feature,
FeatureEnablement,
} from "./feature-flags";
import { Logger } from "./logging";
import { HTTPError } from "./util";
import {
DEFAULT_DEBUG_ARTIFACT_NAME,
DEFAULT_DEBUG_DATABASE_NAME,
GitHubVariant,
GitHubVersion,
HTTPError,
} from "./util";
export const SAMPLE_DOTCOM_API_DETAILS = {
auth: "token",
@ -291,3 +298,29 @@ export function mockBundleDownloadApi({
return `${baseUrl}${relativeUrl}`;
}
export function createTestConfig(overrides: Partial<Config>): Config {
return Object.assign(
{},
{
languages: [],
originalUserInput: {},
tempDir: "",
codeQLCmd: "",
gitHubVersion: {
type: GitHubVariant.DOTCOM,
} as GitHubVersion,
dbLocation: "",
debugMode: false,
debugArtifactName: DEFAULT_DEBUG_ARTIFACT_NAME,
debugDatabaseName: DEFAULT_DEBUG_DATABASE_NAME,
augmentationProperties: {
packsInputCombines: false,
queriesInputCombines: false,
},
trapCaches: {},
trapCacheDownloadTime: 0,
},
overrides,
);
}

View file

@ -5,27 +5,18 @@ import test from "ava";
import * as configUtils from "./config-utils";
import { Language } from "./languages";
import { makeVersionInfo, setupTests } from "./testing-utils";
import { createTestConfig, makeVersionInfo, setupTests } from "./testing-utils";
import { getCombinedTracerConfig } from "./tracer-config";
import * as util from "./util";
setupTests(test);
function getTestConfig(tmpDir: string): configUtils.Config {
return {
function getTestConfig(tempDir: string): configUtils.Config {
return createTestConfig({
languages: [Language.java],
originalUserInput: {},
tempDir: tmpDir,
codeQLCmd: "",
gitHubVersion: { type: util.GitHubVariant.DOTCOM } as util.GitHubVersion,
dbLocation: path.resolve(tmpDir, "codeql_databases"),
debugMode: false,
debugArtifactName: util.DEFAULT_DEBUG_ARTIFACT_NAME,
debugDatabaseName: util.DEFAULT_DEBUG_DATABASE_NAME,
augmentationProperties: configUtils.defaultAugmentationProperties,
trapCaches: {},
trapCacheDownloadTime: 0,
};
tempDir,
dbLocation: path.resolve(tempDir, "codeql_databases"),
});
}
test("getCombinedTracerConfig - return undefined when no languages are traced languages", async (t) => {

View file

@ -12,9 +12,9 @@ import {
getTrapCachingExtractorConfigArgsForLang,
} from "./codeql";
import * as configUtils from "./config-utils";
import { Config } from "./config-utils";
import { Language } from "./languages";
import {
createTestConfig,
getRecordingLogger,
makeVersionInfo,
setupTests,
@ -69,49 +69,23 @@ const stubCodeql = setCodeQL({
},
});
const testConfigWithoutTmpDir: Config = {
const testConfigWithoutTmpDir = createTestConfig({
languages: [Language.javascript, Language.cpp],
originalUserInput: {},
tempDir: "",
codeQLCmd: "",
gitHubVersion: {
type: util.GitHubVariant.DOTCOM,
} as util.GitHubVersion,
dbLocation: "",
debugMode: false,
debugArtifactName: util.DEFAULT_DEBUG_ARTIFACT_NAME,
debugDatabaseName: util.DEFAULT_DEBUG_DATABASE_NAME,
augmentationProperties: {
packsInputCombines: false,
queriesInputCombines: false,
},
trapCaches: {
javascript: "/some/cache/dir",
},
trapCacheDownloadTime: 0,
};
});
function getTestConfigWithTempDir(tmpDir: string): configUtils.Config {
return {
function getTestConfigWithTempDir(tempDir: string): configUtils.Config {
return createTestConfig({
languages: [Language.javascript, Language.ruby],
originalUserInput: {},
tempDir: tmpDir,
codeQLCmd: "",
gitHubVersion: { type: util.GitHubVariant.DOTCOM } as util.GitHubVersion,
dbLocation: path.resolve(tmpDir, "codeql_databases"),
debugMode: false,
debugArtifactName: util.DEFAULT_DEBUG_ARTIFACT_NAME,
debugDatabaseName: util.DEFAULT_DEBUG_DATABASE_NAME,
augmentationProperties: {
packsInputCombines: false,
queriesInputCombines: false,
},
tempDir,
dbLocation: path.resolve(tempDir, "codeql_databases"),
trapCaches: {
javascript: path.resolve(tmpDir, "jsCache"),
ruby: path.resolve(tmpDir, "rubyCache"),
javascript: path.resolve(tempDir, "jsCache"),
ruby: path.resolve(tempDir, "rubyCache"),
},
trapCacheDownloadTime: 0,
};
});
}
test("check flags for JS, analyzing default branch", async (t) => {