diff options
Diffstat (limited to 'extension/src/test-runner')
-rw-r--r-- | extension/src/test-runner/mochaRunner.ts | 39 | ||||
-rw-r--r-- | extension/src/test-runner/runTestOnVSCodeHost.ts | 24 |
2 files changed, 63 insertions, 0 deletions
diff --git a/extension/src/test-runner/mochaRunner.ts b/extension/src/test-runner/mochaRunner.ts new file mode 100644 index 00000000..95fcbc5e --- /dev/null +++ b/extension/src/test-runner/mochaRunner.ts @@ -0,0 +1,39 @@ +import * as path from "path"; +import Mocha from "mocha"; +import * as glob from "glob"; + +export function run() { + // Avoid timing out when stopping on breakpoints during debugging in VSCode + const timeoutOption = process.env.MOCHA_TIMEOUT ? parseInt(process.env.MOCHA_TIMEOUT) : undefined; + + // Create the mocha test + const mocha = new Mocha({ + ui: "tdd", + color: true, + timeout: timeoutOption, + }); + + // See esbuild.test.mjs for more details + // Assumes this file is in out/test-runner/mochaRunner.js + const compiledTestSuitesDirectory = path.resolve(__dirname, "../test-suites"); + + glob.sync("**/**.test.js", { cwd: compiledTestSuitesDirectory }).forEach((file) => { + mocha.addFile(path.resolve(compiledTestSuitesDirectory, file)); + }); + + return new Promise<void>((c, e) => { + try { + // Run the mocha test + mocha.run((failures) => { + if (failures > 0) { + e(new Error(`${failures} tests failed.`)); + } else { + c(); + } + }); + } catch (err) { + console.error(err); + e(err); + } + }); +} diff --git a/extension/src/test-runner/runTestOnVSCodeHost.ts b/extension/src/test-runner/runTestOnVSCodeHost.ts new file mode 100644 index 00000000..2a542ffc --- /dev/null +++ b/extension/src/test-runner/runTestOnVSCodeHost.ts @@ -0,0 +1,24 @@ +import { runTests } from "@vscode/test-electron"; +import * as path from "path"; + +async function main() { + try { + // The folder containing the Extension Manifest package.json + // Passed to `--extensionDevelopmentPath` + + // Assumes this file is in out/test-runner/runTestOnVSCodeHost.js + const extensionDevelopmentPath = path.resolve(__dirname, "../../"); + + // The path to test runner + // Passed to --extensionTestsPath + const extensionTestsPath = path.resolve(extensionDevelopmentPath, "out/test-runner/mochaRunner"); + + // Download VS Code, unzip it and run the integration test + await runTests({ extensionDevelopmentPath, extensionTestsPath }); + } catch (err) { + console.error("Failed to run tests", err); + process.exit(1); + } +} + +main(); |