diff --git a/lib/os.js b/lib/os.js index cd4eb1c12f49bc..4426612285e299 100644 --- a/lib/os.js +++ b/lib/os.js @@ -22,6 +22,9 @@ exports.platform = function() { return process.platform; }; +const trailingSlashRe = isWindows ? /[^:]\\$/ + : /.\/$/; + exports.tmpdir = function() { var path; if (isWindows) { @@ -34,7 +37,7 @@ exports.tmpdir = function() { process.env.TEMP || '/tmp'; } - if (/[\\\/]$/.test(path)) + if (trailingSlashRe.test(path)) path = path.slice(0, -1); return path; }; diff --git a/test/parallel/test-os.js b/test/parallel/test-os.js index b5f39973a6f71f..dd1a1ae339b385 100644 --- a/test/parallel/test-os.js +++ b/test/parallel/test-os.js @@ -15,6 +15,12 @@ if (process.platform === 'win32') { assert.equal(os.tmpdir(), expected); process.env.TEMP = '\\temp\\'; assert.equal(os.tmpdir(), '\\temp'); + process.env.TEMP = '\\tmpdir/'; + assert.equal(os.tmpdir(), '\\tmpdir/'); + process.env.TEMP = '\\'; + assert.equal(os.tmpdir(), '\\'); + process.env.TEMP = 'C:\\'; + assert.equal(os.tmpdir(), 'C:\\'); } else { assert.equal(os.tmpdir(), '/tmpdir'); process.env.TMPDIR = ''; @@ -25,6 +31,10 @@ if (process.platform === 'win32') { assert.equal(os.tmpdir(), '/tmp'); process.env.TMPDIR = '/tmpdir/'; assert.equal(os.tmpdir(), '/tmpdir'); + process.env.TMPDIR = '/tmpdir\\'; + assert.equal(os.tmpdir(), '/tmpdir\\'); + process.env.TMPDIR = '/'; + assert.equal(os.tmpdir(), '/'); } var endianness = os.endianness();