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 +17 -31
- package/lib/jasmine-core/jasmine.css +0 -3
- package/lib/jasmine-core/jasmine.js +156 -74
- package/package.json +1 -1
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
|
-
|
|
24
|
-
[
|
|
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
|
-
|
|
27
|
-
[https://github.com/jasmine/jasmine-browser](https://github.com/jasmine/jasmine-browser).
|
|
27
|
+
## Usage
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
|
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
|
-
* [
|
|
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)
|
|
82
|
-
* [Rajan Agaskar](mailto:rajan@pivotal.io)
|
|
83
|
-
* [Greg Cobb](mailto:gcobb@pivotal.io)
|
|
84
|
-
* [Chris Amavisca](mailto:camavisca@pivotal.io)
|
|
85
|
-
* [Christian Williams](mailto:antixian666@gmail.com)
|
|
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-
|
|
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.
|
|
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(
|
|
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
|
|
5579
|
-
var allKeys =
|
|
5580
|
-
|
|
5581
|
-
|
|
5582
|
-
|
|
5583
|
-
|
|
5584
|
-
|
|
5585
|
-
|
|
5586
|
-
|
|
5587
|
-
|
|
5588
|
-
|
|
5589
|
-
|
|
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 =
|
|
5615
|
-
extraProperties =
|
|
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,
|
|
5666
|
-
|
|
5667
|
-
|
|
5668
|
-
|
|
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 (
|
|
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
|
-
|
|
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(
|
|
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.
|
|
10271
|
+
return '4.1.1';
|
|
10190
10272
|
};
|