From dfa5b6a53d2b12301b0fbd93d496ab14bacfbf5c Mon Sep 17 00:00:00 2001 From: Steve Gravrock Date: Mon, 14 Mar 2022 18:47:23 -0700 Subject: [PATCH] Pretty-print [new String("")] as "[ '' ]" not "[]" --- lib/jasmine-core/jasmine.js | 2 +- spec/core/PrettyPrintSpec.js | 8 ++++++++ src/core/PrettyPrinter.js | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/jasmine-core/jasmine.js b/lib/jasmine-core/jasmine.js index acbe32c8..c71314df 100644 --- a/lib/jasmine-core/jasmine.js +++ b/lib/jasmine-core/jasmine.js @@ -7492,7 +7492,7 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) { this.emitScalar(''); } else if (value.jasmineToString) { this.emitScalar(value.jasmineToString(this.pp_)); - } else if (typeof value === 'string') { + } else if (j$.isString_(value)) { this.emitString(value); } else if (j$.isSpy(value)) { this.emitScalar('spy on ' + value.and.identity); diff --git a/spec/core/PrettyPrintSpec.js b/spec/core/PrettyPrintSpec.js index ed239191..3b74e0de 100644 --- a/spec/core/PrettyPrintSpec.js +++ b/spec/core/PrettyPrintSpec.js @@ -5,6 +5,14 @@ describe('PrettyPrinter', function() { expect(pp("som' string")).toEqual("'som' string'"); }); + it('stringifies empty string primitives and objects recognizably', function() { + const pp = jasmineUnderTest.makePrettyPrinter(); + expect(pp(new String(''))).toEqual(pp('')); + expect(pp(new String(''))).toEqual("''"); + expect(pp([new String('')])).toEqual(pp([''])); + expect(pp([new String('')])).toEqual("[ '' ]"); + }); + it('should stringify primitives properly', function() { var pp = jasmineUnderTest.makePrettyPrinter(); expect(pp(true)).toEqual('true'); diff --git a/src/core/PrettyPrinter.js b/src/core/PrettyPrinter.js index 5faa3bbf..1903b469 100644 --- a/src/core/PrettyPrinter.js +++ b/src/core/PrettyPrinter.js @@ -40,7 +40,7 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) { this.emitScalar(''); } else if (value.jasmineToString) { this.emitScalar(value.jasmineToString(this.pp_)); - } else if (typeof value === 'string') { + } else if (j$.isString_(value)) { this.emitString(value); } else if (j$.isSpy(value)) { this.emitScalar('spy on ' + value.and.identity);