Skip to content

Commit

Permalink
fix(pluginutils): fix path normalisation for createFilter on absolute…
Browse files Browse the repository at this point in the history
… and * paths
  • Loading branch information
r0b1n committed Apr 12, 2022
1 parent 24424b2 commit 17dbb7e
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 3 deletions.
2 changes: 1 addition & 1 deletion packages/pluginutils/package.json
@@ -1,6 +1,6 @@
{
"name": "@rollup/pluginutils",
"version": "4.2.0",
"version": "4.3.0",
"publishConfig": {
"access": "public"
},
Expand Down
4 changes: 2 additions & 2 deletions packages/pluginutils/src/createFilter.ts
Expand Up @@ -9,7 +9,7 @@ import normalizePath from './normalizePath';

function getMatcherString(id: string, resolutionBase: string | false | null | undefined) {
if (resolutionBase === false || isAbsolute(id) || id.startsWith('*')) {
return id;
return normalizePath(id);
}

// resolve('') is valid and will default to process.cwd()
Expand All @@ -20,7 +20,7 @@ function getMatcherString(id: string, resolutionBase: string | false | null | un
// 1. the basePath has been normalized to use /
// 2. the incoming glob (id) matcher, also uses /
// otherwise Node will force backslash (\) on windows
return posix.join(basePath, id);
return posix.join(basePath, normalizePath(id));
}

const createFilter: CreateFilter = function createFilter(include?, exclude?, options?) {
Expand Down
28 changes: 28 additions & 0 deletions packages/pluginutils/test/createFilter.ts
Expand Up @@ -134,6 +134,34 @@ test('does not add current working directory when pattern is an absolute path',
t.falsy(filter(resolve('..', 'c')));
});

test('normalizes path when pattern is an absolute path', (t) => {
const filterPosix = createFilter([`${resolve('.')}/*`]);
const filterWin = createFilter([`${resolve('.')}\\*`]);

t.truthy(filterPosix(resolve('a')));
t.truthy(filterWin(resolve('a')));
});

test('normalizes path when pattern starts with *', (t) => {
const filterPosix = createFilter([`**/a`]);
const filterWin = createFilter([`**\\a`]);

t.truthy(filterPosix(resolve('a')));
t.truthy(filterWin(resolve('a')));
});

test('normalizes path when pattern has resolution base', (t) => {
const filterPosix = createFilter([`test/*`], [], {
resolve: __dirname
});
const filterWin = createFilter([`test\\*`], [], {
resolve: __dirname
});

t.truthy(filterPosix(resolve('test/a')));
t.truthy(filterWin(resolve('test/a')));
});

test('does not add current working directory when pattern starts with a glob', (t) => {
const filter = createFilter(['**/*']);
t.truthy(filter(resolve('a')));
Expand Down

0 comments on commit 17dbb7e

Please sign in to comment.