Skip to content

Commit b57cc51

Browse files
tellneschrisdickinson
authored andcommitted
os: remove trailing slash from os.tmpdir()
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: #715 PR-URL: #747 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
1 parent 1bcdf46 commit b57cc51

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

lib/os.js

+6-2
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,20 @@ exports.platform = function() {
2323
};
2424

2525
exports.tmpdir = function() {
26+
var path;
2627
if (isWindows) {
27-
return process.env.TEMP ||
28+
path = process.env.TEMP ||
2829
process.env.TMP ||
2930
(process.env.SystemRoot || process.env.windir) + '\\temp';
3031
} else {
31-
return process.env.TMPDIR ||
32+
path = process.env.TMPDIR ||
3233
process.env.TMP ||
3334
process.env.TEMP ||
3435
'/tmp';
3536
}
37+
if (/[\\\/]$/.test(path))
38+
path = path.slice(0, -1);
39+
return path;
3640
};
3741

3842
exports.tmpDir = exports.tmpdir;

test/parallel/test-os.js

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ if (process.platform === 'win32') {
1313
process.env.TMP = '';
1414
var expected = (process.env.SystemRoot || process.env.windir) + '\\temp';
1515
assert.equal(os.tmpdir(), expected);
16+
process.env.TEMP = '\\temp\\';
17+
assert.equal(os.tmpdir(), '\\temp');
1618
} else {
1719
assert.equal(os.tmpdir(), '/tmpdir');
1820
process.env.TMPDIR = '';
@@ -21,6 +23,8 @@ if (process.platform === 'win32') {
2123
assert.equal(os.tmpdir(), '/temp');
2224
process.env.TEMP = '';
2325
assert.equal(os.tmpdir(), '/tmp');
26+
process.env.TMPDIR = '/tmpdir/';
27+
assert.equal(os.tmpdir(), '/tmpdir');
2428
}
2529

2630
var endianness = os.endianness();

0 commit comments

Comments
 (0)