assert: indicate if exception message is generated
authorGlen Mailer <glenjamin@gmail.com>
Wed, 11 Sep 2013 16:18:25 +0000 (17:18 +0100)
committerTimothy J Fontaine <tjfontaine@gmail.com>
Fri, 11 Oct 2013 17:15:03 +0000 (10:15 -0700)
AssertionError.generatedMessage is now true when
AssertionError.message was generated from expected and actual

Fixes #5836, #6206

lib/assert.js
test/simple/test-assert.js

index 1202f4b..5e9f78f 100644 (file)
@@ -42,7 +42,13 @@ assert.AssertionError = function AssertionError(options) {
   this.actual = options.actual;
   this.expected = options.expected;
   this.operator = options.operator;
-  this.message = options.message || getMessage(this);
+  if (options.message) {
+    this.message = options.message;
+    this.generatedMessage = false;
+  } else {
+    this.message = getMessage(this);
+    this.generatedMessage = true;
+  }
   var stackStartFunction = options.stackStartFunction || fail;
   Error.captureStackTrace(this, stackStartFunction);
 };
index 2885858..91c8ef1 100644 (file)
@@ -260,6 +260,7 @@ function testAssertionMessage(actual, expected) {
   } catch (e) {
     assert.equal(e.toString(),
         ['AssertionError:', expected, '==', '""'].join(' '));
+    assert.ok(e.generatedMessage, "Message not marked as generated");
   }
 }
 testAssertionMessage(undefined, '"undefined"');
@@ -299,10 +300,13 @@ try {
   assert.equal(1, 2);
 } catch (e) {
   assert.equal(e.toString().split('\n')[0], 'AssertionError: 1 == 2')
+  assert.ok(e.generatedMessage, 'Message not marked as generated');
 }
 
 try {
   assert.equal(1, 2, 'oh no');
 } catch (e) {
   assert.equal(e.toString().split('\n')[0], 'AssertionError: oh no')
+  assert.equal(e.generatedMessage, false,
+              'Message incorrectly marked as generated');
 }