Skip to content

Commit 06f2283

Browse files
committed
Refactor test report handling
1 parent 4ebbcc5 commit 06f2283

File tree

1 file changed

+27
-26
lines changed

1 file changed

+27
-26
lines changed

test.js

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -27,44 +27,45 @@
2727

2828
log = log || console.log;
2929

30-
var total = TESTS.length, failures = 0,
31-
i, test, tokens, parser, result, dump, expected_dump;
30+
var total = TESTS.length, failures = 0;
3231

33-
for (i = 0; i < total; i++) {
34-
test = TESTS[i];
35-
tokens = parseCss.tokenize(test.css);
32+
for (let i = 0; i < total; i++) {
33+
const test = TESTS[i];
34+
const tokens = parseCss.tokenize(test.css);
35+
let result, error;
3636
try {
37-
parser = parseCss[typeof test.parser === 'string' ? test.parser : 'parseAStylesheet'];
37+
const parser = parseCss[typeof test.parser === 'string' ? test.parser : 'parseAStylesheet'];
3838
result = (typeof parser === 'function') ? parser(tokens) : tokens;
39-
if (test.expectedThrow) {
40-
log(`Test ${i} of ${total}: FAIL\nCSS: ${test.css}\nTokens: ${tokens.join(' ')}`);
41-
log(`Expected error not thrown: ` + ansidiff.words(test.expectedThrow.name, ''));
42-
failures++;
43-
continue;
44-
}
45-
dump = JSON.stringify(result, null, ' ');
46-
expected_dump = JSON.stringify(test.expected, null, ' ');
47-
if (dump == expected_dump) {
39+
if (test.expectedThrow) { throw null; }
40+
} catch (ex) {
41+
error = ex;
42+
}
43+
44+
if (test.expectedThrow) {
45+
if (error && error.name === test.expectedThrow.name) {
4846
log(`Test ${i} of ${total}: PASS`);
4947
} else {
5048
log(`Test ${i} of ${total}: FAIL\nCSS: ${test.css}\nTokens: ${tokens.join(' ')}`);
51-
log(ansidiff.lines(expected_dump, dump));
49+
log(`Expected error not thrown: ` + ansidiff.words(test.expectedThrow.name, error && error.name || ''));
5250
failures++;
5351
}
54-
} catch (ex) {
55-
if (test.expectedThrow) {
56-
if (ex.name === test.expectedThrow.name) {
57-
log(`Test ${i} of ${total}: PASS`);
58-
} else {
59-
log(`Test ${i} of ${total}: FAIL\nCSS: ${test.css}\nTokens: ${tokens.join(' ')}`);
60-
log(`Expected error not thrown: ` + ansidiff.words(test.expectedThrow.name, ex.name));
61-
failures++;
62-
}
52+
} else if (error) {
53+
log(`Test ${i} of ${total}: FAIL\nCSS: ${test.css}\nTokens: ${tokens.join(' ')}`);
54+
log(ansidiff.words(`Unexpected error: ${error}`, ``));
55+
failures++;
56+
} else if (test.expected) {
57+
const dump = JSON.stringify(result, null, ' ');
58+
const expected_dump = JSON.stringify(test.expected, null, ' ');
59+
if (dump == expected_dump) {
60+
log(`Test ${i} of ${total}: PASS`);
6361
} else {
6462
log(`Test ${i} of ${total}: FAIL\nCSS: ${test.css}\nTokens: ${tokens.join(' ')}`);
65-
log(ansidiff.words(`Unexpected error: ${ex}`, ``));
63+
log(ansidiff.lines(expected_dump, dump || ''));
6664
failures++;
6765
}
66+
} else {
67+
// no specified test, fallback to pass
68+
log(`Test ${i} of ${total}: PASS`);
6869
}
6970
}
7071

0 commit comments

Comments
 (0)