From 02cf5baa323ea0cb783e8ccd58857c35fb32f0c3 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Thu, 27 Feb 2020 19:32:09 +0000 Subject: [PATCH] test: throw if no valid outDir (#22412) --- docs/development/testing.md | 6 ++++++ script/lib/utils.js | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/development/testing.md b/docs/development/testing.md index f3cc3b14072e..73b24c415d72 100644 --- a/docs/development/testing.md +++ b/docs/development/testing.md @@ -32,6 +32,12 @@ by coding style rules. `npm run lint-py` will check all Python, using ## Unit Tests +If you are not using [build-tools](https://github.com/electron/build-tools), +ensure that that name you have configured for your +local build of Electron is one of `Testing`, `Release`, `Default`, `Debug`, or +you have set `process.env.ELECTRON_OUT_DIR`. Without these set, Electron will fail +to perform some pre-testing steps. + To run all unit tests, run `npm run test`. The unit tests are an Electron app (surprise!) that can be found in the `spec` folder. Note that it has its own `package.json` and that its dependencies are therefore not defined diff --git a/script/lib/utils.js b/script/lib/utils.js index 7f42aeddb048..0074d27c0a35 100644 --- a/script/lib/utils.js +++ b/script/lib/utils.js @@ -27,6 +27,7 @@ function getElectronExec () { function getOutDir (options = {}) { const shouldLog = options.shouldLog || false + const presetDirs = ['Testing', 'Release', 'Default', 'Debug'] if (options.outDir || process.env.ELECTRON_OUT_DIR) { const outDir = options.outDir || process.env.ELECTRON_OUT_DIR @@ -41,7 +42,7 @@ function getOutDir (options = {}) { // Throw error if user passed/set nonexistent directory. throw new Error(`${outDir} directory not configured on your machine.`) } else { - for (const buildType of ['Testing', 'Release', 'Default', 'Debug']) { + for (const buildType of presetDirs) { const outPath = path.resolve(SRC_DIR, 'out', buildType) if (fs.existsSync(outPath)) { if (shouldLog) console.log(`OUT_DIR is: ${buildType}`) @@ -49,6 +50,10 @@ function getOutDir (options = {}) { } } } + + // If we got here, it means process.env.ELECTRON_OUT_DIR was not + // set and none of the preset options could be found in /out, so throw + throw new Error(`No valid out directory found; use one of ${presetDirs.join(',')} or set process.env.ELECTRON_OUT_DIR`) } function getAbsoluteElectronExec () {