os: remove trailing slash from os.tmpdir()
authorChristian Tellnes <christian@tellnes.no>
Fri, 6 Feb 2015 22:27:22 +0000 (23:27 +0100)
committerChris Dickinson <christopher.s.dickinson@gmail.com>
Tue, 28 Apr 2015 21:38:14 +0000 (14:38 -0700)
This commit makes `os.tmpdir()` behave consistently on all platforms. It
changes `os.tmpdir()` to always return a path without trailing slash.

Semver: major
Fixes: https://github.com/iojs/io.js/issues/715
PR-URL: https://github.com/iojs/io.js/pull/747
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
lib/os.js
test/parallel/test-os.js

index 75a863e..cd4eb1c 100644 (file)
--- a/lib/os.js
+++ b/lib/os.js
@@ -23,16 +23,20 @@ exports.platform = function() {
 };
 
 exports.tmpdir = function() {
+  var path;
   if (isWindows) {
-    return process.env.TEMP ||
+    path = process.env.TEMP ||
            process.env.TMP ||
            (process.env.SystemRoot || process.env.windir) + '\\temp';
   } else {
-    return process.env.TMPDIR ||
+    path = process.env.TMPDIR ||
            process.env.TMP ||
            process.env.TEMP ||
            '/tmp';
   }
+  if (/[\\\/]$/.test(path))
+    path = path.slice(0, -1);
+  return path;
 };
 
 exports.tmpDir = exports.tmpdir;
index ae57353..b5f3997 100644 (file)
@@ -13,6 +13,8 @@ if (process.platform === 'win32') {
   process.env.TMP = '';
   var expected = (process.env.SystemRoot || process.env.windir) + '\\temp';
   assert.equal(os.tmpdir(), expected);
+  process.env.TEMP = '\\temp\\';
+  assert.equal(os.tmpdir(), '\\temp');
 } else {
   assert.equal(os.tmpdir(), '/tmpdir');
   process.env.TMPDIR = '';
@@ -21,6 +23,8 @@ if (process.platform === 'win32') {
   assert.equal(os.tmpdir(), '/temp');
   process.env.TEMP = '';
   assert.equal(os.tmpdir(), '/tmp');
+  process.env.TMPDIR = '/tmpdir/';
+  assert.equal(os.tmpdir(), '/tmpdir');
 }
 
 var endianness = os.endianness();