diff --git a/.changeset/funny-mirrors-act.md b/.changeset/funny-mirrors-act.md new file mode 100644 index 00000000000..14f5a61cce1 --- /dev/null +++ b/.changeset/funny-mirrors-act.md @@ -0,0 +1,5 @@ +--- +"@pnpm/filter-workspace-packages": patch +--- + +'filter-workspace-packages' will filter the package well even if Korean is included in the path. fix #4594 diff --git a/packages/filter-workspace-packages/src/getChangedPackages.ts b/packages/filter-workspace-packages/src/getChangedPackages.ts index a401d4ed335..ac487fb7cee 100644 --- a/packages/filter-workspace-packages/src/getChangedPackages.ts +++ b/packages/filter-workspace-packages/src/getChangedPackages.ts @@ -64,6 +64,8 @@ async function getChangedDirsSinceCommit (commit: string, workingDir: string, te } const allChangedFiles = diff.split('\n') + // The prefix and suffix '"' are appended to the Korean path + .map(line => line.replace(/^"/, '').replace(/"$/, '')) const patterns = changedFilesIgnorePattern.filter( (pattern) => pattern.length ) diff --git a/packages/filter-workspace-packages/test/index.ts b/packages/filter-workspace-packages/test/index.ts index 176d31cd1ea..799d5d1431d 100644 --- a/packages/filter-workspace-packages/test/index.ts +++ b/packages/filter-workspace-packages/test/index.ts @@ -366,6 +366,11 @@ test('select changed packages', async () => { await mkdir(pkg3Dir) + const pkgKorDir = path.join(workspaceDir, 'package-kor') + + await mkdir(pkgKorDir) + await touch(path.join(pkgKorDir, 'fileKor한글.js')) + await execa('git', ['add', '.'], { cwd: workspaceDir }) await execa('git', ['commit', '--allow-empty-message', '-m', '', '--no-gpg-sign'], { cwd: workspaceDir }) @@ -412,6 +417,16 @@ test('select changed packages', async () => { }, }, }, + [pkgKorDir]: { + dependencies: [], + package: { + dir: pkgKorDir, + manifest: { + name: 'package-kor', + version: '0.0.0', + }, + }, + }, [pkg20Dir]: { dependencies: [], package: { @@ -429,7 +444,7 @@ test('select changed packages', async () => { diff: 'HEAD~1', }], { workspaceDir }) - expect(Object.keys(selectedProjectsGraph)).toStrictEqual([pkg1Dir, pkg2Dir]) + expect(Object.keys(selectedProjectsGraph)).toStrictEqual([pkg1Dir, pkg2Dir, pkgKorDir]) } { const { selectedProjectsGraph } = await filterWorkspacePackages(pkgsGraph, [{ @@ -453,7 +468,7 @@ test('select changed packages', async () => { includeDependents: true, }], { workspaceDir, testPattern: ['*/file2.js'] }) - expect(Object.keys(selectedProjectsGraph)).toStrictEqual([pkg1Dir, pkg2Dir]) + expect(Object.keys(selectedProjectsGraph)).toStrictEqual([pkg1Dir, pkgKorDir, pkg2Dir]) } })