node/test/parallel/test-os.js
cjihrig 76937051f8 os: refine tmpdir() trailing slash stripping
os.tmpdir() began stripping trailing slashes in
b57cc51d8d. This causes problems if
the temp directory is simply '/'. It also stripped trailing
slashes without first determining which slash type is used by
the current operating system. This commit only strips trailing
slashes if another character precedes the slash. On Windows, it
checks for ':', as not to strip slashes from something like 'C:\'.
It also only strips slashes that are appropriate for the user's
operating system.

Fixes: https://github.com/iojs/io.js/issues/1669
PR-URL: https://github.com/iojs/io.js/pull/1673
Reviewed-By: Rod Vagg <rod@vagg.org>
Reviewed-By: Christian Tellnes <christian@tellnes.no>
2015-05-13 10:16:44 -04:00

102 lines
2.9 KiB
JavaScript

var common = require('../common');
var assert = require('assert');
var os = require('os');
process.env.TMPDIR = '/tmpdir';
process.env.TMP = '/tmp';
process.env.TEMP = '/temp';
if (process.platform === 'win32') {
assert.equal(os.tmpdir(), '/temp');
process.env.TEMP = '';
assert.equal(os.tmpdir(), '/tmp');
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');
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 = '';
assert.equal(os.tmpdir(), '/tmp');
process.env.TMP = '';
assert.equal(os.tmpdir(), '/temp');
process.env.TEMP = '';
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();
console.log('endianness = %s', endianness);
assert.ok(/[BL]E/.test(endianness));
var hostname = os.hostname();
console.log('hostname = %s', hostname);
assert.ok(hostname.length > 0);
var uptime = os.uptime();
console.log('uptime = %d', uptime);
assert.ok(uptime > 0);
var cpus = os.cpus();
console.log('cpus = ', cpus);
assert.ok(cpus.length > 0);
var type = os.type();
console.log('type = ', type);
assert.ok(type.length > 0);
var release = os.release();
console.log('release = ', release);
assert.ok(release.length > 0);
var platform = os.platform();
console.log('platform = ', platform);
assert.ok(platform.length > 0);
var arch = os.arch();
console.log('arch = ', arch);
assert.ok(arch.length > 0);
if (process.platform != 'sunos') {
// not implemeneted yet
assert.ok(os.loadavg().length > 0);
assert.ok(os.freemem() > 0);
assert.ok(os.totalmem() > 0);
}
var interfaces = os.networkInterfaces();
console.error(interfaces);
switch (platform) {
case 'linux':
var filter = function(e) { return e.address == '127.0.0.1'; };
var actual = interfaces.lo.filter(filter);
var expected = [{ address: '127.0.0.1', netmask: '255.0.0.0',
mac: '00:00:00:00:00:00', family: 'IPv4',
internal: true }];
assert.deepEqual(actual, expected);
break;
case 'win32':
var filter = function(e) { return e.address == '127.0.0.1'; };
var actual = interfaces['Loopback Pseudo-Interface 1'].filter(filter);
var expected = [{ address: '127.0.0.1', netmask: '255.0.0.0',
mac: '00:00:00:00:00:00', family: 'IPv4',
internal: true }];
assert.deepEqual(actual, expected);
break;
}
var EOL = os.EOL;
assert.ok(EOL.length > 0);