Commit Graph

2150 Commits

Author SHA1 Message Date
Steve Gravrock
13b967b59c Merge branch 'feat/to-have-been-called-once-with' of https://github.com/Maximaximum/jasmine into pr-merge
* Merges #1801 from @Maximaximum
* Fixes #1717
2020-06-26 15:05:04 -07:00
Steve Gravrock
0253d4fb71 Merge branch 'update-throwError-to-throw-objects' of https://github.com/terencehonles/jasmine
* Merges #1822 from @terencehonles
2020-06-26 15:00:32 -07:00
Steve Gravrock
44875673c1 Merge branch '1821-tests' of https://github.com/dasch-swiss/jasmine
* Merges #1829 from @tobiasschweizer
* Fixes #1821
2020-06-26 14:56:08 -07:00
Terence D. Honles
3943cc2ddb allow spy throwError to throw an Object
When using the following code to simulate a node error:

  spyOn(process, 'kill').and.throwError({code: 'ESRCH'})

The object passed in will be converted to a string by the Error
constructor and result in '[object Object]' which is not very useful.
This PR changes the ``throwError`` spy strategy to only convert
strings into an Error object, but any other objects which are passed
in will be thrown as is. This means the spy strategy can never emulate
throwing a bare string ``throw 'error'``, but this would be a backward
incompatible change.
2020-06-25 18:12:00 -07:00
Steve Gravrock
f4753ac0a4 Fixed syntax errors in IE 10 2020-06-25 07:36:06 -07:00
Tobias Schweizer
ce2161ca32 Add additional test for equals matcher 2020-06-25 09:41:39 +02:00
Steve Gravrock
17eda7a2de Depend on head of jasmine-browser
This should fix CI, and can be reverted once a new version of
jasmine-browser that contains 33bd0fcb0ba990102dcd846e673d07b11041dd44
has been published.
2020-06-24 17:50:16 -07:00
Steve Gravrock
7119720fc7 Merge branch 'dp/missing-punctation' of https://github.com/dirkpuge/jasmine
* Merges #1828 from @dirkpuge
2020-06-23 17:02:47 -07:00
Steve Gravrock
f4e192a428 Merge branch 'expose-property' of https://github.com/johnjbarton/jasmine
* Merges #1820 from @johnjbarton
2020-06-23 16:58:54 -07:00
Dirk Puge
45ad7fd13c Added missing periods 2020-06-21 11:48:05 -04:00
johnjbarton
0cb304131f fix(env): expose setSpec/SuiteProperty on interface 2020-05-26 14:50:01 -07:00
Steve Gravrock
8a731e17a7 Improved jsdocs for user-specified spec/suite properties 2020-05-05 17:58:16 -07:00
Steve Gravrock
7416c176a7 Merge branch 'properties' of https://github.com/johnjbarton/jasmine
* Merges #1763 from @johnjbarton
2020-05-05 17:45:43 -07:00
Maksym Kobieliev
0f6ebaa784 Merge branch 'master' into feat/to-have-been-called-once-with 2020-04-14 22:08:13 +03:00
Maksym Kobieliev
f14f620e15 Merge pull request #1 from jasmine/master
Merge master
2020-04-14 22:07:34 +03:00
Maksym Kobieliev
e94e6c5b75 Fix failing unit test 2020-04-14 22:01:56 +03:00
johnjbarton
f90d9943fe feat(env): setSpecProperty/setSuiteProperty(key, value) to attach data to tests
Use setSpecProperty to attach key/value pairs to spec results that can be
picked up in specialized jasmine reporters.  Example use-cases
include:
  * Tagging specs with URLs or string-tokens referencing test-plan docs.
  * Recording performance information for blocks of JS.
Similarly setSuiteProperty attaches key/value pairs to suite results
2020-04-14 11:27:14 -07:00
Steve Gravrock
8991b1bba3 Fixed toHaveSize matcher on IE 10 & 11 2020-04-12 21:22:14 -07:00
Steve Gravrock
78c3a007ad Fixed test failure in Firefox 74 2020-04-11 12:08:49 -07:00
Steve Gravrock
30b31096b8 Merge branch 'master' of https://github.com/chivesrs/jasmine
* Merges #1802 from @chivesrs
2020-04-11 11:32:08 -07:00
Steve Gravrock
2b318a6154 Merge branch 'master' of https://github.com/parloti/jasmine
* Merges #1807 from @parloti
* Fixes #1775
* Prevents undesired reloads when karma-jasmine-html-reporter is used
2020-04-11 11:30:25 -07:00
Steve Gravrock
41293714fd Merge branch 'tobepending' of https://github.com/DCtheTall/jasmine
* Merges #1808 from @DCtheTall
* Fixes #1803
2020-04-11 11:17:49 -07:00
DCtheTall
08779f2657 add missing trailing newline 2020-04-09 15:20:23 -04:00
DCtheTall
76a99aef86 add missing trailing newline 2020-04-09 15:19:47 -04:00
DCtheTall
6b213a958d Add expectAsync().toBePending() 2020-04-09 15:13:33 -04:00
Alex Parloti
9a7dfb15d2 fix #26
fix #26
Returning false will cause 'zone.js' to invoke e.preventDefault(), preventing the page from reloading.
2020-04-02 21:01:56 +02:00
Maksym Kobieliev
ec9904bf52 Fix test 2020-04-02 21:38:54 +03:00
Maksym Kobieliev
bcc28d7063 Output a diff if there was only one call, but with wrong parameters 2020-04-02 21:31:17 +03:00
Gregg Van Hove
79d55216fc Use internal type checks instead of instanceof to support browsers that don't include the types 2020-03-18 08:57:44 -07:00
Gregg Van Hove
7e940542f8 Merge branch 'wokier-toHaveSize'
- Merges #1796 from @wokier
2020-03-18 08:13:50 -07:00
Gregg Van Hove
ec3ebcb7bb Clean up toHaveSize 2020-03-18 08:13:21 -07:00
Francois Wauquier
c521b4d47c toHaveSize 2020-03-18 08:13:10 -07:00
Chives
66fe69a149 Add test for resolveTo/rejectWith with empty parameters 2020-03-16 03:15:58 -04:00
Maksym Kobieliev
e13fd13529 Add a toHaveBeenCalledOnceWith matcher 2020-03-13 20:41:24 +02:00
Gregg Van Hove
f1eac6fb04 Merge branch 'chivesrs-master'
- Merges #1797 from @chivesrs
2020-03-12 12:28:08 -07:00
Chives
6440ca434d Add trailing newlines to example code 2020-02-29 04:30:03 -05:00
Steve Gravrock
93ad31e0af Correctly report spec and suite duration
Previously, suite duration was always reported as 0 and spec duration
was always reported as null. Suites always used a no-op timer, and
specs set their result.duration after the result had already been sent
to reporters.

Fixes #1676.
2020-02-22 16:53:36 -08:00
Steve Gravrock
a6a9550d1e Fixed 'since' versions for MatchersUtil 2020-02-13 10:52:54 -08:00
Steve Gravrock
6c68715554 Removed unnecessary uses of new 2020-02-13 09:26:33 -08:00
Steve Gravrock
258d55469e Merge branch 'cof-merge-candidate'
* Simplifies the matcher interface
* Adds support for custom object formatters
2020-02-12 15:16:28 -08:00
Steve Gravrock
5096d9af4e Don't construct unnecessarily asymmetricEqualityTesterArgCompatShims
This speeds up MatchersUtil#equals by about 6-7x.
2020-02-12 14:23:03 -08:00
Steve Gravrock
3be797c8d8 Fixed diffs involving jasmine.objectContaining 2020-02-12 14:22:51 -08:00
Gregg Van Hove
d10e8c2ddf Merge branch 'enelson/callThrough-constructor' of https://github.com/elliot-nelson/jasmine into elliot-nelson-enelson/callThrough-constructor
- Merges #1782 from @enelson
- Fixes #1760
2020-02-12 11:39:29 -08:00
Steve Gravrock
c2ada1af95 Merge branch 'custom-object-formatters' into cof-merge-candidate 2020-02-11 13:51:17 -08:00
Pivotal
ea3dd9dffc Refer to MatchersUtil instances as matchersUtil, not util 2020-02-10 17:26:05 -08:00
Steve Gravrock
d41139fea2 Added jsdocs for MatchersUtil 2020-02-10 17:26:05 -08: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
Steve Gravrock
dec67bd535 Don't require matchers and asymmetric equality testers to pass custom object formatters back to Jasmine
This makes it easier to write high quality matchers and asymmetric equality
testers, and is also a step toward supporting custom object formatters.

Previously, Jasmine passed custom object formatters as the second argument
to matcher factories and as and the second argument to asymmetric equality
testers' `asymmetricMatch` method. Matchers and asymmetric equality testers
were responsible for passing the custom object formatters to methods like
`matchersUtil#equals`:

  function toEqual(util, customEqualityTesters) {
    return {
      compare: function(actual, expected) {
        // ...
        result.pass = util.equals(actual, expected, customEqualityTesters, diffBuilder);

And:

  ArrayContaining.prototype.asymmetricMatch = function(other, customTesters) {
    // ...
    for (var i = 0; i < this.sample.length; i++) {
      var item = this.sample[i];
      if (!j$.matchersUtil.contains(other, item, customTesters)) {
        return false;
      }
    }

With this change, that is no longer necessary. Matchers and asymmetric
equality testers can ignore the existence of custom equality testers and
still fully support them:

  function toEqual(util) {
    return {
      compare: function(actual, expected) {
        // ...
        result.pass = util.equals(actual, expected, diffBuilder);

And:

  ArrayContaining.prototype.asymmetricMatch = function(other, matchersUtil) {
    // ...
    for (var i = 0; i < this.sample.length; i++) {
      var item = this.sample[i];
      if (!matchersUtil.contains(other, item)) {
        return false;
      }
    }

The old interfaces are still supported, for now, but will be deprecated
in a future commit and removed in the next major release after that.

In addition to making matchers and custom equality testers simpler,
this change sets the stage for adding support for custom object
formatters. Those will be architecturally similar to custom equality
testers, and by injecting a `MatchersUtil` instance everywhere we can
add them without requiring user code to pass them around as used to be
the case with custom object formatters.
2020-02-10 17:25:50 -08:00