Browse Source

test: throw if no valid outDir (#22412)

Shelley Vohr 5 years ago
parent
commit
02cf5baa32
2 changed files with 12 additions and 1 deletions
  1. 6 0
      docs/development/testing.md
  2. 6 1
      script/lib/utils.js

+ 6 - 0
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

+ 6 - 1
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 () {