From a23a8f78ddda4a592828bc272c87434762cf600d Mon Sep 17 00:00:00 2001 From: Koen Vlaswinkel Date: Fri, 25 Nov 2022 13:06:03 +0100 Subject: [PATCH] Use ts-jest for running integration tests Instead of running the integration tests from the `out` directory, this will run the integration tests from the `src` directory using `ts-jest`. Unfortunately, we are not able to use TypeScript files for the `jest-runner-vscode` configuration since `cosmiconfig` (the package that handles the configuration loading for `jest-runner-vscode`) doesn't support loading TypeScript files by default. --- extensions/ql-vscode/jest.config.js | 6 +++--- extensions/ql-vscode/package.json | 6 +++--- ....config.ts => jest-runner-vscode.config.js} | 14 +++++++------- .../cli-integration/jest.config.ts | 4 ++-- .../cli-integration/legacy-query.test.ts | 2 +- ...se.ts => jest-runner-vscode.config.base.js} | 18 +++++++++++------- .../src/vscode-tests/jest.config.base.ts | 4 ++-- .../jest-runner-vscode.config.js | 18 ++++++++++++++++++ .../jest-runner-vscode.config.ts | 17 ----------------- .../no-workspace/jest-runner-vscode.config.js | 9 +++++++++ .../no-workspace/jest-runner-vscode.config.ts | 12 ------------ 11 files changed, 56 insertions(+), 54 deletions(-) rename extensions/ql-vscode/src/vscode-tests/cli-integration/{jest-runner-vscode.config.ts => jest-runner-vscode.config.js} (63%) rename extensions/ql-vscode/src/vscode-tests/{jest-runner-vscode.config.base.ts => jest-runner-vscode.config.base.js} (54%) create mode 100644 extensions/ql-vscode/src/vscode-tests/minimal-workspace/jest-runner-vscode.config.js delete mode 100644 extensions/ql-vscode/src/vscode-tests/minimal-workspace/jest-runner-vscode.config.ts create mode 100644 extensions/ql-vscode/src/vscode-tests/no-workspace/jest-runner-vscode.config.js delete mode 100644 extensions/ql-vscode/src/vscode-tests/no-workspace/jest-runner-vscode.config.ts diff --git a/extensions/ql-vscode/jest.config.js b/extensions/ql-vscode/jest.config.js index 2015ae66d..eb44660a8 100644 --- a/extensions/ql-vscode/jest.config.js +++ b/extensions/ql-vscode/jest.config.js @@ -8,8 +8,8 @@ module.exports = { projects: [ "/src/view", "/test", - "/out/vscode-tests/cli-integration", - "/out/vscode-tests/no-workspace", - "/out/vscode-tests/minimal-workspace", + "/src/vscode-tests/cli-integration", + "/src/vscode-tests/no-workspace", + "/src/vscode-tests/minimal-workspace", ], }; diff --git a/extensions/ql-vscode/package.json b/extensions/ql-vscode/package.json index 5f4122611..07a8db5cf 100644 --- a/extensions/ql-vscode/package.json +++ b/extensions/ql-vscode/package.json @@ -1273,9 +1273,9 @@ "test:unit": "jest --projects test", "test:view": "jest --projects src/view", "integration": "npm-run-all integration:*", - "integration:no-workspace": "jest --projects out/vscode-tests/no-workspace", - "integration:minimal-workspace": "jest --projects out/vscode-tests/minimal-workspace", - "cli-integration": "jest --projects out/vscode-tests/cli-integration", + "integration:no-workspace": "jest --projects src/vscode-tests/no-workspace", + "integration:minimal-workspace": "jest --projects src/vscode-tests/minimal-workspace", + "cli-integration": "jest --projects src/vscode-tests/cli-integration", "update-vscode": "node ./node_modules/vscode/bin/install", "format": "prettier --write **/*.{ts,tsx} && eslint . --ext .ts,.tsx --fix", "lint": "eslint . --ext .ts,.tsx --max-warnings=0", diff --git a/extensions/ql-vscode/src/vscode-tests/cli-integration/jest-runner-vscode.config.ts b/extensions/ql-vscode/src/vscode-tests/cli-integration/jest-runner-vscode.config.js similarity index 63% rename from extensions/ql-vscode/src/vscode-tests/cli-integration/jest-runner-vscode.config.ts rename to extensions/ql-vscode/src/vscode-tests/cli-integration/jest-runner-vscode.config.js index 672794e59..ec56deb64 100644 --- a/extensions/ql-vscode/src/vscode-tests/cli-integration/jest-runner-vscode.config.ts +++ b/extensions/ql-vscode/src/vscode-tests/cli-integration/jest-runner-vscode.config.js @@ -1,10 +1,12 @@ -import * as path from "path"; +const path = require("path"); -import { RunnerOptions } from "jest-runner-vscode"; +const { + config: baseConfig, + rootDir, +} = require("../jest-runner-vscode.config.base"); -import baseConfig, { rootDir } from "../jest-runner-vscode.config.base"; - -const config: RunnerOptions = { +/** @type import("jest-runner-vscode").RunnerOptions */ +const config = { ...baseConfig, launchArgs: [ ...(baseConfig.launchArgs ?? []), @@ -25,6 +27,4 @@ const config: RunnerOptions = { }, }; -// We are purposefully not using export default here since that would result in an ESModule, which doesn't seem to be -// supported properly by jest-runner-vscode (cosmiconfig doesn't really seem to support it). module.exports = config; diff --git a/extensions/ql-vscode/src/vscode-tests/cli-integration/jest.config.ts b/extensions/ql-vscode/src/vscode-tests/cli-integration/jest.config.ts index eb7367100..3a419bc65 100644 --- a/extensions/ql-vscode/src/vscode-tests/cli-integration/jest.config.ts +++ b/extensions/ql-vscode/src/vscode-tests/cli-integration/jest.config.ts @@ -4,8 +4,8 @@ import baseConfig from "../jest.config.base"; const config: Config = { ...baseConfig, - runner: "/jest-runner-cli-integration.js", - setupFilesAfterEnv: ["/jest.setup.js"], + runner: "/jest-runner-cli-integration.ts", + setupFilesAfterEnv: ["/jest.setup.ts"], }; export default config; diff --git a/extensions/ql-vscode/src/vscode-tests/cli-integration/legacy-query.test.ts b/extensions/ql-vscode/src/vscode-tests/cli-integration/legacy-query.test.ts index 0161328e3..5ad0db9ed 100644 --- a/extensions/ql-vscode/src/vscode-tests/cli-integration/legacy-query.test.ts +++ b/extensions/ql-vscode/src/vscode-tests/cli-integration/legacy-query.test.ts @@ -94,7 +94,7 @@ const queryTestCases: QueryTestCase[] = [ ]; const db: messages.Dataset = { - dbDir: path.join(__dirname, "../test-db"), + dbDir: path.join(__dirname, "../../../.vscode-test/test-db"), workingSet: "default", }; diff --git a/extensions/ql-vscode/src/vscode-tests/jest-runner-vscode.config.base.ts b/extensions/ql-vscode/src/vscode-tests/jest-runner-vscode.config.base.js similarity index 54% rename from extensions/ql-vscode/src/vscode-tests/jest-runner-vscode.config.base.ts rename to extensions/ql-vscode/src/vscode-tests/jest-runner-vscode.config.base.js index 71e3ccd1b..71009f786 100644 --- a/extensions/ql-vscode/src/vscode-tests/jest-runner-vscode.config.base.ts +++ b/extensions/ql-vscode/src/vscode-tests/jest-runner-vscode.config.base.js @@ -1,12 +1,12 @@ -import * as path from "path"; -import * as tmp from "tmp-promise"; -import { RunnerOptions } from "jest-runner-vscode"; +const path = require("path"); +const tmp = require("tmp-promise"); -export const tmpDir = tmp.dirSync({ unsafeCleanup: true }); +const tmpDir = tmp.dirSync({ unsafeCleanup: true }); -export const rootDir = path.resolve(__dirname, "../.."); +const rootDir = path.resolve(__dirname, "../.."); -const config: RunnerOptions = { +/** @type import("jest-runner-vscode").RunnerOptions */ +const config = { version: "stable", launchArgs: [ "--disable-gpu", @@ -20,4 +20,8 @@ if (process.env.VSCODE_INSPECTOR_OPTIONS) { config.launchArgs?.push("--inspect-extensions", "9223"); } -export default config; +module.exports = { + config, + tmpDir, + rootDir, +}; diff --git a/extensions/ql-vscode/src/vscode-tests/jest.config.base.ts b/extensions/ql-vscode/src/vscode-tests/jest.config.base.ts index 0efba769c..40846df79 100644 --- a/extensions/ql-vscode/src/vscode-tests/jest.config.base.ts +++ b/extensions/ql-vscode/src/vscode-tests/jest.config.base.ts @@ -93,7 +93,7 @@ const config: Config = { // notifyMode: "failure-change", // A preset that is used as a base for Jest's configuration - // preset: 'ts-jest', + preset: "ts-jest", // Run tests from one or more projects // projects: undefined, @@ -128,7 +128,7 @@ const config: Config = { // setupFiles: [], // A list of paths to modules that run some code to configure or set up the testing framework before each test - setupFilesAfterEnv: ["/../jest.setup.js"], + setupFilesAfterEnv: ["/../jest.setup.ts"], // The number of seconds after which a test is considered as slow and reported as such in the results. // slowTestThreshold: 5, diff --git a/extensions/ql-vscode/src/vscode-tests/minimal-workspace/jest-runner-vscode.config.js b/extensions/ql-vscode/src/vscode-tests/minimal-workspace/jest-runner-vscode.config.js new file mode 100644 index 000000000..027ec79b2 --- /dev/null +++ b/extensions/ql-vscode/src/vscode-tests/minimal-workspace/jest-runner-vscode.config.js @@ -0,0 +1,18 @@ +const path = require("path"); + +const { + config: baseConfig, + rootDir, +} = require("../jest-runner-vscode.config.base"); + +/** @type import("jest-runner-vscode").RunnerOptions */ +const config = { + ...baseConfig, + launchArgs: [ + ...(baseConfig.launchArgs ?? []), + "--disable-extensions", + path.resolve(rootDir, "test/data"), + ], +}; + +module.exports = config; diff --git a/extensions/ql-vscode/src/vscode-tests/minimal-workspace/jest-runner-vscode.config.ts b/extensions/ql-vscode/src/vscode-tests/minimal-workspace/jest-runner-vscode.config.ts deleted file mode 100644 index 4de8d4548..000000000 --- a/extensions/ql-vscode/src/vscode-tests/minimal-workspace/jest-runner-vscode.config.ts +++ /dev/null @@ -1,17 +0,0 @@ -import * as path from "path"; -import { RunnerOptions } from "jest-runner-vscode"; - -import baseConfig, { rootDir } from "../jest-runner-vscode.config.base"; - -const config: RunnerOptions = { - ...baseConfig, - launchArgs: [ - ...(baseConfig.launchArgs ?? []), - "--disable-extensions", - path.resolve(rootDir, "test/data"), - ], -}; - -// We are purposefully not using export default here since that would result in an ESModule, which doesn't seem to be -// supported properly by jest-runner-vscode (cosmiconfig doesn't really seem to support it). -module.exports = config; diff --git a/extensions/ql-vscode/src/vscode-tests/no-workspace/jest-runner-vscode.config.js b/extensions/ql-vscode/src/vscode-tests/no-workspace/jest-runner-vscode.config.js new file mode 100644 index 000000000..d41dccb07 --- /dev/null +++ b/extensions/ql-vscode/src/vscode-tests/no-workspace/jest-runner-vscode.config.js @@ -0,0 +1,9 @@ +const { config: baseConfig } = require("../jest-runner-vscode.config.base"); + +/** @type import("jest-runner-vscode").RunnerOptions */ +const config = { + ...baseConfig, + launchArgs: [...(baseConfig.launchArgs ?? []), "--disable-extensions"], +}; + +module.exports = config; diff --git a/extensions/ql-vscode/src/vscode-tests/no-workspace/jest-runner-vscode.config.ts b/extensions/ql-vscode/src/vscode-tests/no-workspace/jest-runner-vscode.config.ts deleted file mode 100644 index 0d0108474..000000000 --- a/extensions/ql-vscode/src/vscode-tests/no-workspace/jest-runner-vscode.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { RunnerOptions } from "jest-runner-vscode"; - -import baseConfig from "../jest-runner-vscode.config.base"; - -const config: RunnerOptions = { - ...baseConfig, - launchArgs: [...(baseConfig.launchArgs ?? []), "--disable-extensions"], -}; - -// We are purposefully not using export default here since that would result in an ESModule, which doesn't seem to be -// supported properly by jest-runner-vscode (cosmiconfig doesn't really seem to support it). -module.exports = config;