Skip to content

Commit 5263f98

Browse files
committed
fixup! vfs: support renaming implicit ZIP directories
1 parent 4abd824 commit 5263f98

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

‎test/parallel/test-vfs-zip-provider.js‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,33 @@ async function buildArchive(entries, comment) {
125125
assert.strictEqual(await archiveVfs.promises.readFile('/renamed-dir/b.txt', 'utf8'), 'nested');
126126
}
127127

128+
// Renaming an explicit directory also renames its children.
129+
{
130+
const archive = await buildArchive([
131+
await zlib.ZipEntry.create('async-dir/', Buffer.alloc(0)),
132+
await zlib.ZipEntry.create('async-dir/child.txt', Buffer.from('async')),
133+
await zlib.ZipEntry.create('sync-dir/', Buffer.alloc(0)),
134+
await zlib.ZipEntry.create('sync-dir/child.txt', Buffer.from('sync')),
135+
]);
136+
const zip = new zlib.ZipBuffer(archive);
137+
const archiveVfs = vfs.create(new vfs.ZipProvider(zip));
138+
139+
await archiveVfs.promises.rename('/async-dir', '/renamed-async-dir');
140+
assert.strictEqual(zip.has('async-dir/'), false);
141+
assert.strictEqual(zip.has('async-dir/child.txt'), false);
142+
assert.strictEqual(zip.has('renamed-async-dir/'), true);
143+
assert.strictEqual(
144+
await archiveVfs.promises.readFile('/renamed-async-dir/child.txt', 'utf8'),
145+
'async',
146+
);
147+
148+
archiveVfs.renameSync('/sync-dir', '/renamed-sync-dir');
149+
assert.strictEqual(zip.has('sync-dir/'), false);
150+
assert.strictEqual(zip.has('sync-dir/child.txt'), false);
151+
assert.strictEqual(zip.has('renamed-sync-dir/'), true);
152+
assert.strictEqual(archiveVfs.readFileSync('/renamed-sync-dir/child.txt', 'utf8'), 'sync');
153+
}
154+
128155
// --- ZipFile-backed, read-only: writes rejected with EROFS ----------------
129156
{
130157
const archive = await buildArchive([await zlib.ZipEntry.create('a.txt', Buffer.from('x'))]);

0 commit comments

Comments
 (0)