mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
See the fixed issue for the context. This pulls in a vendored copy of Node that includes the described patch. Fixes #8358 Test Plan: Built Electron and verified it loaded the sample app correctly and that the module wrapper is the new one by viewing Node's source code in the Blink Inspector. Added specs and tested with `npm test -- --grep "global variables"`
125 lines
4.3 KiB
JavaScript
125 lines
4.3 KiB
JavaScript
const assert = require('assert')
|
|
const Module = require('module')
|
|
const path = require('path')
|
|
const temp = require('temp')
|
|
|
|
describe('third-party module', function () {
|
|
var fixtures = path.join(__dirname, 'fixtures')
|
|
temp.track()
|
|
|
|
if (process.platform !== 'win32' || process.execPath.toLowerCase().indexOf('\\out\\d\\') === -1) {
|
|
describe('runas', function () {
|
|
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
|
|
|
|
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')
|
|
describe('Q.when', function () {
|
|
it('emits the fullfil callback', function (done) {
|
|
Q(true).then(function (val) {
|
|
assert.equal(val, true)
|
|
done()
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('global variables', function () {
|
|
describe('process', function () {
|
|
it('can be declared in a module', function () {
|
|
var exportedProcess
|
|
assert.doesNotThrow(function () {
|
|
exportedProcess = require('./fixtures/module/declare-process')
|
|
})
|
|
assert.strictEqual(exportedProcess, require('process'))
|
|
})
|
|
})
|
|
|
|
describe('global', function () {
|
|
it('can be declared in a module', function () {
|
|
var exportedGlobal
|
|
assert.doesNotThrow(function () {
|
|
exportedGlobal = require('./fixtures/module/declare-global')
|
|
})
|
|
assert.deepEqual(exportedGlobal, {__global: true})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('Module._nodeModulePaths', function () {
|
|
describe('when the path is inside the resources path', function () {
|
|
it('does not include paths outside of the resources path', function () {
|
|
let modulePath = process.resourcesPath
|
|
assert.deepEqual(Module._nodeModulePaths(modulePath), [
|
|
path.join(process.resourcesPath, 'node_modules')
|
|
])
|
|
|
|
modulePath = process.resourcesPath + '-foo'
|
|
let nodeModulePaths = Module._nodeModulePaths(modulePath)
|
|
assert(nodeModulePaths.includes(path.join(modulePath, 'node_modules')))
|
|
assert(nodeModulePaths.includes(path.join(modulePath, '..', 'node_modules')))
|
|
|
|
modulePath = path.join(process.resourcesPath, 'foo')
|
|
assert.deepEqual(Module._nodeModulePaths(modulePath), [
|
|
path.join(process.resourcesPath, 'foo', 'node_modules'),
|
|
path.join(process.resourcesPath, 'node_modules')
|
|
])
|
|
|
|
modulePath = path.join(process.resourcesPath, 'node_modules', 'foo')
|
|
assert.deepEqual(Module._nodeModulePaths(modulePath), [
|
|
path.join(process.resourcesPath, 'node_modules', 'foo', 'node_modules'),
|
|
path.join(process.resourcesPath, 'node_modules')
|
|
])
|
|
|
|
modulePath = path.join(process.resourcesPath, 'node_modules', 'foo', 'bar')
|
|
assert.deepEqual(Module._nodeModulePaths(modulePath), [
|
|
path.join(process.resourcesPath, 'node_modules', 'foo', 'bar', 'node_modules'),
|
|
path.join(process.resourcesPath, 'node_modules', 'foo', 'node_modules'),
|
|
path.join(process.resourcesPath, 'node_modules')
|
|
])
|
|
|
|
modulePath = path.join(process.resourcesPath, 'node_modules', 'foo', 'node_modules', 'bar')
|
|
assert.deepEqual(Module._nodeModulePaths(modulePath), [
|
|
path.join(process.resourcesPath, 'node_modules', 'foo', 'node_modules', 'bar', 'node_modules'),
|
|
path.join(process.resourcesPath, 'node_modules', 'foo', 'node_modules'),
|
|
path.join(process.resourcesPath, 'node_modules')
|
|
])
|
|
})
|
|
})
|
|
|
|
describe('when the path is outside the resources path', function () {
|
|
it('includes paths outside of the resources path', function () {
|
|
let modulePath = path.resolve('/foo')
|
|
assert.deepEqual(Module._nodeModulePaths(modulePath), [
|
|
path.join(modulePath, 'node_modules'),
|
|
path.resolve('/node_modules')
|
|
])
|
|
})
|
|
})
|
|
})
|