Skip to content

Commit b16ecb0

Browse files
committed
Test errorName, errorMessage, and errorStack. Fix a few related bugs.
1 parent 0c827d7 commit b16ecb0

File tree

7 files changed

+36
-10
lines changed

7 files changed

+36
-10
lines changed

lib/runners/console.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@ var errorFn = function $ERROR(err) {
2020
}.toString()
2121

2222
var batchDoneFn = function $DONE(err) {
23-
if(err) { if(typeof err === "object" && err !== null && "name" in err)
24-
$LOG("test262/error " + err.name + ": " + err.message)
23+
if(err) {
24+
if(typeof err === "object" && err !== null && "name" in err) {
25+
if("stack" in err) $LOG("test262/error " + err.stack)
26+
else $LOG("test262/error " + err.name + ": " + err.message)
27+
}
2528
else $LOG("test262/error Error: " + err);
2629
}
2730
$LOG('test262/done');

lib/runners/node-ip.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ NodeRunner.prototype.execute = function(test, cb) {
4040
result.errorMessage = error.message;
4141
result.errorStack = error.stack
4242
} else {
43-
result.errorName = error;
43+
result.errorName = "Error";
44+
result.errorMessage = error;
4445
}
4546
}
4647

test/collateral/thrownError.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*---
2+
description: Fails by throwing an error
3+
---*/
4+
5+
function foo() {
6+
throw new Error('failure message');
7+
}
8+
9+
foo();

test/expected.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ var all = [
77
{ file: 'test/collateral/bothStrict.js', strictMode: true, pass: true },
88
{ file: 'test/collateral/strict.js', strictMode: true, pass: true },
99
{ file: 'test/collateral/noStrict.js', strictMode: false, pass: true },
10-
{ file: 'test/collateral/error.js', strictMode: false, pass: false },
11-
{ file: 'test/collateral/error.js', strictMode: true, pass: false },
10+
{ file: 'test/collateral/error.js', strictMode: false, pass: false, errorMessage: 'failure message', errorName: 'Error' },
11+
{ file: 'test/collateral/error.js', strictMode: true, pass: false, errorMessage: 'failure message', errorName: 'Error' },
12+
{ file: 'test/collateral/thrownError.js', strictMode: false, pass: false, errorMessage: 'failure message', errorName: 'Error', topOfStack: "foo" },
13+
{ file: 'test/collateral/thrownError.js', strictMode: true, pass: false, errorMessage: 'failure message', errorName: 'Error', topOfStack: "foo" },
1214
]
1315

1416
var seen = {};

test/nodeConfig.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ var t262 = require('../');
22
t262.useConfig({
33
batchConfig: {
44
createEnv: 'require("vm").createContext()',
5-
runBatched: 'env.process = process;require("vm").runInContext(test, env);'
5+
runBatched: 'env.process = process;env.console=console;require("vm").runInContext(test, env);'
66
}
77
})

test/test.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,21 @@ runners.forEach(function(runner) {
1919
utils.testResultsCorrect(runner, expected.noTestStrict);
2020
utils.testResultsCorrect(runner + ' --testStrict', expected);
2121
test("compiling failures: " + runner + " -C failures -o testOutput", function(t) {
22-
t.plan(1);
22+
t.plan(2);
2323
utils.run(runner + " -C failures -o testOutput", function(res, stderr) {
2424
t.ok(fs.existsSync('./testOutput/error.js'), 'testOutput/error.js exists');
25+
t.ok(fs.existsSync('./testOutput/thrownError.js'), 'testOutput/thrownError.js exists');
2526
rimraf.sync('./testOutput');
2627
});
2728
});
2829

2930
test("compiling failures: " + runner + " -C failures -o testOutput --testStrict", function(t) {
30-
t.plan(2);
31+
t.plan(4);
3132
utils.run(runner + " -C failures -o testOutput --testStrict", function(res, stderr) {
3233
t.ok(fs.existsSync('./testOutput/error.js'), 'testOutput/error.js exists');
3334
t.ok(fs.existsSync('./testOutput/error-0.js'), 'testOutput/error-0.js exists');
35+
t.ok(fs.existsSync('./testOutput/thrownError.js'), 'testOutput/thrownError.js exists');
36+
t.ok(fs.existsSync('./testOutput/thrownError-0.js'), 'testOutput/thrownError-0.js exists');
3437
rimraf.sync('./testOutput');
3538
});
3639
});
@@ -86,4 +89,3 @@ test('compile flag throws without output directory', function(t) {
8689
rimraf.sync('./testOutput');
8790
});
8891
});
89-

test/utils.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,17 @@ exports.testResultsCorrect = function testResultsCorrect(args, expectedResults)
3737
t.equal(res.length, expectedResults.length, expectedResults.length + " tests run");
3838
expectedResults.forEach(function(exp) {
3939
var act = resultsForTest(res, exp);
40-
t.equal(exp.pass, act.pass, expectedString(exp));
40+
t.equal(act.pass, exp.pass, expectedString(exp));
4141

42+
if(!exp.pass) {
43+
// validate error message and such
44+
t.equal(act.errorName, exp.errorName, "Error name is " + exp.errorName);
45+
t.equal(act.errorMessage, exp.errorMessage, "Error message is " + exp.errorMessage);
46+
47+
if(exp.topOfStack) {
48+
t.ok(act.errorStack.indexOf(exp.topOfStack) > -1, "Stack contains " + exp.topOfStack);
49+
}
50+
}
4251
});
4352
t.end();
4453
});

0 commit comments

Comments
 (0)