edit: See below comment for correct replication code
const path = require( 'path' );
const n = path.normalize( '../dir1/../../dir2' );
console.log( n );
Should output ../../dir2 but outputs dir2.
After some investigation it appears to have been introduced via commit b98e8d995efb426bbdee56ce503017bdcbbc6332 (path: fix normalize on directories with two dots)
cc/ @nodejs/platform-windows @targos
Can't reproduce on macOS, so assuming this is Windows specific.
Cant' reproduce on Windows either:
> path.normalize('../dir1/../../dir2')
'..\\..\\dir2'
This is strange, let me take another look to see what's happening
OK - my example was bad. Sorry about that, try this:
path.normalize( '../../../dir1/../../../dir2' );
Should output ../../../../../dir2 but outputs ../dir2
Okay, can reproduce that with v6.12.0 but not v6.11.5 (on macOS), which suggests https://github.com/nodejs/node/commit/b98e8d995efb426bbdee56ce503017bdcbbc6332 is indeed the cause of the issue.
▶▶▶ nvm i v6.11.5 ~/wrk/com/DANGER/node (v8.9.4-proposal)
v6.11.5 is already installed.
Now using node v6.11.5 (npm v3.10.10)
▶▶▶ node -p "path.normalize( '../../../dir1/../../../dir2' );" ~/wrk/com/DANGER/node 2s (v8.9.4-proposal)
../../../../../dir2
▶▶▶ nvm use 6.12.0 ~/wrk/com/DANGER/node (v8.9.4-proposal)
Now using node v6.12.0 (npm v3.10.10)
▶▶▶ node -p "path.normalize( '../../../dir1/../../../dir2' );" ~/wrk/com/DANGER/node 1s (v8.9.4-proposal)
../dir2
Cool, i would have submitted a PR myself but i was unsure of the correct behaviour that b98e8d9 was supposed to fix. Thanks for looking at this 👍