DRY up logic to check if native modules should be loaded
This commit is contained in:
parent
90964290a6
commit
5cf4995f2e
4 changed files with 55 additions and 48 deletions
|
@ -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'))
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
@ -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')
|
||||
})
|
||||
|
||||
describe('ffi', function () {
|
||||
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('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 (!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)
|
||||
})
|
||||
})
|
||||
|
||||
describe('q', function () {
|
||||
var Q = require('q')
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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 () {
|
||||
|
|
Loading…
Reference in a new issue