Steve Gravrock
e2e2275d41
Removed obsolete and unused utility fns
2022-06-11 11:17:16 -07:00
Steve Gravrock
751cf6ab5b
Converted DiffBuilder, ObjectPath, MismatchTree, and SinglePrettyPrintRun to ES6 classes
2022-05-14 11:15:08 -07:00
Steve Gravrock
2fd76c954c
Replaced var with let and const in PrettyPrinter, DiffBuilder, and friends
2022-05-14 09:42:07 -07:00
Steve Gravrock
bb4d18f959
Include property getter values in pretty-printed objects
...
We already call getters when comparing objects for equality and generating
diffs, so it should be safe to do it here too.
See #1966 .
2022-05-12 17:14:13 -07:00
Steve Gravrock
270344bd38
Include symbol keys when pretty-printing objects
...
* Fixes #1966
2022-05-07 10:05:18 -07:00
Steve Gravrock
dfa5b6a53d
Pretty-print [new String("")] as "[ '' ]" not "[]"
2022-03-14 18:47:23 -07:00
Steve Gravrock
873d1c2945
Use custom object formatters for any part of a diff, not just leaf nodes
2020-02-10 17:26:00 -08:00
Steve Gravrock
25816a6e77
Added support for custom object formatters
...
Custom object formatters allow users to customize how an object is
stringified in matcher failure messages. This can already be done by
adding a `jasmineToString` method to the objects in question. But
it's not always desirable or possible to do that, particularly when
objects of a given "type" do not inherit from a specific prototype.
For instance, suppose a web service returns a list of foos that are
deserialized from JSON, e.g.:
{ fooId: 42, /* more properties */ }
The only way to define `jasmineToString` on those is by writing code to
add it to each instance at runtime. But a custom object formatter can
recognize that the object it's looking at is a foo and format it
accordingly:
jasmine.addCustomObjectFormatter(function(obj) {
if (typeof obj.fooId !== 'number') {
return undefined;
}
return '[Foo with ID ' + obj.fooId + ']';
});
Unlike `jasmineToString`, custom object formatters are scoped to a
particular spec or suite and don't require any changes to the code
under test.
2020-02-10 17:26:00 -08:00
Steve Gravrock
1f23f1e4d2
Inject a per-runable pretty printer into MatchersUtil
...
This will allow us to add support for custom object formatters, which
will be a per-runable resource like custom matchers, by injecting them
into the pretty-printer.
2020-02-10 17:26:00 -08:00
johnjbarton
6324fda065
PrettyPrinter survives if objects throw in toString
2019-06-27 10:35:59 -07:00
Gregg Van Hove
b4cbe9850f
add prettier and eslint
2019-05-21 18:23:48 -07:00
Gregg Van Hove
cf2c5c9acc
Merge branch 'enelson/src-cleanup-2' of https://github.com/elliot-nelson/jasmine into elliot-nelson-enelson/src-cleanup-2
...
- Merges #1708 from @elliot-nelson
2019-05-21 17:45:46 -07:00
Gregg Van Hove
df6a71e37d
Merge branch 'spy-to-string' of https://github.com/johnjbarton/jasmine into johnjbarton-spy-to-string
...
- Merges #1712 from @johnjbarton
2019-05-20 17:22:05 -07:00
johnjbarton
d1adbdc72b
fix(PrettyPrint): jasmine.createSpyObj('obj', ['toString']);
...
The PrettyPrint handler for scalars uses toString() but if that method
has been spyed on, then the stringify fails with
TypeError: Cannot read property 'length' of undefined.
By hanlding this case earlier in format() we avoid the error.
Add unit test covering this case.
2019-05-20 09:33:47 -07:00
Elliot Nelson
9f704b6f3a
PrettyPrinter handles objects with invalid toString implementations
2019-05-20 09:01:10 -04:00
Elliot Nelson
1e855aa9b8
Cleanup: whitespace
2019-05-18 08:10:11 -04:00
Gregg Van Hove
37dfe50d99
Stop treating objects with a nodeType as if they are DOM Nodes
...
- Fixes #1638
2018-12-17 17:10:53 -08:00
Sampo Kivistö
473f5cd359
Re-use attr variable
2018-11-04 10:44:54 +02:00
Sampo Kivistö
a81e9626df
Fixes issue where PhantomJS 2 and IE 10 - 11 crashed when reporting SVG element equality
2018-11-04 10:31:33 +02:00
Gregg Van Hove
ced2b114e4
Better detection of DOM Nodes for equality
...
- Also use JSDom if a real one isn't present to get some more coverage
there
- Fixes #1172
2018-05-04 18:01:08 -07:00
Gregg Van Hove
274011ed03
Merge branch 'master' into 3.0-features
2018-02-02 16:33:38 -08:00
Volonterio Riccardo
486a64658f
Added complete support for Set also for IE11.
...
Fixes 1355
2018-01-12 12:18:35 +01:00
Gregg Van Hove
1dfdc89ba9
Merge branch 'ie11-maps-support' of https://github.com/Volox/jasmine into Volox-ie11-maps-support
...
- Merges #1477 from @Volox
- Fixes #1472
2018-01-11 17:50:56 -08:00
Volonterio Riccardo
085a1f8a16
Added complete support for Map also for IE11.
...
Fixes 1472
2018-01-11 18:13:24 +01:00
Steve Gravrock
cf2f922e30
Merge branch 'master' into 3.0-features
2018-01-10 15:28:55 -08:00
Steve Gravrock
ef9f82a17d
Merge branch 'master' into 3.0-features
2017-12-18 09:48:17 -08:00
Steve Gravrock
d3a3cf1ff3
Collapsed StringPrettyPrinter into PrettyPrinter
...
We never really took advantage of the potential extensibility that the
split provided, and the boundary between the two was getting muddied
over time.
2017-12-18 09:43:25 -08:00
Steve Gravrock
c0d0513199
Stop serializing objects after hitting jasmine.MAX_PRETTY_PRINT_CHARS
2017-12-15 13:23:59 -08:00
Steve Gravrock
86a38fceb9
Truncate pretty printer output that is more than j$.MAX_PRETTY_PRINT_CHARS long
2017-12-13 08:09:22 -08:00
Steve Gravrock
ac5d8708b9
More informative pretty-printing of DOM elements
...
[Finishes ##153562618]
2017-12-11 08:25:13 -08:00
Gregg Van Hove
21655a82c9
Use prototype for spy strategy for better memory management
...
- Also convert `identity` to a property from a method
2017-11-30 17:30:20 -08:00
ksvitkovsky
4fc177d5ae
Better pretty printing for typed arrays
2017-08-04 09:33:05 -07:00
Gregg Van Hove
22e9d6df20
PrettyPrinter allows an object to have a toString that isn't a function
...
- Fixes #1389
2017-07-17 22:01:06 -07:00
Gregg Van Hove
4c491b2dc0
Pretty printer will now use MAX_PRETTY_PRINT_ARRAY_LENGTH for objects
...
- Fixes #1291
- Fixes #1360
2017-06-14 13:36:35 -07:00
rmehlinger
5ee03f02ed
Add ES6 map support to Jasmine
2017-05-01 00:12:48 -07:00
Ben Christel
d5e6bf47ed
Make toEqual matcher report the difference between objects
...
- Mismatches deep within object/array structures are pinpointed with a JsonPath-like syntax.
2016-11-14 22:08:34 -08:00
Gregg Van Hove
05097b3e42
Merge branch 'set-equality' of https://github.com/alur/jasmine into alur-set-equality
...
- Merges #1067 from @alur
2016-09-27 13:37:57 -07:00
Fulvio Valente
2710bdfc5e
Correctly pretty print objects from other contexts (e.g. iframes) and which do not override toString
...
Fixes #1087
2016-04-11 18:51:04 +01:00
Erik Welander
927cc011d6
Added support for ES6 sets to toContain and toEqual.
2016-03-04 02:09:59 -08:00
Paul Jolly
d0ad9b98cd
Use toString for objects if it has been overriden
2015-09-25 20:19:48 +01:00
Greg Cobb and Gregg Van Hove
d5dfbc98c3
Updates pretty printer to include array properties
...
[fixes #766 ][finishes #87644044 ]
2015-02-04 11:05:03 -08:00
slackersoft
7570bc422b
Display the name of the constructor when pretty printing objects
...
Fixes #598 [finishes #81228592 ]
2014-12-16 12:56:04 -08:00
mikemoraned
33e4f5efbe
Allow users to set the maximum length of array that the pretty-printer
...
will print out.
Currently, jasmine's pretty printer will iterate over an entire array,
formatting every element recursively. For very large arrays, this can
crash the page, or cause a 'slow script' warning.
This commit exposes a 'MAX_PRETTY_PRINT_ARRAY_LENGTH' option. If an
array larger than this is encountered, recursion will stop and the
array length will be printed instead e.g. "Array[20000000]".
The 'MAX_PRETTY_PRINT_ARRAY_LENGTH' option defaults to 100. This is
length of array will not kill your browser, but will allow you
to see big arrays, if you can stomach the output.
2014-03-12 12:16:01 -07:00
Greg Cobb and Luan Santos
21de44a204
Remove space between key and colon when pretty printing objects
...
[#4005255 ]
2014-03-12 11:47:47 -07:00
Greg Cobb and Luan Santos
c9e37a2a1c
Refactor prettyPrinter to work with immutable objects
...
[#50766813 ][#266 ]
2014-03-12 11:41:18 -07:00
Robin Böhm
31d71ac22f
add single quote check to jshint and fix src files for that
...
[fixes #522 ]
2014-02-24 16:28:16 -08:00
Sheel Choksi
7cf899a4ea
Special case printing -0
...
Use the 1/x trick to determine if a value is -0 and special case the
printing of it.
[closes #496 ]
2014-02-09 14:14:33 -08:00
slackersoft
15aa3ecb5d
Better support in pretty printer when an object has null prototype
...
- Fixes #500
2014-01-17 19:56:43 -10:00
Davis W. Frank
9e149d1e0f
Move node dev deps forward, add .jshintrc to support latest grunt-contrib-jshint and Code Climate score
2013-10-25 12:23:57 -07:00
Sheel Choksi
0f42f2709a
Update PrettyPrinter to better check for an Object
...
Includes test case to fix FF as suggested by @ondras
Fixes #409
2013-08-03 11:49:20 -07:00