diff --git a/__tests__/package-hoister.js b/__tests__/package-hoister.js new file mode 100644 index 0000000000..394f42a10e --- /dev/null +++ b/__tests__/package-hoister.js @@ -0,0 +1,34 @@ +/* @flow */ + +import path from 'path'; +import PackageHoister, {HoistManifest} from '../src/package-hoister.js'; + +const mockConfig = { + cwd: __dirname, + getFolder(): string { + return 'node_modules'; + }, +}; + +test('Produces valid destination paths for scoped modules', () => { + const expected = path.join(__dirname, './node_modules/@scoped/dep'); + const scopedPackageName = '@scoped/dep'; + + const key = scopedPackageName; + const parts = [scopedPackageName]; + const pkg = {_reference: {}}; + const loc = null; + const info = new HoistManifest(key, parts, pkg, loc); + + const tree = new Map([ + ['@scoped/dep', info], + ]); + + const packageHoister = new PackageHoister(mockConfig); + packageHoister.tree = tree; + + const result = packageHoister.init(); + const [actual] = result[0]; + + expect(actual).toEqual(expected); +}); diff --git a/src/package-hoister.js b/src/package-hoister.js index ab1c3630f9..c09af00b9c 100644 --- a/src/package-hoister.js +++ b/src/package-hoister.js @@ -369,7 +369,7 @@ export default class PackageHoister { parts.unshift(this.config.cwd); } - const loc = parts.join(path.sep); + const loc = path.join(...parts); flatTree.push([loc, info]); } diff --git a/src/util/fs.js b/src/util/fs.js index 27e30d0321..b5e9d25ed8 100644 --- a/src/util/fs.js +++ b/src/util/fs.js @@ -117,7 +117,7 @@ async function buildActionsForCopy( const {src, dest} = data; const onFresh = data.onFresh || noop; const onDone = data.onDone || noop; - files.add(path.normalize(dest)); + files.add(dest); if (events.ignoreBasenames.indexOf(path.basename(src)) >= 0) { // ignored file @@ -191,7 +191,7 @@ async function buildActionsForCopy( } else if (srcStat.isDirectory()) { await mkdirp(dest); - const destParts = path.normalize(dest).split(path.sep); + const destParts = dest.split(path.sep); while (destParts.length) { files.add(destParts.join(path.sep)); destParts.pop();