Browse Source

DRY up logic to check if native modules should be loaded

Kevin Sawicki 8 years ago
parent
commit
5cf4995f2e
4 changed files with 53 additions and 46 deletions
  1. 10 9
      spec/api-browser-window-spec.js
  2. 24 21
      spec/modules-spec.js
  3. 2 0
      spec/static/main.js
  4. 17 16
      spec/webview-spec.js

+ 10 - 9
spec/api-browser-window-spec.js

@@ -12,6 +12,7 @@ const {ipcRenderer, remote, screen} = require('electron')
 const {app, ipcMain, BrowserWindow, protocol, webContents} = remote
 
 const isCI = remote.getGlobal('isCi')
+const nativeModulesEnabled = remote.getGlobal('nativeModulesEnabled')
 
 describe('BrowserWindow module', function () {
   var fixtures = path.resolve(__dirname, 'fixtures')
@@ -1301,19 +1302,19 @@ describe('BrowserWindow module', function () {
         w.loadURL('file://' + path.join(fixtures, 'api', 'native-window-open-iframe.html'))
       })
 
-      if (process.platform !== 'win32' || process.execPath.toLowerCase().indexOf('\\out\\d\\') === -1) {
-        it('loads native addons correctly after reload', (done) => {
+      it('loads native addons correctly after reload', (done) => {
+        if (!nativeModulesEnabled) return done()
+
+        ipcMain.once('answer', (event, content) => {
+          assert.equal(content, 'function')
           ipcMain.once('answer', (event, content) => {
             assert.equal(content, 'function')
-            ipcMain.once('answer', (event, content) => {
-              assert.equal(content, 'function')
-              done()
-            })
-            w.reload()
+            done()
           })
-          w.loadURL('file://' + path.join(fixtures, 'api', 'native-window-open-native-addon.html'))
+          w.reload()
         })
-      }
+        w.loadURL('file://' + path.join(fixtures, 'api', 'native-window-open-native-addon.html'))
+      })
     })
   })
 

+ 24 - 21
spec/modules-spec.js

@@ -5,38 +5,41 @@ const {remote} = require('electron')
 const {BrowserWindow} = remote
 const {closeWindow} = require('./window-helpers')
 
+const nativeModulesEnabled = remote.getGlobal('nativeModulesEnabled')
+
 describe('modules support', function () {
   var fixtures = path.join(__dirname, 'fixtures')
 
   describe('third-party module', function () {
-    if (process.platform !== 'win32' || process.execPath.toLowerCase().indexOf('\\out\\d\\') === -1) {
-      describe('runas', function () {
-        it('can be required in renderer', function () {
-          require('runas')
-        })
+    describe('runas', function () {
+      if (!nativeModulesEnabled) return
 
-        it('can be required in node binary', function (done) {
-          var runas = path.join(fixtures, 'module', 'runas.js')
-          var child = require('child_process').fork(runas)
-          child.on('message', function (msg) {
-            assert.equal(msg, 'ok')
-            done()
-          })
+      it('can be required in renderer', function () {
+        require('runas')
+      })
+
+      it('can be required in node binary', function (done) {
+        var runas = path.join(fixtures, 'module', 'runas.js')
+        var child = require('child_process').fork(runas)
+        child.on('message', function (msg) {
+          assert.equal(msg, 'ok')
+          done()
         })
       })
+    })
 
-      describe('ffi', function () {
-        if (process.platform === 'win32') return
+    describe('ffi', function () {
+      if (!nativeModulesEnabled) return
+      if (process.platform === 'win32') return
 
-        it('does not crash', function () {
-          var ffi = require('ffi')
-          var libm = ffi.Library('libm', {
-            ceil: ['double', ['double']]
-          })
-          assert.equal(libm.ceil(1.5), 2)
+      it('does not crash', function () {
+        var ffi = require('ffi')
+        var libm = ffi.Library('libm', {
+          ceil: ['double', ['double']]
         })
+        assert.equal(libm.ceil(1.5), 2)
       })
-    }
+    })
 
     describe('q', function () {
       var Q = require('q')

+ 2 - 0
spec/static/main.js

@@ -89,6 +89,8 @@ if (global.isCi) {
   })
 }
 
+global.nativeModulesEnabled = process.platform !== 'win32' || process.execPath.toLowerCase().indexOf('\\out\\d\\') === -1
+
 // Register app as standard scheme.
 global.standardScheme = 'app'
 global.zoomScheme = 'zoom'

+ 17 - 16
spec/webview-spec.js

@@ -7,6 +7,7 @@ const {app, session, getGuestWebContents, ipcMain, BrowserWindow, webContents} =
 const {closeWindow} = require('./window-helpers')
 
 const isCI = remote.getGlobal('isCi')
+const nativeModulesEnabled = remote.getGlobal('nativeModulesEnabled')
 
 describe('<webview> tag', function () {
   this.timeout(3 * 60 * 1000)
@@ -171,23 +172,23 @@ describe('<webview> tag', function () {
       document.body.appendChild(webview)
     })
 
-    if (process.platform !== 'win32' || process.execPath.toLowerCase().indexOf('\\out\\d\\') === -1) {
-      it('loads native modules when navigation happens', function (done) {
-        var listener = function () {
-          webview.removeEventListener('did-finish-load', listener)
-          var listener2 = function (e) {
-            assert.equal(e.message, 'function')
-            done()
-          }
-          webview.addEventListener('console-message', listener2)
-          webview.reload()
+    it('loads native modules when navigation happens', function (done) {
+      if (!nativeModulesEnabled) return done()
+
+      var listener = function () {
+        webview.removeEventListener('did-finish-load', listener)
+        var listener2 = function (e) {
+          assert.equal(e.message, 'function')
+          done()
         }
-        webview.addEventListener('did-finish-load', listener)
-        webview.setAttribute('nodeintegration', 'on')
-        webview.src = 'file://' + fixtures + '/pages/native-module.html'
-        document.body.appendChild(webview)
-      })
-    }
+        webview.addEventListener('console-message', listener2)
+        webview.reload()
+      }
+      webview.addEventListener('did-finish-load', listener)
+      webview.setAttribute('nodeintegration', 'on')
+      webview.src = 'file://' + fixtures + '/pages/native-module.html'
+      document.body.appendChild(webview)
+    })
   })
 
   describe('preload attribute', function () {