Skip to content

Commit 4df48cd

Browse files
authored
fix: isUnpackedDir matches non-child directories that have same folder name prefix (#333)
* tmp save * update test case to test minimatch pattern * yarn prettier * remove path separator as it differs on windows * retrigger build as the timeout is unrelated to edited unit test * empty commit
1 parent 9ec1830 commit 4df48cd

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

src/asar.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ function isUnpackedDir(dirPath: string, pattern: string, unpackDirs: string[]) {
2626
}
2727
return true;
2828
} else {
29-
return unpackDirs.some((unpackDir) => dirPath.startsWith(unpackDir));
29+
return unpackDirs.some(
30+
(unpackDir) =>
31+
dirPath.startsWith(unpackDir) && !path.relative(unpackDir, dirPath).startsWith('..'),
32+
);
3033
}
3134
}
3235

test/cli-spec.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,18 @@ describe('command line interface', function () {
174174
'test/expected/packthis-unpack-dir.asar',
175175
);
176176
});
177-
it('should create archive from directory with unpacked subdirs and files', async () => {
177+
it('should create archive from directory with unpacked subdirs and files using minimatch', async () => {
178178
await execAsar(
179-
'p test/input/packthis-subdir/ tmp/packthis-unpack-subdir-cli.asar --unpack *.txt --unpack-dir dir2/subdir --exclude-hidden',
179+
'p test/input/packthis-subdir/ tmp/packthis-unpack-subdir-cli.asar --unpack *.txt --unpack-dir "{dir2/subdir,dir2/subdir}" --exclude-hidden',
180180
);
181181
assert.ok(fs.existsSync('tmp/packthis-unpack-subdir-cli.asar.unpacked/file0.txt'));
182182
assert.ok(fs.existsSync('tmp/packthis-unpack-subdir-cli.asar.unpacked/dir1/file1.txt'));
183183
assert.ok(fs.existsSync('tmp/packthis-unpack-subdir-cli.asar.unpacked/dir2/subdir/file2.png'));
184184
assert.ok(fs.existsSync('tmp/packthis-unpack-subdir-cli.asar.unpacked/dir2/subdir/file3.txt'));
185+
assert.ok(
186+
fs.existsSync(
187+
'tmp/packthis-unpack-subdir-cli.asar.unpacked/dir2/subdir-do-not-unpack/file2.png',
188+
) === false,
189+
);
185190
});
186191
});
Loading

0 commit comments

Comments
 (0)