fix: support recursive readdir in Asar files (#41582)
This commit is contained in:
parent
1cd7419718
commit
b02918883f
5 changed files with 356 additions and 12 deletions
|
@ -161,6 +161,7 @@ describe('asar package', function () {
|
|||
|
||||
fs = require('node:fs')
|
||||
path = require('node:path')
|
||||
fixtures = ${JSON.stringify(fixtures)}
|
||||
asarDir = ${JSON.stringify(asarDir)}
|
||||
|
||||
// This is used instead of util.promisify for some tests to dodge the
|
||||
|
@ -897,6 +898,37 @@ describe('asar package', function () {
|
|||
expect(dirs).to.deep.equal(['dir1', 'dir2', 'dir3', 'file1', 'file2', 'file3', 'link1', 'link2', 'ping.js']);
|
||||
});
|
||||
|
||||
itremote('supports recursive readdirSync', async () => {
|
||||
const dir = path.join(fixtures, 'recursive-asar');
|
||||
const files = await fs.readdirSync(dir, { recursive: true });
|
||||
expect(files).to.have.members([
|
||||
'a.asar',
|
||||
'nested',
|
||||
'test.txt',
|
||||
path.join('a.asar', 'dir1'),
|
||||
path.join('a.asar', 'dir2'),
|
||||
path.join('a.asar', 'dir3'),
|
||||
path.join('a.asar', 'file1'),
|
||||
path.join('a.asar', 'file2'),
|
||||
path.join('a.asar', 'file3'),
|
||||
path.join('a.asar', 'link1'),
|
||||
path.join('a.asar', 'link2'),
|
||||
path.join('a.asar', 'ping.js'),
|
||||
path.join('nested', 'hello.txt'),
|
||||
path.join('a.asar', 'dir1', 'file1'),
|
||||
path.join('a.asar', 'dir1', 'file2'),
|
||||
path.join('a.asar', 'dir1', 'file3'),
|
||||
path.join('a.asar', 'dir1', 'link1'),
|
||||
path.join('a.asar', 'dir1', 'link2'),
|
||||
path.join('a.asar', 'dir2', 'file1'),
|
||||
path.join('a.asar', 'dir2', 'file2'),
|
||||
path.join('a.asar', 'dir2', 'file3'),
|
||||
path.join('a.asar', 'dir3', 'file1'),
|
||||
path.join('a.asar', 'dir3', 'file2'),
|
||||
path.join('a.asar', 'dir3', 'file3')
|
||||
]);
|
||||
});
|
||||
|
||||
itremote('reads dirs from a normal dir', function () {
|
||||
const p = path.join(asarDir, 'a.asar', 'dir1');
|
||||
const dirs = fs.readdirSync(p);
|
||||
|
@ -944,6 +976,37 @@ describe('asar package', function () {
|
|||
expect(dirs).to.deep.equal(['dir1', 'dir2', 'dir3', 'file1', 'file2', 'file3', 'link1', 'link2', 'ping.js']);
|
||||
});
|
||||
|
||||
itremote('supports recursive readdirSync', async () => {
|
||||
const dir = path.join(fixtures, 'recursive-asar');
|
||||
const files = await promisify(fs.readdir)(dir, { recursive: true });
|
||||
expect(files).to.have.members([
|
||||
'a.asar',
|
||||
'nested',
|
||||
'test.txt',
|
||||
path.join('a.asar', 'dir1'),
|
||||
path.join('a.asar', 'dir2'),
|
||||
path.join('a.asar', 'dir3'),
|
||||
path.join('a.asar', 'file1'),
|
||||
path.join('a.asar', 'file2'),
|
||||
path.join('a.asar', 'file3'),
|
||||
path.join('a.asar', 'link1'),
|
||||
path.join('a.asar', 'link2'),
|
||||
path.join('a.asar', 'ping.js'),
|
||||
path.join('nested', 'hello.txt'),
|
||||
path.join('a.asar', 'dir1', 'file1'),
|
||||
path.join('a.asar', 'dir1', 'file2'),
|
||||
path.join('a.asar', 'dir1', 'file3'),
|
||||
path.join('a.asar', 'dir1', 'link1'),
|
||||
path.join('a.asar', 'dir1', 'link2'),
|
||||
path.join('a.asar', 'dir2', 'file1'),
|
||||
path.join('a.asar', 'dir2', 'file2'),
|
||||
path.join('a.asar', 'dir2', 'file3'),
|
||||
path.join('a.asar', 'dir3', 'file1'),
|
||||
path.join('a.asar', 'dir3', 'file2'),
|
||||
path.join('a.asar', 'dir3', 'file3')
|
||||
]);
|
||||
});
|
||||
|
||||
itremote('supports withFileTypes', async () => {
|
||||
const p = path.join(asarDir, 'a.asar');
|
||||
|
||||
|
@ -1008,6 +1071,37 @@ describe('asar package', function () {
|
|||
expect(dirs).to.deep.equal(['dir1', 'dir2', 'dir3', 'file1', 'file2', 'file3', 'link1', 'link2', 'ping.js']);
|
||||
});
|
||||
|
||||
itremote('supports recursive readdir', async () => {
|
||||
const dir = path.join(fixtures, 'recursive-asar');
|
||||
const files = await fs.promises.readdir(dir, { recursive: true });
|
||||
expect(files).to.have.members([
|
||||
'a.asar',
|
||||
'nested',
|
||||
'test.txt',
|
||||
path.join('a.asar', 'dir1'),
|
||||
path.join('a.asar', 'dir2'),
|
||||
path.join('a.asar', 'dir3'),
|
||||
path.join('a.asar', 'file1'),
|
||||
path.join('a.asar', 'file2'),
|
||||
path.join('a.asar', 'file3'),
|
||||
path.join('a.asar', 'link1'),
|
||||
path.join('a.asar', 'link2'),
|
||||
path.join('a.asar', 'ping.js'),
|
||||
path.join('nested', 'hello.txt'),
|
||||
path.join('a.asar', 'dir1', 'file1'),
|
||||
path.join('a.asar', 'dir1', 'file2'),
|
||||
path.join('a.asar', 'dir1', 'file3'),
|
||||
path.join('a.asar', 'dir1', 'link1'),
|
||||
path.join('a.asar', 'dir1', 'link2'),
|
||||
path.join('a.asar', 'dir2', 'file1'),
|
||||
path.join('a.asar', 'dir2', 'file2'),
|
||||
path.join('a.asar', 'dir2', 'file3'),
|
||||
path.join('a.asar', 'dir3', 'file1'),
|
||||
path.join('a.asar', 'dir3', 'file2'),
|
||||
path.join('a.asar', 'dir3', 'file3')
|
||||
]);
|
||||
});
|
||||
|
||||
itremote('supports withFileTypes', async function () {
|
||||
const p = path.join(asarDir, 'a.asar');
|
||||
const dirs = await fs.promises.readdir(p, { withFileTypes: true });
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue