Skip to content
Permalink
Browse files

refactor: allow embedder overriding of internal FS calls (#17906) (#1…

  • Loading branch information...
codebytere authored and jkleinsc committed May 7, 2019
1 parent 91e3421 commit cfb6e847a0f499005b2821e79436aa8484da2ba2
2 DEPS
@@ -12,7 +12,7 @@ vars = {
'chromium_version':
'84c40395c741fa24ccbd9fc2c5828e2e97472952',
'node_version':
'696d8fb66d6f65fc82869d390e0d2078970b1eb4',
'a86a4a160dc520c61a602c949a32a1bc4c0fc633',

'boto_version': 'f7574aa6cc2c819430c1f05e9a1a1a666ef8169b',
'pyyaml_version': '3.12',
@@ -13,6 +13,9 @@
process.type !== 'renderer'
const isAsarDisabled = () => process.noAsar || envNoAsar

const internalBinding = process.internalBinding
delete process.internalBinding

/**
* @param {!Function} functionToCall
* @param {!Array|undefined} args
@@ -669,8 +672,8 @@
return files
}

const { internalModuleReadJSON } = process.binding('fs')
process.binding('fs').internalModuleReadJSON = pathArgument => {
const { internalModuleReadJSON } = internalBinding('fs')
internalBinding('fs').internalModuleReadJSON = pathArgument => {
const { isAsar, asarPath, filePath } = splitPath(pathArgument)
if (!isAsar) return internalModuleReadJSON(pathArgument)

@@ -694,8 +697,8 @@
return buffer.toString('utf8')
}

const { internalModuleStat } = process.binding('fs')
process.binding('fs').internalModuleStat = pathArgument => {
const { internalModuleStat } = internalBinding('fs')
internalBinding('fs').internalModuleStat = pathArgument => {
const { isAsar, asarPath, filePath } = splitPath(pathArgument)
if (!isAsar) return internalModuleStat(pathArgument)

Binary file not shown.
@@ -0,0 +1,8 @@
try {
require('some-module')
} catch (err) {
console.error(err)
process.exit(1)
}

process.exit(0)

Some generated files are not rendered by default. Learn more.

Oops, something went wrong.

Some generated files are not rendered by default. Learn more.

Oops, something went wrong.
@@ -578,4 +578,9 @@ describe('node feature', () => {
.that.is.a('string')
.and.matches(/^\d+\.\d+\.\d+\.\d+$/)
})

it('can find a module using a package.json main field', () => {
const result = ChildProcess.spawnSync(remote.process.execPath, [path.resolve(fixtures, 'api', 'electron-main-module', 'app.asar')])
expect(result.status).to.equal(0)
})
})

0 comments on commit cfb6e84

Please sign in to comment.
You can’t perform that action at this time.