Merge pull request #11 from electron/felixr-patch-fs

fix: Monkey-patch fs
This commit is contained in:
Felix Rieseberg 2024-10-08 07:57:04 -07:00 committed by GitHub
commit 06b29aafb7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 50 additions and 16 deletions

View file

@ -1,10 +1,9 @@
'use strict'
const gracefulFs = require('graceful-fs')
const fs = gracefulFs.promises
const path = require('path')
const { glob } = require('./glob')
const log = require('./log')
const { promises: fs } = require('./fs')
const which = require('which')
const win = process.platform === 'win32'

View file

@ -1,7 +1,7 @@
'use strict'
const fs = require('graceful-fs').promises
const log = require('./log')
const { promises: fs } = require('./fs')
async function clean (gyp, argv) {
// Remove the 'build' dir

View file

@ -1,6 +1,6 @@
'use strict'
const { promises: fs, readFileSync } = require('graceful-fs')
const { promises: fs, readFileSync } = require('./fs')
const path = require('path')
const log = require('./log')
const os = require('os')

View file

@ -1,6 +1,6 @@
'use strict'
const fs = require('graceful-fs').promises
const { promises: fs } = require('./fs')
const log = require('./log')
const path = require('path')

View file

@ -1,5 +1,5 @@
const fetch = require('make-fetch-happen')
const { promises: fs } = require('graceful-fs')
const { promises: fs } = require('./fs')
const log = require('./log')
async function download (gyp, url) {

View file

@ -1,7 +1,7 @@
'use strict'
const log = require('./log')
const { existsSync } = require('fs')
const { existsSync } = require('./fs')
const { win32: path } = require('path')
const { regSearchKeys, execFile } = require('./util')

35
lib/fs.js Normal file
View file

@ -0,0 +1,35 @@
const gracefulFs = require('graceful-fs')
const promises = gracefulFs.promises
/**
* Add fs.rm for older versions of node
*/
async function rm(...args) {
const pathToRemove = args[0]
const options = args[1] || {}
try {
const stat = await promises.stat(pathToRemove, { throwIfNoEntry: false })
const isDirectory = stat.isDirectory()
if (isDirectory) {
await promises.rmdir(pathToRemove, options)
} else {
await promises.unlink(pathToRemove)
}
} catch (err) {
if (err.code === 'ENOENT' && options.force) {
return
}
throw err
}
}
module.exports = {
...gracefulFs,
promises: {
rm,
...promises,
}
}

View file

@ -1,6 +1,6 @@
'use strict'
const { createWriteStream, promises: fs } = require('graceful-fs')
const { promises: fs, createWriteStream } = require('./fs')
const os = require('os')
const { backOff } = require('exponential-backoff')
const tar = require('tar')

View file

@ -1,6 +1,6 @@
'use strict'
const fs = require('graceful-fs').promises
const { promises: fs } = require('./fs')
const log = require('./log')
async function list (gyp, args) {

View file

@ -1,6 +1,6 @@
'use strict'
const fs = require('graceful-fs').promises
const { promises: fs } = require('./fs')
const path = require('path')
const log = require('./log')
const semver = require('semver')

View file

@ -2,7 +2,7 @@
const cp = require('child_process')
const path = require('path')
const { openSync, closeSync } = require('graceful-fs')
const { openSync, closeSync } = require('./fs')
const log = require('./log')
const execFile = async (...args) => new Promise((resolve) => {

View file

@ -10,7 +10,7 @@ const semver = require('semver')
const versionSemver = semver.parse(process.version)
const configure = requireInject('../lib/configure', {
const configure = requireInject.withEmptyCache('../lib/configure', {
'graceful-fs': {
openSync: () => 0,
closeSync: () => {},
@ -26,7 +26,7 @@ const configure = requireInject('../lib/configure', {
}
})
const configure2 = requireInject('../lib/configure', {
const configure2 = requireInject.withEmptyCache('../lib/configure', {
'graceful-fs': {
openSync: () => 0,
closeSync: () => {},

View file

@ -7,7 +7,7 @@ const { devDir } = require('./common')
const gyp = require('../lib/node-gyp')
const requireInject = require('require-inject')
const configure = requireInject('../lib/configure', {
const configure = requireInject.withEmptyCache('../lib/configure', {
'graceful-fs': {
openSync: () => 0,
closeSync: () => {},

View file

@ -4,7 +4,7 @@ const { describe, it } = require('mocha')
const assert = require('assert')
const path = require('path')
const requireInject = require('require-inject')
const { findAccessibleSync } = requireInject('../lib/util', {
const { findAccessibleSync } = requireInject.withEmptyCache('../lib/util', {
'graceful-fs': {
closeSync: function () { return undefined },
openSync: function (path) {

View file

@ -16,7 +16,7 @@ const { download } = require('../lib/download')
describe('install', function () {
it('EACCES retry once', async () => {
let statCalled = 0
const mockInstall = requireInject('../lib/install', {
const mockInstall = requireInject.withEmptyCache('../lib/install', {
'graceful-fs': {
promises: {
stat (_) {