Skip to content

Commit

Permalink
test: refactor path parse test
Browse files Browse the repository at this point in the history
Use destructuring and arrow functions and make one test stricter.
Also inline the error object as there's only a sinlge error that can
currently be thrown in the path module.

PR-URL: #26912
Reviewed-By: Ben Noordhuis <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
  • Loading branch information
BridgeAR authored and targos committed Mar 29, 2019
1 parent a271968 commit 9f03e11
Showing 1 changed file with 23 additions and 30 deletions.
53 changes: 23 additions & 30 deletions test/parallel/test-path-parse-format.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ const winPaths = [
];

const winSpecialCaseParseTests = [
['/foo/bar', { root: '/' }],
['/foo/bar', { root: '/', dir: '/foo', base: 'bar', ext: '', name: 'bar' }],
];

const winSpecialCaseFormatTests = [
Expand Down Expand Up @@ -98,21 +98,16 @@ const unixSpecialCaseFormatTests = [
[{}, '']
];

const expectedMessage = common.expectsError({
code: 'ERR_INVALID_ARG_TYPE',
type: TypeError
}, 18);

const errors = [
{ method: 'parse', input: [null], message: expectedMessage },
{ method: 'parse', input: [{}], message: expectedMessage },
{ method: 'parse', input: [true], message: expectedMessage },
{ method: 'parse', input: [1], message: expectedMessage },
{ method: 'parse', input: [], message: expectedMessage },
{ method: 'format', input: [null], message: expectedMessage },
{ method: 'format', input: [''], message: expectedMessage },
{ method: 'format', input: [true], message: expectedMessage },
{ method: 'format', input: [1], message: expectedMessage },
{ method: 'parse', input: [null] },
{ method: 'parse', input: [{}] },
{ method: 'parse', input: [true] },
{ method: 'parse', input: [1] },
{ method: 'parse', input: [] },
{ method: 'format', input: [null] },
{ method: 'format', input: [''] },
{ method: 'format', input: [true] },
{ method: 'format', input: [1] },
];

checkParseFormat(path.win32, winPaths);
Expand Down Expand Up @@ -153,10 +148,10 @@ const trailingTests = [
]
];
const failures = [];
trailingTests.forEach(function(test) {
trailingTests.forEach((test) => {
const parse = test[0];
const os = parse === path.win32.parse ? 'win32' : 'posix';
test[1].forEach(function(test) {
test[1].forEach((test) => {
const actual = parse(test[0]);
const expected = test[1];
const message = `path.${os}.parse(${JSON.stringify(test[0])})\n expect=${
Expand All @@ -180,15 +175,18 @@ trailingTests.forEach(function(test) {
assert.strictEqual(failures.length, 0, failures.join(''));

function checkErrors(path) {
errors.forEach(function(errorCase) {
errors.forEach(({ method, input }) => {
assert.throws(() => {
path[errorCase.method].apply(path, errorCase.input);
}, errorCase.message);
path[method].apply(path, input);
}, {
code: 'ERR_INVALID_ARG_TYPE',
name: 'TypeError [ERR_INVALID_ARG_TYPE]'
});
});
}

function checkParseFormat(path, paths) {
paths.forEach(function([element, root]) {
paths.forEach(([element, root]) => {
const output = path.parse(element);
assert.strictEqual(typeof output.root, 'string');
assert.strictEqual(typeof output.dir, 'string');
Expand All @@ -205,19 +203,14 @@ function checkParseFormat(path, paths) {
}

function checkSpecialCaseParseFormat(path, testCases) {
testCases.forEach(function(testCase) {
const element = testCase[0];
const expect = testCase[1];
const output = path.parse(element);
Object.keys(expect).forEach(function(key) {
assert.strictEqual(output[key], expect[key]);
});
testCases.forEach(([element, expect]) => {
assert.deepStrictEqual(path.parse(element), expect);
});
}

function checkFormat(path, testCases) {
testCases.forEach(function(testCase) {
assert.strictEqual(path.format(testCase[0]), testCase[1]);
testCases.forEach(([element, expect]) => {
assert.strictEqual(path.format(element), expect);
});

[null, undefined, 1, true, false, 'string'].forEach((pathObject) => {
Expand Down

0 comments on commit 9f03e11

Please sign in to comment.