// Separate device+slash from tail
var result = splitDeviceRe.exec(filename),
device = (result[1] || '') + (result[2] || ''),
- tail = result[3] || '';
+ tail = result[3];
// Split the tail into dir, basename and extension
var result2 = splitTailRe.exec(tail),
dir = result2[1],
assertPath(pathString);
var allParts = win32SplitPath(pathString);
- if (!allParts || allParts.length !== 4) {
- throw new TypeError("Invalid path '" + pathString + "'");
- }
return {
root: allParts[0],
dir: allParts[0] + allParts[1].slice(0, -1),
assertPath(pathString);
var allParts = posixSplitPath(pathString);
- if (!allParts || allParts.length !== 4) {
- throw new TypeError("Invalid path '" + pathString + "'");
- }
- allParts[1] = allParts[1] || '';
- allParts[2] = allParts[2] || '';
- allParts[3] = allParts[3] || '';
-
return {
root: allParts[0],
dir: allParts[0] + allParts[1].slice(0, -1),
'\\foo\\C:',
'file',
'.\\file',
+ '',
// unc
'\\\\server\\share\\file_path',
'file',
'.\\file',
'./file',
- 'C:\\foo'
+ 'C:\\foo',
+ ''
];
var unixSpecialCaseFormatTests = [
message: /Path must be a string. Received 1/},
{method: 'parse', input: [],
message: /Path must be a string. Received undefined/},
- // {method: 'parse', input: [''],
- // message: /Invalid path/}, // omitted because it's hard to trigger!
{method: 'format', input: [null],
message: /Parameter 'pathObject' must be an object, not/},
{method: 'format', input: [''],
}
function checkParseFormat(path, paths) {
- paths.forEach(function(element, index, array) {
+ paths.forEach(function(element) {
var output = path.parse(element);
+ assert.strictEqual(typeof output.root, 'string');
+ assert.strictEqual(typeof output.dir, 'string');
+ assert.strictEqual(typeof output.base, 'string');
+ assert.strictEqual(typeof output.ext, 'string');
+ assert.strictEqual(typeof output.name, 'string');
assert.strictEqual(path.format(output), element);
assert.strictEqual(output.dir, output.dir ? path.dirname(element) : '');
assert.strictEqual(output.base, path.basename(element));