jasmine-core 4.0.0 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -20,39 +20,24 @@ Please read the [contributors' guide](https://github.com/jasmine/jasmine/blob/ma
20
20
 
21
21
  ## Installation
22
22
 
23
- For the Jasmine NPM module:<br>
24
- [https://github.com/jasmine/jasmine-npm](https://github.com/jasmine/jasmine-npm).
23
+ There are several different ways to install Jasmine, depending on your
24
+ environment and how you'd like to use it. See the [Getting Started page](https://jasmine.github.io/pages/getting_started.html)
25
+ for details.
25
26
 
26
- For the Jasmine browser runner:<br>
27
- [https://github.com/jasmine/jasmine-browser](https://github.com/jasmine/jasmine-browser).
27
+ ## Usage
28
28
 
29
- To install Jasmine standalone on your local box (where **_{#.#.#}_** below is substituted by the release number downloaded):
30
-
31
- * Download the standalone distribution for your desired release from the [releases page](https://github.com/jasmine/jasmine/releases).
32
- * Create a Jasmine directory in your project. - `mkdir my-project/jasmine`
33
- * Move the dist to your project directory. - `mv jasmine/dist/jasmine-standalone-{#.#.#}.zip my-project/jasmine`
34
- * Change directory. - `cd my-project/jasmine`
35
- * Unzip the dist. - `unzip jasmine-standalone-{#.#.#}.zip`
36
-
37
- Add the following to your HTML file:
38
-
39
- ```html
40
- <link rel="shortcut icon" type="image/png" href="lib/jasmine-{#.#.#}/jasmine_favicon.png">
41
- <link rel="stylesheet" type="text/css" href="lib/jasmine-{#.#.#}/jasmine.css">
42
-
43
- <script type="text/javascript" src="lib/jasmine-{#.#.#}/jasmine.js"></script>
44
- <script type="text/javascript" src="lib/jasmine-{#.#.#}/jasmine-html.js"></script>
45
- <script type="text/javascript" src="lib/jasmine-{#.#.#}/boot.js"></script>
46
- ```
29
+ See the [documentation site](https://jasmine.github.io/pages/docs_home.html),
30
+ particularly the [Your First Suite tutorial](https://jasmine.github.io/tutorials/your_first_suite)
31
+ for information on writing specs.
47
32
 
48
33
  ## Supported environments
49
34
 
50
35
  Jasmine tests itself across popular browsers (Safari, Chrome, Firefox, and
51
- Microsoft Edge) as well as nodejs.
36
+ Microsoft Edge) as well as Node.
52
37
 
53
38
  | Environment | Supported versions |
54
39
  |-------------------|--------------------|
55
- | Node | 12.17+, 14, 16 |
40
+ | Node | 12.17+, 14, 16, 18 |
56
41
  | Safari | 14-15 |
57
42
  | Chrome | Evergreen |
58
43
  | Firefox | Evergreen, 91 |
@@ -74,18 +59,19 @@ for the supported environments for each Jasmine release.
74
59
 
75
60
  ## Maintainers
76
61
 
77
- * [Gregg Van Hove](mailto:gvanhove@pivotal.io), Pivotal Labs
62
+ * [Gwendolyn Van Hove](mailto:gwen@slackersoft.net)
63
+ * [Steve Gravrock](mailto:sdg@panix.com)
78
64
 
79
65
  ### Maintainers Emeritus
80
66
 
81
- * [Davis W. Frank](mailto:dwfrank@pivotal.io), Pivotal Labs
82
- * [Rajan Agaskar](mailto:rajan@pivotal.io), Pivotal Labs
83
- * [Greg Cobb](mailto:gcobb@pivotal.io), Pivotal Labs
84
- * [Chris Amavisca](mailto:camavisca@pivotal.io), Pivotal Labs
85
- * [Christian Williams](mailto:antixian666@gmail.com), Cloud Foundry
67
+ * [Davis W. Frank](mailto:dwfrank@pivotal.io)
68
+ * [Rajan Agaskar](mailto:rajan@pivotal.io)
69
+ * [Greg Cobb](mailto:gcobb@pivotal.io)
70
+ * [Chris Amavisca](mailto:camavisca@pivotal.io)
71
+ * [Christian Williams](mailto:antixian666@gmail.com)
86
72
  * Sheel Choksi
87
73
 
88
- Copyright (c) 2008-2018 Pivotal Labs. This software is licensed under the MIT License.
74
+ Copyright (c) 2008-2022 Jasmine Maintainers. This software is licensed under the MIT License.
89
75
 
90
76
 
91
77
  ## License
@@ -40,9 +40,6 @@ body {
40
40
  .jasmine_html-reporter .jasmine-banner .jasmine-title {
41
41
  background: url("data:image/png;base64,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") no-repeat;
42
42
  background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmVyc2lvbj0iMS4xIgogICB3aWR0aD0iNjgxLjk2MjUyIgogICBoZWlnaHQ9IjE4Ny41IgogICBpZD0ic3ZnMiIKICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhOCI+PHJkZjpSREY+PGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz48L2NjOldvcms+PC9yZGY6UkRGPjwvbWV0YWRhdGE+PGRlZnMKICAgICBpZD0iZGVmczYiPjxjbGlwUGF0aAogICAgICAgaWQ9ImNsaXBQYXRoMTgiPjxwYXRoCiAgICAgICAgIGQ9Ik0gMCwxNTAwIDAsMCBsIDU0NTUuNzQsMCAwLDE1MDAgTCAwLDE1MDAgeiIKICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgaWQ9InBhdGgyMCIgLz48L2NsaXBQYXRoPjwvZGVmcz48ZwogICAgIHRyYW5zZm9ybT0ibWF0cml4KDEuMjUsMCwwLC0xLjI1LDAsMTg3LjUpIgogICAgIGlkPSJnMTAiPjxnCiAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuMSwwLjEpIgogICAgICAgaWQ9ImcxMiI+PGcKICAgICAgICAgaWQ9ImcxNCI+PGcKICAgICAgICAgICBjbGlwLXBhdGg9InVybCgjY2xpcFBhdGgxOCkiCiAgICAgICAgICAgaWQ9ImcxNiI+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTU0NCw1OTkuNDM0IGMgMC45MiwtNDAuMzUyIDI1LjY4LC04MS42MDIgNzEuNTMsLTgxLjYwMiAyNy41MSwwIDQ3LjY4LDEyLjgzMiA2MS40NCwzNS43NTQgMTIuODMsMjIuOTMgMTIuODMsNTYuODUyIDEyLjgzLDgyLjUyNyBsIDAsMzI5LjE4NCAtNzEuNTIsMCAwLDEwNC41NDMgMjY2LjgzLDAgMCwtMTA0LjU0MyAtNzAuNiwwIDAsLTM0NC43NyBjIDAsLTU4LjY5MSAtMy42OCwtMTA0LjUzMSAtNDQuOTMsLTE1Mi4yMTggLTM2LjY4LC00Mi4xOCAtOTYuMjgsLTY2LjAyIC0xNTMuMTQsLTY2LjAyIC0xMTcuMzcsMCAtMjA3LjI0LDc3Ljk0MSAtMjAyLjY0LDE5Ny4xNDUgbCAxMzAuMiwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMjIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDIzMDEuNCw2NjIuNjk1IGMgMCw4MC43MDMgLTY2Ljk0LDE0NS44MTMgLTE0Ny42MywxNDUuODEzIC04My40NCwwIC0xNDcuNjMsLTY4Ljc4MSAtMTQ3LjYzLC0xNTEuMzAxIDAsLTc5Ljc4NSA2Ni45NCwtMTQ1LjgwMSAxNDUuOCwtMTQ1LjgwMSA4NC4zNSwwIDE0OS40Niw2Ny44NTIgMTQ5LjQ2LDE1MS4yODkgeiBtIC0xLjgzLC0xODEuNTQ3IGMgLTM1Ljc3LC01NC4wOTcgLTkzLjUzLC03OC44NTkgLTE1Ny43MiwtNzguODU5IC0xNDAuMywwIC0yNTEuMjQsMTE2LjQ0OSAtMjUxLjI0LDI1NC45MTggMCwxNDIuMTI5IDExMy43LDI2MC40MSAyNTYuNzQsMjYwLjQxIDYzLjI3LDAgMTE4LjI5LC0yOS4zMzYgMTUyLjIyLC04Mi41MjMgbCAwLDY5LjY4NyAxNzUuMTQsMCAwLC0xMDQuNTI3IC02MS40NCwwIDAsLTI4MC41OTggNjEuNDQsMCAwLC0xMDQuNTI3IC0xNzUuMTQsMCAwLDY2LjAxOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAyNjIyLjMzLDU1Ny4yNTggYyAzLjY3LC00NC4wMTYgMzMuMDEsLTczLjM0OCA3OC44NiwtNzMuMzQ4IDMzLjkzLDAgNjYuOTMsMjMuODI0IDY2LjkzLDYwLjUwNCAwLDQ4LjYwNiAtNDUuODQsNTYuODU2IC04My40NCw2Ni45NDEgLTg1LjI4LDIyLjAwNCAtMTc4LjgxLDQ4LjYwNiAtMTc4LjgxLDE1NS44NzkgMCw5My41MzYgNzguODYsMTQ3LjYzMyAxNjUuOTgsMTQ3LjYzMyA0NCwwIDgzLjQzLC05LjE3NiAxMTAuOTQsLTQ0LjAwOCBsIDAsMzMuOTIyIDgyLjUzLDAgMCwtMTMyLjk2NSAtMTA4LjIxLDAgYyAtMS44MywzNC44NTYgLTI4LjQyLDU3Ljc3NCAtNjMuMjYsNTcuNzc0IC0zMC4yNiwwIC02Mi4zNSwtMTcuNDIyIC02Mi4zNSwtNTEuMzQ4IDAsLTQ1Ljg0NyA0NC45MywtNTUuOTMgODAuNjksLTY0LjE4IDg4LjAyLC0yMC4xNzUgMTgyLjQ3LC00Ny42OTUgMTgyLjQ3LC0xNTcuNzM0IDAsLTk5LjAyNyAtODMuNDQsLTE1NC4wMzkgLTE3NS4xMywtMTU0LjAzOSAtNDkuNTMsMCAtOTQuNDYsMTUuNTgyIC0xMjYuNTUsNTMuMTggbCAwLC00MC4zNCAtODUuMjcsMCAwLDE0Mi4xMjkgMTE0LjYyLDAiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGgyNiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMjk4OC4xOCw4MDAuMjU0IC02My4yNiwwIDAsMTA0LjUyNyAxNjUuMDUsMCAwLC03My4zNTUgYyAzMS4xOCw1MS4zNDcgNzguODYsODUuMjc3IDE0MS4yMSw4NS4yNzcgNjcuODUsMCAxMjQuNzEsLTQxLjI1OCAxNTIuMjEsLTEwMi42OTkgMjYuNiw2Mi4zNTEgOTIuNjIsMTAyLjY5OSAxNjAuNDcsMTAyLjY5OSA1My4xOSwwIDEwNS40NiwtMjIgMTQxLjIxLC02Mi4zNTEgMzguNTIsLTQ0LjkzOCAzOC41MiwtOTMuNTMyIDM4LjUyLC0xNDkuNDU3IGwgMCwtMTg1LjIzOSA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40MiwwIDAsMTA0LjUyNyA2My4yOCwwIDAsMTU3LjcxNSBjIDAsMzIuMTAyIDAsNjAuNTI3IC0xNC42Nyw4OC45NTcgLTE4LjM0LDI2LjU4MiAtNDguNjEsNDAuMzQ0IC03OS43Nyw0MC4zNDQgLTMwLjI2LDAgLTYzLjI4LC0xMi44NDQgLTgyLjUzLC0zNi42NzIgLTIyLjkzLC0yOS4zNTUgLTIyLjkzLC01Ni44NjMgLTIyLjkzLC05Mi42MjkgbCAwLC0xNTcuNzE1IDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM4LjQxLDAgMCwxMDQuNTI3IDYzLjI4LDAgMCwxNTAuMzgzIGMgMCwyOS4zNDggMCw2Ni4wMjMgLTE0LjY3LDkxLjY5OSAtMTUuNTksMjkuMzM2IC00Ny42OSw0NC45MzQgLTgwLjcsNDQuOTM0IC0zMS4xOCwwIC01Ny43NywtMTEuMDA4IC03Ny45NCwtMzUuNzc0IC0yNC43NywtMzAuMjUzIC0yNi42LC02Mi4zNDMgLTI2LjYsLTk5Ljk0MSBsIDAsLTE1MS4zMDEgNjMuMjcsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNiwwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDI4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSAzOTk4LjY2LDk1MS41NDcgLTExMS44NywwIDAsMTE4LjI5MyAxMTEuODcsMCAwLC0xMTguMjkzIHogbSAwLC00MzEuODkxIDYzLjI3LDAgMCwtMTA0LjUyNyAtMjM5LjMzLDAgMCwxMDQuNTI3IDY0LjE5LDAgMCwyODAuNTk4IC02My4yNywwIDAsMTA0LjUyNyAxNzUuMTQsMCAwLC0zODUuMTI1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzAiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDQxNTkuMTIsODAwLjI1NCAtNjMuMjcsMCAwLDEwNC41MjcgMTc1LjE0LDAgMCwtNjkuNjg3IGMgMjkuMzUsNTQuMTAxIDg0LjM2LDgwLjY5OSAxNDQuODcsODAuNjk5IDUzLjE5LDAgMTA1LjQ1LC0yMi4wMTYgMTQxLjIyLC02MC41MjcgNDAuMzQsLTQ0LjkzNCA0MS4yNiwtODguMDMyIDQxLjI2LC0xNDMuOTU3IGwgMCwtMTkxLjY1MyA2My4yNywwIDAsLTEwNC41MjcgLTIzOC40LDAgMCwxMDQuNTI3IDYzLjI2LDAgMCwxNTguNjM3IGMgMCwzMC4yNjIgMCw2MS40MzQgLTE5LjI2LDg4LjAzNSAtMjAuMTcsMjYuNTgyIC01My4xOCwzOS40MTQgLTg2LjE5LDM5LjQxNCAtMzMuOTMsMCAtNjguNzcsLTEzLjc1IC04OC45NCwtNDEuMjUgLTIxLjA5LC0yNy41IC0yMS4wOSwtNjkuNjg3IC0yMS4wOSwtMTAyLjcwNyBsIDAsLTE0Mi4xMjkgNjMuMjYsMCAwLC0xMDQuNTI3IC0yMzguNCwwIDAsMTA0LjUyNyA2My4yNywwIDAsMjgwLjU5OCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDMyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA1MDgyLjQ4LDcwMy45NjUgYyAtMTkuMjQsNzAuNjA1IC04MS42LDExNS41NDcgLTE1NC4wNCwxMTUuNTQ3IC02Ni4wNCwwIC0xMjkuMywtNTEuMzQ4IC0xNDMuMDUsLTExNS41NDcgbCAyOTcuMDksMCB6IG0gODUuMjcsLTE0NC44ODMgYyAtMzguNTEsLTkzLjUyMyAtMTI5LjI3LC0xNTYuNzkzIC0yMzEuMDUsLTE1Ni43OTMgLTE0My4wNywwIC0yNTcuNjgsMTExLjg3MSAtMjU3LjY4LDI1NS44MzYgMCwxNDQuODgzIDEwOS4xMiwyNjEuMzI4IDI1NC45MSwyNjEuMzI4IDY3Ljg3LDAgMTM1LjcyLC0zMC4yNTggMTgzLjM5LC03OC44NjMgNDguNjIsLTUxLjM0NCA2OC43OSwtMTEzLjY5NSA2OC43OSwtMTgzLjM4MyBsIC0zLjY3LC0zOS40MzQgLTM5Ni4xMywwIGMgMTQuNjcsLTY3Ljg2MyA3Ny4wMywtMTE3LjM2MyAxNDYuNzIsLTExNy4zNjMgNDguNTksMCA5MC43NiwxOC4zMjggMTE4LjI4LDU4LjY3MiBsIDExNi40NCwwIgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDY5MC44OTUsODUwLjcwMyA5MC43NSwwIDIyLjU0MywzMS4wMzUgMCwyNDMuMTIyIC0xMzUuODI5LDAgMCwtMjQzLjE0MSAyMi41MzYsLTMxLjAxNiIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDM2IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA2MzIuMzk1LDc0Mi4yNTggMjguMDM5LDg2LjMwNCAtMjIuNTUxLDMxLjA0IC0yMzEuMjIzLDc1LjEyOCAtNDEuOTc2LC0xMjkuMTgzIDIzMS4yNTcsLTc1LjEzNyAzNi40NTQsMTEuODQ4IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoMzgiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDcxNy40NDksNjUzLjEwNSAtNzMuNDEsNTMuMzYgLTM2LjQ4OCwtMTEuODc1IC0xNDIuOTAzLC0xOTYuNjkyIDEwOS44ODMsLTc5LjgyOCAxNDIuOTE4LDE5Ni43MDMgMCwzOC4zMzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0MCIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gODI4LjUyLDcwNi40NjUgLTczLjQyNiwtNTMuMzQgMC4wMTEsLTM4LjM1OSBMIDg5OC4wMDQsNDE4LjA3IDEwMDcuOSw0OTcuODk4IDg2NC45NzMsNjk0LjYwOSA4MjguNTIsNzA2LjQ2NSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQyIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA4MTIuMDg2LDgyOC41ODYgMjguMDU1LC04Ni4zMiAzNi40ODQsLTExLjgzNiAyMzEuMjI1LDc1LjExNyAtNDEuOTcsMTI5LjE4MyAtMjMxLjIzOSwtNzUuMTQgLTIyLjU1NSwtMzEuMDA0IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNDQiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDczNi4zMDEsMTMzNS44OCBjIC0zMjMuMDQ3LDAgLTU4NS44NzUsLTI2Mi43OCAtNTg1Ljg3NSwtNTg1Ljc4MiAwLC0zMjMuMTE4IDI2Mi44MjgsLTU4NS45NzcgNTg1Ljg3NSwtNTg1Ljk3NyAzMjMuMDE5LDAgNTg1LjgwOSwyNjIuODU5IDU4NS44MDksNTg1Ljk3NyAwLDMyMy4wMDIgLTI2Mi43OSw1ODUuNzgyIC01ODUuODA5LDU4NS43ODIgbCAwLDAgeiBtIDAsLTExOC42MSBjIDI1Ny45NzIsMCA0NjcuMTg5LC0yMDkuMTMgNDY3LjE4OSwtNDY3LjE3MiAwLC0yNTguMTI5IC0yMDkuMjE3LC00NjcuMzQ4IC00NjcuMTg5LC00NjcuMzQ4IC0yNTguMDc0LDAgLTQ2Ny4yNTQsMjA5LjIxOSAtNDY3LjI1NCw0NjcuMzQ4IDAsMjU4LjA0MiAyMDkuMTgsNDY3LjE3MiA0NjcuMjU0LDQ2Ny4xNzIiCiAgICAgICAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgICAgICAgaWQ9InBhdGg0NiIKICAgICAgICAgICAgIHN0eWxlPSJmaWxsOiM4YTQxODI7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOm5vbnplcm87c3Ryb2tlOm5vbmUiIC8+PHBhdGgKICAgICAgICAgICAgIGQ9Im0gMTA5MS4xMyw2MTkuODgzIC0xNzUuNzcxLDU3LjEyMSAxMS42MjksMzUuODA4IDE3NS43NjIsLTU3LjEyMSAtMTEuNjIsLTM1LjgwOCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDQ4IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA4NjYuOTU3LDkwMi4wNzQgODM2LjUsOTI0LjE5OSA5NDUuMTIxLDEwNzMuNzMgOTc1LjU4NiwxMDUxLjYxIDg2Ni45NTcsOTAyLjA3NCIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDUwIgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0iTSA2MDcuNDY1LDkwMy40NDUgNDk4Ljg1NSwxMDUyLjk3IDUyOS4zMiwxMDc1LjEgNjM3LjkzLDkyNS41NjYgNjA3LjQ2NSw5MDMuNDQ1IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTIiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjxwYXRoCiAgICAgICAgICAgICBkPSJtIDM4MC42ODgsNjIyLjEyOSAtMTEuNjI2LDM1LjgwMSAxNzUuNzU4LDU3LjA5IDExLjYyMSwtMzUuODAxIC0xNzUuNzUzLC01Ny4wOSIKICAgICAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiCiAgICAgICAgICAgICBpZD0icGF0aDU0IgogICAgICAgICAgICAgc3R5bGU9ImZpbGw6IzhhNDE4MjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6bm9uemVybztzdHJva2U6bm9uZSIgLz48cGF0aAogICAgICAgICAgICAgZD0ibSA3MTYuMjg5LDM3Ni41OSAzNy42NDA2LDAgMCwxODQuODE2IC0zNy42NDA2LDAgMCwtMTg0LjgxNiB6IgogICAgICAgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIKICAgICAgICAgICAgIGlkPSJwYXRoNTYiCiAgICAgICAgICAgICBzdHlsZT0iZmlsbDojOGE0MTgyO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpub256ZXJvO3N0cm9rZTpub25lIiAvPjwvZz48L2c+PC9nPjwvZz48L3N2Zz4=") no-repeat, none;
43
- -moz-background-size: 100%;
44
- -o-background-size: 100%;
45
- -webkit-background-size: 100%;
46
43
  background-size: 100%;
47
44
  display: block;
48
45
  float: left;
@@ -152,6 +152,7 @@ getJasmineRequireObj().requireMatchers = function(jRequire, j$) {
152
152
  'toHaveBeenCalledTimes',
153
153
  'toHaveBeenCalledWith',
154
154
  'toHaveClass',
155
+ 'toHaveSpyInteractions',
155
156
  'toMatch',
156
157
  'toThrow',
157
158
  'toThrowError',
@@ -640,6 +641,8 @@ getJasmineRequireObj().util = function(j$) {
640
641
  // All falsey values are either primitives, `null`, or `undefined.
641
642
  if (!argsAsArray[i] || str.match(primitives)) {
642
643
  clonedArgs.push(argsAsArray[i]);
644
+ } else if (str === '[object Date]') {
645
+ clonedArgs.push(new Date(argsAsArray[i].valueOf()));
643
646
  } else {
644
647
  clonedArgs.push(j$.util.clone(argsAsArray[i]));
645
648
  }
@@ -659,18 +662,6 @@ getJasmineRequireObj().util = function(j$) {
659
662
  return descriptor;
660
663
  };
661
664
 
662
- util.objectDifference = function(obj, toRemove) {
663
- var diff = {};
664
-
665
- for (var key in obj) {
666
- if (util.has(obj, key) && !util.has(toRemove, key)) {
667
- diff[key] = obj[key];
668
- }
669
- }
670
-
671
- return diff;
672
- };
673
-
674
665
  util.has = function(obj, key) {
675
666
  return Object.prototype.hasOwnProperty.call(obj, key);
676
667
  };
@@ -1039,7 +1030,7 @@ getJasmineRequireObj().Spec = function(j$) {
1039
1030
  boilerplateEnd =
1040
1031
  boilerplateStart + Spec.pendingSpecExceptionMessage.length;
1041
1032
 
1042
- return fullMessage.substr(boilerplateEnd);
1033
+ return fullMessage.slice(boilerplateEnd);
1043
1034
  };
1044
1035
 
1045
1036
  Spec.pendingSpecExceptionMessage = '=> marked Pending';
@@ -2169,7 +2160,10 @@ getJasmineRequireObj().Env = function(j$) {
2169
2160
  }
2170
2161
  addSpecsToSuite(suite, specDefinitions);
2171
2162
  if (suite.parentSuite && !suite.children.length) {
2172
- throw new Error('describe with no children (describe() or it())');
2163
+ throw new Error(
2164
+ 'describe with no children (describe() or it()): ' +
2165
+ suite.getFullName()
2166
+ );
2173
2167
  }
2174
2168
  return suite.metadata;
2175
2169
  };
@@ -5534,12 +5528,12 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
5534
5528
  }
5535
5529
 
5536
5530
  // Deep compare objects.
5537
- var aKeys = keys(a, className == '[object Array]'),
5531
+ var aKeys = MatchersUtil.keys(a, className == '[object Array]'),
5538
5532
  key;
5539
5533
  size = aKeys.length;
5540
5534
 
5541
5535
  // Ensure that both objects contain the same number of properties before comparing deep equality.
5542
- if (keys(b, className == '[object Array]').length !== size) {
5536
+ if (MatchersUtil.keys(b, className == '[object Array]').length !== size) {
5543
5537
  diffBuilder.recordMismatch(
5544
5538
  objectKeysAreDifferentFormatter.bind(null, this.pp)
5545
5539
  );
@@ -5575,18 +5569,24 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
5575
5569
  return result;
5576
5570
  };
5577
5571
 
5578
- function keys(obj, isArray) {
5579
- var allKeys = Object.keys
5580
- ? Object.keys(obj)
5581
- : (function(o) {
5582
- var keys = [];
5583
- for (var key in o) {
5584
- if (j$.util.has(o, key)) {
5585
- keys.push(key);
5586
- }
5587
- }
5588
- return keys;
5589
- })(obj);
5572
+ MatchersUtil.keys = function(obj, isArray) {
5573
+ var allKeys = (function(o) {
5574
+ var keys = [];
5575
+ for (var key in o) {
5576
+ if (j$.util.has(o, key)) {
5577
+ keys.push(key);
5578
+ }
5579
+ }
5580
+
5581
+ var symbols = Object.getOwnPropertySymbols(o);
5582
+ for (var i = 0; i < symbols.length; i++) {
5583
+ if (o.propertyIsEnumerable(symbols[i])) {
5584
+ keys.push(symbols[i]);
5585
+ }
5586
+ }
5587
+
5588
+ return keys;
5589
+ })(obj);
5590
5590
 
5591
5591
  if (!isArray) {
5592
5592
  return allKeys;
@@ -5598,21 +5598,29 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
5598
5598
 
5599
5599
  var extraKeys = [];
5600
5600
  for (var i = 0; i < allKeys.length; i++) {
5601
- if (!/^[0-9]+$/.test(allKeys[i])) {
5601
+ if (typeof allKeys[i] === 'symbol' || !/^[0-9]+$/.test(allKeys[i])) {
5602
5602
  extraKeys.push(allKeys[i]);
5603
5603
  }
5604
5604
  }
5605
5605
 
5606
5606
  return extraKeys;
5607
- }
5607
+ };
5608
5608
 
5609
5609
  function isFunction(obj) {
5610
5610
  return typeof obj === 'function';
5611
5611
  }
5612
5612
 
5613
+ // Returns an array of [k, v] pairs for eacch property that's in objA
5614
+ // and not in objB.
5615
+ function extraKeysAndValues(objA, objB) {
5616
+ return MatchersUtil.keys(objA)
5617
+ .filter(key => !j$.util.has(objB, key))
5618
+ .map(key => [key, objA[key]]);
5619
+ }
5620
+
5613
5621
  function objectKeysAreDifferentFormatter(pp, actual, expected, path) {
5614
- var missingProperties = j$.util.objectDifference(expected, actual),
5615
- extraProperties = j$.util.objectDifference(actual, expected),
5622
+ var missingProperties = extraKeysAndValues(expected, actual),
5623
+ extraProperties = extraKeysAndValues(actual, expected),
5616
5624
  missingPropertiesMessage = formatKeyValuePairs(pp, missingProperties),
5617
5625
  extraPropertiesMessage = formatKeyValuePairs(pp, extraProperties),
5618
5626
  messages = [];
@@ -5662,11 +5670,13 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
5662
5670
  );
5663
5671
  }
5664
5672
 
5665
- function formatKeyValuePairs(pp, obj) {
5666
- var formatted = '';
5667
- for (var key in obj) {
5668
- formatted += '\n ' + key + ': ' + pp(obj[key]);
5673
+ function formatKeyValuePairs(pp, keyValuePairs) {
5674
+ let formatted = '';
5675
+
5676
+ for (const [key, value] of keyValuePairs) {
5677
+ formatted += '\n ' + key.toString() + ': ' + pp(value);
5669
5678
  }
5679
+
5670
5680
  return formatted;
5671
5681
  }
5672
5682
 
@@ -5844,8 +5854,8 @@ getJasmineRequireObj().ObjectPath = function(j$) {
5844
5854
  };
5845
5855
 
5846
5856
  function formatPropertyAccess(prop) {
5847
- if (typeof prop === 'number') {
5848
- return '[' + prop + ']';
5857
+ if (typeof prop === 'number' || typeof prop === 'symbol') {
5858
+ return '[' + prop.toString() + ']';
5849
5859
  }
5850
5860
 
5851
5861
  if (isValidIdentifier(prop)) {
@@ -5956,6 +5966,14 @@ getJasmineRequireObj().toBeCloseTo = function() {
5956
5966
  );
5957
5967
  }
5958
5968
 
5969
+ // Infinity is close to Infinity and -Infinity is close to -Infinity,
5970
+ // regardless of the precision.
5971
+ if (expected === Infinity || expected === -Infinity) {
5972
+ return {
5973
+ pass: actual === expected
5974
+ };
5975
+ }
5976
+
5959
5977
  var pow = Math.pow(10, precision + 1);
5960
5978
  var delta = Math.abs(expected - actual);
5961
5979
  var maxDelta = Math.pow(10, -precision) / 2;
@@ -6926,6 +6944,82 @@ getJasmineRequireObj().toHaveSize = function(j$) {
6926
6944
  return toHaveSize;
6927
6945
  };
6928
6946
 
6947
+ getJasmineRequireObj().toHaveSpyInteractions = function(j$) {
6948
+ var getErrorMsg = j$.formatErrorMsg(
6949
+ '<toHaveSpyInteractions>',
6950
+ 'expect(<spyObj>).toHaveSpyInteractions()'
6951
+ );
6952
+
6953
+ /**
6954
+ * {@link expect} the actual (a {@link SpyObj}) spies to have been called.
6955
+ * @function
6956
+ * @name matchers#toHaveSpyInteractions
6957
+ * @since 4.1.0
6958
+ * @example
6959
+ * expect(mySpyObj).toHaveSpyInteractions();
6960
+ * expect(mySpyObj).not.toHaveSpyInteractions();
6961
+ */
6962
+ function toHaveSpyInteractions(matchersUtil) {
6963
+ return {
6964
+ compare: function(actual) {
6965
+ var result = {};
6966
+
6967
+ if (!j$.isObject_(actual)) {
6968
+ throw new Error(
6969
+ getErrorMsg('Expected a spy object, but got ' + typeof actual + '.')
6970
+ );
6971
+ }
6972
+
6973
+ if (arguments.length > 1) {
6974
+ throw new Error(getErrorMsg('Does not take arguments'));
6975
+ }
6976
+
6977
+ result.pass = false;
6978
+ let hasSpy = false;
6979
+ const calledSpies = [];
6980
+ for (const spy of Object.values(actual)) {
6981
+ if (!j$.isSpy(spy)) continue;
6982
+ hasSpy = true;
6983
+
6984
+ if (spy.calls.any()) {
6985
+ result.pass = true;
6986
+ calledSpies.push([spy.and.identity, spy.calls.count()]);
6987
+ }
6988
+ }
6989
+
6990
+ if (!hasSpy) {
6991
+ throw new Error(
6992
+ getErrorMsg(
6993
+ 'Expected a spy object with spies, but object has no spies.'
6994
+ )
6995
+ );
6996
+ }
6997
+
6998
+ let resultMessage;
6999
+ if (result.pass) {
7000
+ resultMessage =
7001
+ 'Expected spy object spies not to have been called, ' +
7002
+ 'but the following spies were called: ';
7003
+ resultMessage += calledSpies
7004
+ .map(([spyName, spyCount]) => {
7005
+ return `${spyName} called ${spyCount} time(s)`;
7006
+ })
7007
+ .join(', ');
7008
+ } else {
7009
+ resultMessage =
7010
+ 'Expected spy object spies to have been called, ' +
7011
+ 'but no spies were called.';
7012
+ }
7013
+ result.message = resultMessage;
7014
+
7015
+ return result;
7016
+ }
7017
+ };
7018
+ }
7019
+
7020
+ return toHaveSpyInteractions;
7021
+ };
7022
+
6929
7023
  getJasmineRequireObj().toMatch = function(j$) {
6930
7024
  var getErrorMsg = j$.formatErrorMsg(
6931
7025
  '<toMatch>',
@@ -7488,7 +7582,7 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
7488
7582
  this.emitScalar('<global>');
7489
7583
  } else if (value.jasmineToString) {
7490
7584
  this.emitScalar(value.jasmineToString(this.pp_));
7491
- } else if (typeof value === 'string') {
7585
+ } else if (j$.isString_(value)) {
7492
7586
  this.emitString(value);
7493
7587
  } else if (j$.isSpy(value)) {
7494
7588
  this.emitScalar('spy on ' + value.and.identity);
@@ -7554,7 +7648,7 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
7554
7648
  };
7555
7649
 
7556
7650
  SinglePrettyPrintRun.prototype.iterateObject = function(obj, fn) {
7557
- var objKeys = keys(obj, j$.isArray_(obj));
7651
+ var objKeys = j$.MatchersUtil.keys(obj, j$.isArray_(obj));
7558
7652
  var isGetter = function isGetter(prop) {};
7559
7653
 
7560
7654
  if (obj.__lookupGetter__) {
@@ -7749,8 +7843,14 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
7749
7843
  property,
7750
7844
  isGetter
7751
7845
  ) {
7752
- this.append(property);
7846
+ if (typeof property === 'symbol') {
7847
+ this.append(property.toString());
7848
+ } else {
7849
+ this.append(property);
7850
+ }
7851
+
7753
7852
  this.append(': ');
7853
+
7754
7854
  if (isGetter) {
7755
7855
  this.append('<getter>');
7756
7856
  } else {
@@ -7792,37 +7892,6 @@ getJasmineRequireObj().makePrettyPrinter = function(j$) {
7792
7892
 
7793
7893
  MaxCharsReachedError.prototype = new Error();
7794
7894
 
7795
- function keys(obj, isArray) {
7796
- var allKeys = Object.keys
7797
- ? Object.keys(obj)
7798
- : (function(o) {
7799
- var keys = [];
7800
- for (var key in o) {
7801
- if (j$.util.has(o, key)) {
7802
- keys.push(key);
7803
- }
7804
- }
7805
- return keys;
7806
- })(obj);
7807
-
7808
- if (!isArray) {
7809
- return allKeys;
7810
- }
7811
-
7812
- if (allKeys.length === 0) {
7813
- return allKeys;
7814
- }
7815
-
7816
- var extraKeys = [];
7817
- for (var i = 0; i < allKeys.length; i++) {
7818
- if (!/^[0-9]+$/.test(allKeys[i])) {
7819
- extraKeys.push(allKeys[i]);
7820
- }
7821
- }
7822
-
7823
- return extraKeys;
7824
- }
7825
-
7826
7895
  function customFormat(value, customObjectFormatters) {
7827
7896
  var i, result;
7828
7897
 
@@ -8031,7 +8100,10 @@ getJasmineRequireObj().QueueRunner = function(j$) {
8031
8100
  maybeThenable = queueableFn.fn.call(self.userContext);
8032
8101
 
8033
8102
  if (maybeThenable && j$.isFunction_(maybeThenable.then)) {
8034
- maybeThenable.then(next, onPromiseRejection);
8103
+ maybeThenable.then(
8104
+ wrapInPromiseResolutionHandler(next),
8105
+ onPromiseRejection
8106
+ );
8035
8107
  completedSynchronously = false;
8036
8108
  return { completedSynchronously: false };
8037
8109
  }
@@ -8130,6 +8202,16 @@ getJasmineRequireObj().QueueRunner = function(j$) {
8130
8202
  }
8131
8203
  };
8132
8204
 
8205
+ function wrapInPromiseResolutionHandler(fn) {
8206
+ return function(maybeArg) {
8207
+ if (j$.isError_(maybeArg)) {
8208
+ fn(maybeArg);
8209
+ } else {
8210
+ fn();
8211
+ }
8212
+ };
8213
+ }
8214
+
8133
8215
  return QueueRunner;
8134
8216
  };
8135
8217
 
@@ -10186,5 +10268,5 @@ getJasmineRequireObj().UserContext = function(j$) {
10186
10268
  };
10187
10269
 
10188
10270
  getJasmineRequireObj().version = function() {
10189
- return '4.0.0';
10271
+ return '4.1.1';
10190
10272
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "jasmine-core",
3
3
  "license": "MIT",
4
- "version": "4.0.0",
4
+ "version": "4.1.1",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/jasmine/jasmine.git"