jasmine-core 2.1.3 → 2.2.0
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.
- checksums.yaml +4 -4
- data/lib/console/console.js +1 -1
- data/lib/jasmine-core/boot.js +3 -2
- data/lib/jasmine-core/boot/boot.js +2 -1
- data/lib/jasmine-core/example/node_example/{src → lib/jasmine_examples}/Player.js +0 -0
- data/lib/jasmine-core/example/node_example/{src → lib/jasmine_examples}/Song.js +0 -0
- data/lib/jasmine-core/example/node_example/spec/{SpecHelper.js → helpers/jasmine_examples/SpecHelper.js} +0 -0
- data/lib/jasmine-core/example/node_example/spec/{PlayerSpec.js → jasmine_examples/PlayerSpec.js} +2 -2
- data/lib/jasmine-core/jasmine-html.js +17 -5
- data/lib/jasmine-core/jasmine.css +10 -10
- data/lib/jasmine-core/jasmine.js +295 -155
- data/lib/jasmine-core/node_boot.js +1 -1
- data/lib/jasmine-core/spec/core/DelayedFunctionSchedulerSpec.js +37 -0
- data/lib/jasmine-core/spec/core/EnvSpec.js +6 -0
- data/lib/jasmine-core/spec/core/PrettyPrintSpec.js +14 -14
- data/lib/jasmine-core/spec/core/SpecSpec.js +24 -1
- data/lib/jasmine-core/spec/core/SpyRegistrySpec.js +9 -0
- data/lib/jasmine-core/spec/core/SpySpec.js +9 -1
- data/lib/jasmine-core/spec/core/SuiteSpec.js +26 -0
- data/lib/jasmine-core/spec/core/{AnySpec.js → asymmetric_equality/AnySpec.js} +6 -6
- data/lib/jasmine-core/spec/core/asymmetric_equality/AnythingSpec.js +44 -0
- data/lib/jasmine-core/spec/core/asymmetric_equality/ArrayContainingSpec.js +39 -0
- data/lib/jasmine-core/spec/core/asymmetric_equality/ObjectContainingSpec.js +58 -0
- data/lib/jasmine-core/spec/core/asymmetric_equality/StringMatchingSpec.js +27 -0
- data/lib/jasmine-core/spec/core/integration/EnvSpec.js +79 -3
- data/lib/jasmine-core/spec/core/integration/SpecRunningSpec.js +26 -2
- data/lib/jasmine-core/spec/core/matchers/matchersUtilSpec.js +112 -2
- data/lib/jasmine-core/spec/core/matchers/toMatchSpec.js +8 -0
- data/lib/jasmine-core/spec/html/HtmlReporterSpec.js +19 -8
- data/lib/jasmine-core/spec/html/PrettyPrintHtmlSpec.js +1 -1
- data/lib/jasmine-core/spec/html/QueryStringSpec.js +32 -3
- data/lib/jasmine-core/version.rb +1 -1
- metadata +96 -93
- data/lib/jasmine-core/spec/core/ObjectContainingSpec.js +0 -70
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a0184015b60b7028b11f2d2b46199c10b900341
|
4
|
+
data.tar.gz: aabb66631039d23d531cf7e50d6214f9465df18a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d62b564c1c0873c2acda50c126b37104da40495bf69d7af14a661e9c2194397bf1b59c5b8076e00603fe5dfe1454b3493543ebdfa5413d6d9af27cec7f96e3c
|
7
|
+
data.tar.gz: e91aad664b12546dd0e9809d5e7749446ee375c421c723b35ca19c0457356f8be5fbd3680fba65f41cfed4536acfd602e4604b64a2ae4770ef2fc166904d86aa
|
data/lib/console/console.js
CHANGED
data/lib/jasmine-core/boot.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
Copyright (c) 2008-
|
2
|
+
Copyright (c) 2008-2015 Pivotal Labs
|
3
3
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining
|
5
5
|
a copy of this software and associated documentation files (the
|
@@ -84,7 +84,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
84
84
|
*/
|
85
85
|
var htmlReporter = new jasmine.HtmlReporter({
|
86
86
|
env: env,
|
87
|
-
onRaiseExceptionsClick: function() { queryString.
|
87
|
+
onRaiseExceptionsClick: function() { queryString.navigateWithNewParam("catch", !env.catchingExceptions()); },
|
88
|
+
addToExistingQueryString: function(key, value) { return queryString.fullStringWithNewParam(key, value); },
|
88
89
|
getContainer: function() { return document.body; },
|
89
90
|
createElement: function() { return document.createElement.apply(document, arguments); },
|
90
91
|
createTextNode: function() { return document.createTextNode.apply(document, arguments); },
|
@@ -62,7 +62,8 @@
|
|
62
62
|
*/
|
63
63
|
var htmlReporter = new jasmine.HtmlReporter({
|
64
64
|
env: env,
|
65
|
-
onRaiseExceptionsClick: function() { queryString.
|
65
|
+
onRaiseExceptionsClick: function() { queryString.navigateWithNewParam("catch", !env.catchingExceptions()); },
|
66
|
+
addToExistingQueryString: function(key, value) { return queryString.fullStringWithNewParam(key, value); },
|
66
67
|
getContainer: function() { return document.body; },
|
67
68
|
createElement: function() { return document.createElement.apply(document, arguments); },
|
68
69
|
createTextNode: function() { return document.createTextNode.apply(document, arguments); },
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
Copyright (c) 2008-
|
2
|
+
Copyright (c) 2008-2015 Pivotal Labs
|
3
3
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining
|
5
5
|
a copy of this software and associated documentation files (the
|
@@ -40,6 +40,7 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|
40
40
|
createElement = options.createElement,
|
41
41
|
createTextNode = options.createTextNode,
|
42
42
|
onRaiseExceptionsClick = options.onRaiseExceptionsClick || function() {},
|
43
|
+
addToExistingQueryString = options.addToExistingQueryString || defaultQueryString,
|
43
44
|
timer = options.timer || noopTimer,
|
44
45
|
results = [],
|
45
46
|
specsExecuted = 0,
|
@@ -220,6 +221,9 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|
220
221
|
if(noExpectations(resultNode.result)) {
|
221
222
|
specDescription = 'SPEC HAS NO EXPECTATIONS ' + specDescription;
|
222
223
|
}
|
224
|
+
if(resultNode.result.status === 'pending' && resultNode.result.pendingReason !== '') {
|
225
|
+
specDescription = specDescription + ' PENDING WITH MESSAGE: ' + resultNode.result.pendingReason;
|
226
|
+
}
|
223
227
|
specListNode.appendChild(
|
224
228
|
createDom('li', {
|
225
229
|
className: resultNode.result.status,
|
@@ -267,7 +271,7 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|
267
271
|
function clearPrior() {
|
268
272
|
// return the reporter
|
269
273
|
var oldReporter = find('');
|
270
|
-
|
274
|
+
|
271
275
|
if(oldReporter) {
|
272
276
|
getContainer().removeChild(oldReporter);
|
273
277
|
}
|
@@ -306,7 +310,11 @@ jasmineRequire.HtmlReporter = function(j$) {
|
|
306
310
|
}
|
307
311
|
|
308
312
|
function specHref(result) {
|
309
|
-
return '
|
313
|
+
return addToExistingQueryString('spec', result.fullName);
|
314
|
+
}
|
315
|
+
|
316
|
+
function defaultQueryString(key, value) {
|
317
|
+
return '?' + key + '=' + value;
|
310
318
|
}
|
311
319
|
|
312
320
|
function setMenuModeTo(mode) {
|
@@ -358,10 +366,14 @@ jasmineRequire.ResultsNode = function() {
|
|
358
366
|
jasmineRequire.QueryString = function() {
|
359
367
|
function QueryString(options) {
|
360
368
|
|
361
|
-
this.
|
369
|
+
this.navigateWithNewParam = function(key, value) {
|
370
|
+
options.getWindowLocation().search = this.fullStringWithNewParam(key, value);
|
371
|
+
};
|
372
|
+
|
373
|
+
this.fullStringWithNewParam = function(key, value) {
|
362
374
|
var paramMap = queryStringToParamMap();
|
363
375
|
paramMap[key] = value;
|
364
|
-
|
376
|
+
return toQueryString(paramMap);
|
365
377
|
};
|
366
378
|
|
367
379
|
this.getParam = function(key) {
|
@@ -1,18 +1,18 @@
|
|
1
1
|
body { overflow-y: scroll; }
|
2
2
|
|
3
|
-
.jasmine_html-reporter { background-color: #
|
3
|
+
.jasmine_html-reporter { background-color: #eee; padding: 5px; margin: -8px; font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333; }
|
4
4
|
.jasmine_html-reporter a { text-decoration: none; }
|
5
5
|
.jasmine_html-reporter a:hover { text-decoration: underline; }
|
6
6
|
.jasmine_html-reporter p, .jasmine_html-reporter h1, .jasmine_html-reporter h2, .jasmine_html-reporter h3, .jasmine_html-reporter h4, .jasmine_html-reporter h5, .jasmine_html-reporter h6 { margin: 0; line-height: 14px; }
|
7
7
|
.jasmine_html-reporter .banner, .jasmine_html-reporter .symbol-summary, .jasmine_html-reporter .summary, .jasmine_html-reporter .result-message, .jasmine_html-reporter .spec .description, .jasmine_html-reporter .spec-detail .description, .jasmine_html-reporter .alert .bar, .jasmine_html-reporter .stack-trace { padding-left: 9px; padding-right: 9px; }
|
8
8
|
.jasmine_html-reporter .banner { position: relative; }
|
9
|
-
.jasmine_html-reporter .banner .title { background: url('data:image/png;base64,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') no-repeat; 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; -webkit-background-size: 100%; -moz-background-size: 100%; -o-background-size: 100%; background-size: 100%; display: block; float: left; width: 90px; height: 25px; }
|
9
|
+
.jasmine_html-reporter .banner .title { background: url('data:image/png;base64,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') no-repeat; 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; -moz-background-size: 100%; -o-background-size: 100%; -webkit-background-size: 100%; background-size: 100%; display: block; float: left; width: 90px; height: 25px; }
|
10
10
|
.jasmine_html-reporter .banner .version { margin-left: 14px; position: relative; top: 6px; }
|
11
11
|
.jasmine_html-reporter .banner .duration { position: absolute; right: 14px; top: 6px; }
|
12
12
|
.jasmine_html-reporter #jasmine_content { position: fixed; right: 100%; }
|
13
|
-
.jasmine_html-reporter .version { color: #
|
13
|
+
.jasmine_html-reporter .version { color: #aaa; }
|
14
14
|
.jasmine_html-reporter .banner { margin-top: 14px; }
|
15
|
-
.jasmine_html-reporter .duration { color: #
|
15
|
+
.jasmine_html-reporter .duration { color: #aaa; float: right; }
|
16
16
|
.jasmine_html-reporter .symbol-summary { overflow: hidden; *zoom: 1; margin: 14px 0; }
|
17
17
|
.jasmine_html-reporter .symbol-summary li { display: inline-block; height: 8px; width: 14px; font-size: 16px; }
|
18
18
|
.jasmine_html-reporter .symbol-summary li.passed { font-size: 14px; }
|
@@ -31,12 +31,12 @@ body { overflow-y: scroll; }
|
|
31
31
|
.jasmine_html-reporter .bar.passed { background-color: #007069; }
|
32
32
|
.jasmine_html-reporter .bar.skipped { background-color: #bababa; }
|
33
33
|
.jasmine_html-reporter .bar.errored { background-color: #ca3a11; }
|
34
|
-
.jasmine_html-reporter .bar.menu { background-color: #fff; color: #
|
35
|
-
.jasmine_html-reporter .bar.menu a { color: #
|
34
|
+
.jasmine_html-reporter .bar.menu { background-color: #fff; color: #aaa; }
|
35
|
+
.jasmine_html-reporter .bar.menu a { color: #333; }
|
36
36
|
.jasmine_html-reporter .bar a { color: white; }
|
37
37
|
.jasmine_html-reporter.spec-list .bar.menu.failure-list, .jasmine_html-reporter.spec-list .results .failures { display: none; }
|
38
38
|
.jasmine_html-reporter.failure-list .bar.menu.spec-list, .jasmine_html-reporter.failure-list .summary { display: none; }
|
39
|
-
.jasmine_html-reporter .running-alert { background-color: #
|
39
|
+
.jasmine_html-reporter .running-alert { background-color: #666; }
|
40
40
|
.jasmine_html-reporter .results { margin-top: 14px; }
|
41
41
|
.jasmine_html-reporter.showDetails .summaryMenuItem { font-weight: normal; text-decoration: inherit; }
|
42
42
|
.jasmine_html-reporter.showDetails .summaryMenuItem:hover { text-decoration: underline; }
|
@@ -53,10 +53,10 @@ body { overflow-y: scroll; }
|
|
53
53
|
.jasmine_html-reporter .summary li.pending a { color: #ba9d37; }
|
54
54
|
.jasmine_html-reporter .description + .suite { margin-top: 0; }
|
55
55
|
.jasmine_html-reporter .suite { margin-top: 14px; }
|
56
|
-
.jasmine_html-reporter .suite a { color: #
|
56
|
+
.jasmine_html-reporter .suite a { color: #333; }
|
57
57
|
.jasmine_html-reporter .failures .spec-detail { margin-bottom: 28px; }
|
58
58
|
.jasmine_html-reporter .failures .spec-detail .description { background-color: #ca3a11; }
|
59
59
|
.jasmine_html-reporter .failures .spec-detail .description a { color: white; }
|
60
|
-
.jasmine_html-reporter .result-message { padding-top: 14px; color: #
|
60
|
+
.jasmine_html-reporter .result-message { padding-top: 14px; color: #333; white-space: pre; }
|
61
61
|
.jasmine_html-reporter .result-message span.result { display: block; }
|
62
|
-
.jasmine_html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #
|
62
|
+
.jasmine_html-reporter .stack-trace { margin: 5px 0 0 0; max-height: 224px; overflow: auto; line-height: 18px; color: #666; border: 1px solid #ddd; background: white; white-space: pre; }
|
data/lib/jasmine-core/jasmine.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
Copyright (c) 2008-
|
2
|
+
Copyright (c) 2008-2015 Pivotal Labs
|
3
3
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining
|
5
5
|
a copy of this software and associated documentation files (the
|
@@ -20,13 +20,16 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
20
20
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
*/
|
23
|
-
getJasmineRequireObj = (function (jasmineGlobal) {
|
23
|
+
var getJasmineRequireObj = (function (jasmineGlobal) {
|
24
24
|
var jasmineRequire;
|
25
25
|
|
26
26
|
if (typeof module !== 'undefined' && module.exports) {
|
27
27
|
jasmineGlobal = global;
|
28
28
|
jasmineRequire = exports;
|
29
29
|
} else {
|
30
|
+
if (typeof window !== 'undefined' && typeof window.toString === 'function' && window.toString() === '[object GjsGlobal]') {
|
31
|
+
jasmineGlobal = window;
|
32
|
+
}
|
30
33
|
jasmineRequire = jasmineGlobal.jasmineRequire = jasmineGlobal.jasmineRequire || {};
|
31
34
|
}
|
32
35
|
|
@@ -40,6 +43,7 @@ getJasmineRequireObj = (function (jasmineGlobal) {
|
|
40
43
|
jRequire.base(j$, jasmineGlobal);
|
41
44
|
j$.util = jRequire.util();
|
42
45
|
j$.Any = jRequire.Any();
|
46
|
+
j$.Anything = jRequire.Anything(j$);
|
43
47
|
j$.CallTracker = jRequire.CallTracker();
|
44
48
|
j$.MockDate = jRequire.MockDate();
|
45
49
|
j$.Clock = jRequire.Clock();
|
@@ -51,12 +55,14 @@ getJasmineRequireObj = (function (jasmineGlobal) {
|
|
51
55
|
j$.JsApiReporter = jRequire.JsApiReporter();
|
52
56
|
j$.matchersUtil = jRequire.matchersUtil(j$);
|
53
57
|
j$.ObjectContaining = jRequire.ObjectContaining(j$);
|
58
|
+
j$.ArrayContaining = jRequire.ArrayContaining(j$);
|
54
59
|
j$.pp = jRequire.pp(j$);
|
55
60
|
j$.QueueRunner = jRequire.QueueRunner(j$);
|
56
61
|
j$.ReportDispatcher = jRequire.ReportDispatcher();
|
57
62
|
j$.Spec = jRequire.Spec(j$);
|
58
63
|
j$.SpyRegistry = jRequire.SpyRegistry(j$);
|
59
64
|
j$.SpyStrategy = jRequire.SpyStrategy();
|
65
|
+
j$.StringMatching = jRequire.StringMatching(j$);
|
60
66
|
j$.Suite = jRequire.Suite();
|
61
67
|
j$.Timer = jRequire.Timer();
|
62
68
|
j$.version = jRequire.version();
|
@@ -138,14 +144,30 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
|
|
138
144
|
return obj.nodeType > 0;
|
139
145
|
};
|
140
146
|
|
147
|
+
j$.fnNameFor = function(func) {
|
148
|
+
return func.name || func.toString().match(/^\s*function\s*(\w*)\s*\(/)[1];
|
149
|
+
};
|
150
|
+
|
141
151
|
j$.any = function(clazz) {
|
142
152
|
return new j$.Any(clazz);
|
143
153
|
};
|
144
154
|
|
155
|
+
j$.anything = function() {
|
156
|
+
return new j$.Anything();
|
157
|
+
};
|
158
|
+
|
145
159
|
j$.objectContaining = function(sample) {
|
146
160
|
return new j$.ObjectContaining(sample);
|
147
161
|
};
|
148
162
|
|
163
|
+
j$.stringMatching = function(expected) {
|
164
|
+
return new j$.StringMatching(expected);
|
165
|
+
};
|
166
|
+
|
167
|
+
j$.arrayContaining = function(sample) {
|
168
|
+
return new j$.ArrayContaining(sample);
|
169
|
+
};
|
170
|
+
|
149
171
|
j$.createSpy = function(name, originalFn) {
|
150
172
|
|
151
173
|
var spyStrategy = new j$.SpyStrategy({
|
@@ -190,6 +212,11 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
|
|
190
212
|
};
|
191
213
|
|
192
214
|
j$.createSpyObj = function(baseName, methodNames) {
|
215
|
+
if (j$.isArray_(baseName) && j$.util.isUndefined(methodNames)) {
|
216
|
+
methodNames = baseName;
|
217
|
+
baseName = 'unknown';
|
218
|
+
}
|
219
|
+
|
193
220
|
if (!j$.isArray_(methodNames) || methodNames.length === 0) {
|
194
221
|
throw 'createSpyObj requires a non-empty array of method names to create spies for';
|
195
222
|
}
|
@@ -285,7 +312,8 @@ getJasmineRequireObj().Spec = function(j$) {
|
|
285
312
|
description: this.description,
|
286
313
|
fullName: this.getFullName(),
|
287
314
|
failedExpectations: [],
|
288
|
-
passedExpectations: []
|
315
|
+
passedExpectations: [],
|
316
|
+
pendingReason: ''
|
289
317
|
};
|
290
318
|
}
|
291
319
|
|
@@ -334,7 +362,7 @@ getJasmineRequireObj().Spec = function(j$) {
|
|
334
362
|
|
335
363
|
Spec.prototype.onException = function onException(e) {
|
336
364
|
if (Spec.isPendingSpecException(e)) {
|
337
|
-
this.pend();
|
365
|
+
this.pend(extractCustomPendingMessage(e));
|
338
366
|
return;
|
339
367
|
}
|
340
368
|
|
@@ -351,8 +379,11 @@ getJasmineRequireObj().Spec = function(j$) {
|
|
351
379
|
this.disabled = true;
|
352
380
|
};
|
353
381
|
|
354
|
-
Spec.prototype.pend = function() {
|
382
|
+
Spec.prototype.pend = function(message) {
|
355
383
|
this.markedPending = true;
|
384
|
+
if (message) {
|
385
|
+
this.result.pendingReason = message;
|
386
|
+
}
|
356
387
|
};
|
357
388
|
|
358
389
|
Spec.prototype.status = function() {
|
@@ -379,6 +410,14 @@ getJasmineRequireObj().Spec = function(j$) {
|
|
379
410
|
return this.getSpecName(this);
|
380
411
|
};
|
381
412
|
|
413
|
+
var extractCustomPendingMessage = function(e) {
|
414
|
+
var fullMessage = e.toString(),
|
415
|
+
boilerplateStart = fullMessage.indexOf(Spec.pendingSpecExceptionMessage),
|
416
|
+
boilerplateEnd = boilerplateStart + Spec.pendingSpecExceptionMessage.length;
|
417
|
+
|
418
|
+
return fullMessage.substr(boilerplateEnd);
|
419
|
+
};
|
420
|
+
|
382
421
|
Spec.pendingSpecExceptionMessage = '=> marked Pending';
|
383
422
|
|
384
423
|
Spec.isPendingSpecException = function(e) {
|
@@ -631,11 +670,12 @@ getJasmineRequireObj().Env = function(j$) {
|
|
631
670
|
onStart: suiteStarted,
|
632
671
|
expectationFactory: expectationFactory,
|
633
672
|
expectationResultFactory: expectationResultFactory,
|
673
|
+
runnablesExplictlySetGetter: runnablesExplictlySetGetter,
|
634
674
|
resultCallback: function(attrs) {
|
635
675
|
if (!suite.disabled) {
|
636
676
|
clearResourcesForRunnable(suite.id);
|
637
|
-
currentlyExecutingSuites.pop();
|
638
677
|
}
|
678
|
+
currentlyExecutingSuites.pop();
|
639
679
|
reporter.suiteDone(attrs);
|
640
680
|
}
|
641
681
|
});
|
@@ -823,8 +863,12 @@ getJasmineRequireObj().Env = function(j$) {
|
|
823
863
|
});
|
824
864
|
};
|
825
865
|
|
826
|
-
this.pending = function() {
|
827
|
-
|
866
|
+
this.pending = function(message) {
|
867
|
+
var fullMessage = j$.Spec.pendingSpecExceptionMessage;
|
868
|
+
if(message) {
|
869
|
+
fullMessage += message;
|
870
|
+
}
|
871
|
+
throw fullMessage;
|
828
872
|
};
|
829
873
|
|
830
874
|
this.fail = function(error) {
|
@@ -839,7 +883,8 @@ getJasmineRequireObj().Env = function(j$) {
|
|
839
883
|
passed: false,
|
840
884
|
expected: '',
|
841
885
|
actual: '',
|
842
|
-
message: message
|
886
|
+
message: message,
|
887
|
+
error: error && error.message ? error : null
|
843
888
|
});
|
844
889
|
};
|
845
890
|
}
|
@@ -926,43 +971,6 @@ getJasmineRequireObj().JsApiReporter = function() {
|
|
926
971
|
return JsApiReporter;
|
927
972
|
};
|
928
973
|
|
929
|
-
getJasmineRequireObj().Any = function() {
|
930
|
-
|
931
|
-
function Any(expectedObject) {
|
932
|
-
this.expectedObject = expectedObject;
|
933
|
-
}
|
934
|
-
|
935
|
-
Any.prototype.jasmineMatches = function(other) {
|
936
|
-
if (this.expectedObject == String) {
|
937
|
-
return typeof other == 'string' || other instanceof String;
|
938
|
-
}
|
939
|
-
|
940
|
-
if (this.expectedObject == Number) {
|
941
|
-
return typeof other == 'number' || other instanceof Number;
|
942
|
-
}
|
943
|
-
|
944
|
-
if (this.expectedObject == Function) {
|
945
|
-
return typeof other == 'function' || other instanceof Function;
|
946
|
-
}
|
947
|
-
|
948
|
-
if (this.expectedObject == Object) {
|
949
|
-
return typeof other == 'object';
|
950
|
-
}
|
951
|
-
|
952
|
-
if (this.expectedObject == Boolean) {
|
953
|
-
return typeof other == 'boolean';
|
954
|
-
}
|
955
|
-
|
956
|
-
return other instanceof this.expectedObject;
|
957
|
-
};
|
958
|
-
|
959
|
-
Any.prototype.jasmineToString = function() {
|
960
|
-
return '<jasmine.any(' + this.expectedObject + ')>';
|
961
|
-
};
|
962
|
-
|
963
|
-
return Any;
|
964
|
-
};
|
965
|
-
|
966
974
|
getJasmineRequireObj().CallTracker = function() {
|
967
975
|
|
968
976
|
function CallTracker() {
|
@@ -1244,6 +1252,12 @@ getJasmineRequireObj().DelayedFunctionScheduler = function() {
|
|
1244
1252
|
scheduledFn.runAtMillis + scheduledFn.millis);
|
1245
1253
|
}
|
1246
1254
|
|
1255
|
+
function forEachFunction(funcsToRun, callback) {
|
1256
|
+
for (var i = 0; i < funcsToRun.length; ++i) {
|
1257
|
+
callback(funcsToRun[i]);
|
1258
|
+
}
|
1259
|
+
}
|
1260
|
+
|
1247
1261
|
function runScheduledFunctions(endTime) {
|
1248
1262
|
if (scheduledLookup.length === 0 || scheduledLookup[0] > endTime) {
|
1249
1263
|
return;
|
@@ -1255,15 +1269,15 @@ getJasmineRequireObj().DelayedFunctionScheduler = function() {
|
|
1255
1269
|
var funcsToRun = scheduledFunctions[currentTime];
|
1256
1270
|
delete scheduledFunctions[currentTime];
|
1257
1271
|
|
1258
|
-
|
1259
|
-
var funcToRun = funcsToRun[i];
|
1260
|
-
|
1272
|
+
forEachFunction(funcsToRun, function(funcToRun) {
|
1261
1273
|
if (funcToRun.recurring) {
|
1262
1274
|
reschedule(funcToRun);
|
1263
1275
|
}
|
1276
|
+
});
|
1264
1277
|
|
1278
|
+
forEachFunction(funcsToRun, function(funcToRun) {
|
1265
1279
|
funcToRun.funcToCall.apply(null, funcToRun.params || []);
|
1266
|
-
}
|
1280
|
+
});
|
1267
1281
|
} while (scheduledLookup.length > 0 &&
|
1268
1282
|
// checking first if we're out of time prevents setTimeout(0)
|
1269
1283
|
// scheduled in a funcToRun from forcing an extra iteration
|
@@ -1506,7 +1520,7 @@ getJasmineRequireObj().MockDate = function() {
|
|
1506
1520
|
case 6:
|
1507
1521
|
return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3],
|
1508
1522
|
arguments[4], arguments[5]);
|
1509
|
-
|
1523
|
+
default:
|
1510
1524
|
return new GlobalDate(arguments[0], arguments[1], arguments[2], arguments[3],
|
1511
1525
|
arguments[4], arguments[5], arguments[6]);
|
1512
1526
|
}
|
@@ -1533,41 +1547,6 @@ getJasmineRequireObj().MockDate = function() {
|
|
1533
1547
|
return MockDate;
|
1534
1548
|
};
|
1535
1549
|
|
1536
|
-
getJasmineRequireObj().ObjectContaining = function(j$) {
|
1537
|
-
|
1538
|
-
function ObjectContaining(sample) {
|
1539
|
-
this.sample = sample;
|
1540
|
-
}
|
1541
|
-
|
1542
|
-
ObjectContaining.prototype.jasmineMatches = function(other, mismatchKeys, mismatchValues) {
|
1543
|
-
if (typeof(this.sample) !== 'object') { throw new Error('You must provide an object to objectContaining, not \''+this.sample+'\'.'); }
|
1544
|
-
|
1545
|
-
mismatchKeys = mismatchKeys || [];
|
1546
|
-
mismatchValues = mismatchValues || [];
|
1547
|
-
|
1548
|
-
var hasKey = function(obj, keyName) {
|
1549
|
-
return obj !== null && !j$.util.isUndefined(obj[keyName]);
|
1550
|
-
};
|
1551
|
-
|
1552
|
-
for (var property in this.sample) {
|
1553
|
-
if (!hasKey(other, property) && hasKey(this.sample, property)) {
|
1554
|
-
mismatchKeys.push('expected has key \'' + property + '\', but missing from actual.');
|
1555
|
-
}
|
1556
|
-
else if (!j$.matchersUtil.equals(other[property], this.sample[property])) {
|
1557
|
-
mismatchValues.push('\'' + property + '\' was \'' + (other[property] ? j$.util.htmlEscape(other[property].toString()) : other[property]) + '\' in actual, but was \'' + (this.sample[property] ? j$.util.htmlEscape(this.sample[property].toString()) : this.sample[property]) + '\' in expected.');
|
1558
|
-
}
|
1559
|
-
}
|
1560
|
-
|
1561
|
-
return (mismatchKeys.length === 0 && mismatchValues.length === 0);
|
1562
|
-
};
|
1563
|
-
|
1564
|
-
ObjectContaining.prototype.jasmineToString = function() {
|
1565
|
-
return '<jasmine.objectContaining(' + j$.pp(this.sample) + ')>';
|
1566
|
-
};
|
1567
|
-
|
1568
|
-
return ObjectContaining;
|
1569
|
-
};
|
1570
|
-
|
1571
1550
|
getJasmineRequireObj().pp = function(j$) {
|
1572
1551
|
|
1573
1552
|
function PrettyPrinter() {
|
@@ -1667,13 +1646,15 @@ getJasmineRequireObj().pp = function(j$) {
|
|
1667
1646
|
};
|
1668
1647
|
|
1669
1648
|
StringPrettyPrinter.prototype.emitObject = function(obj) {
|
1649
|
+
var constructorName = obj.constructor ? j$.fnNameFor(obj.constructor) : 'null';
|
1650
|
+
this.append(constructorName);
|
1651
|
+
|
1670
1652
|
if (this.ppNestLevel_ > j$.MAX_PRETTY_PRINT_DEPTH) {
|
1671
|
-
this.append('Object');
|
1672
1653
|
return;
|
1673
1654
|
}
|
1674
1655
|
|
1675
1656
|
var self = this;
|
1676
|
-
this.append('{ ');
|
1657
|
+
this.append('({ ');
|
1677
1658
|
var first = true;
|
1678
1659
|
|
1679
1660
|
this.iterateObject(obj, function(property, isGetter) {
|
@@ -1692,7 +1673,7 @@ getJasmineRequireObj().pp = function(j$) {
|
|
1692
1673
|
}
|
1693
1674
|
});
|
1694
1675
|
|
1695
|
-
this.append(' }');
|
1676
|
+
this.append(' })');
|
1696
1677
|
};
|
1697
1678
|
|
1698
1679
|
StringPrettyPrinter.prototype.append = function(value) {
|
@@ -1742,7 +1723,8 @@ getJasmineRequireObj().QueueRunner = function(j$) {
|
|
1742
1723
|
for(iterativeIndex = recursiveIndex; iterativeIndex < length; iterativeIndex++) {
|
1743
1724
|
var queueableFn = queueableFns[iterativeIndex];
|
1744
1725
|
if (queueableFn.fn.length > 0) {
|
1745
|
-
|
1726
|
+
attemptAsync(queueableFn);
|
1727
|
+
return;
|
1746
1728
|
} else {
|
1747
1729
|
attemptSync(queueableFn);
|
1748
1730
|
}
|
@@ -1857,6 +1839,10 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
|
|
1857
1839
|
throw new Error('spyOn could not find an object to spy upon for ' + methodName + '()');
|
1858
1840
|
}
|
1859
1841
|
|
1842
|
+
if (j$.util.isUndefined(methodName)) {
|
1843
|
+
throw new Error('No method name supplied');
|
1844
|
+
}
|
1845
|
+
|
1860
1846
|
if (j$.util.isUndefined(obj[methodName])) {
|
1861
1847
|
throw new Error(methodName + '() method does not exist');
|
1862
1848
|
}
|
@@ -1963,6 +1949,7 @@ getJasmineRequireObj().Suite = function() {
|
|
1963
1949
|
this.clearStack = attrs.clearStack || function(fn) {fn();};
|
1964
1950
|
this.expectationFactory = attrs.expectationFactory;
|
1965
1951
|
this.expectationResultFactory = attrs.expectationResultFactory;
|
1952
|
+
this.runnablesExplictlySetGetter = attrs.runnablesExplictlySetGetter || function() {};
|
1966
1953
|
|
1967
1954
|
this.beforeFns = [];
|
1968
1955
|
this.afterFns = [];
|
@@ -2074,14 +2061,8 @@ getJasmineRequireObj().Suite = function() {
|
|
2074
2061
|
};
|
2075
2062
|
|
2076
2063
|
Suite.prototype.isExecutable = function() {
|
2077
|
-
var
|
2078
|
-
|
2079
|
-
if(this.children[i].isExecutable()) {
|
2080
|
-
foundActive = true;
|
2081
|
-
break;
|
2082
|
-
}
|
2083
|
-
}
|
2084
|
-
return foundActive;
|
2064
|
+
var runnablesExplicitlySet = this.runnablesExplictlySetGetter();
|
2065
|
+
return !runnablesExplicitlySet && hasExecutableChild(this.children);
|
2085
2066
|
};
|
2086
2067
|
|
2087
2068
|
Suite.prototype.sharedUserContext = function() {
|
@@ -2134,6 +2115,17 @@ getJasmineRequireObj().Suite = function() {
|
|
2134
2115
|
return !args[0];
|
2135
2116
|
}
|
2136
2117
|
|
2118
|
+
function hasExecutableChild(children) {
|
2119
|
+
var foundActive = false;
|
2120
|
+
for (var i = 0; i < children.length; i++) {
|
2121
|
+
if (children[i].isExecutable()) {
|
2122
|
+
foundActive = true;
|
2123
|
+
break;
|
2124
|
+
}
|
2125
|
+
}
|
2126
|
+
return foundActive;
|
2127
|
+
}
|
2128
|
+
|
2137
2129
|
function clone(obj) {
|
2138
2130
|
var clonedObj = {};
|
2139
2131
|
for (var prop in obj) {
|
@@ -2175,6 +2167,131 @@ getJasmineRequireObj().Timer = function() {
|
|
2175
2167
|
return Timer;
|
2176
2168
|
};
|
2177
2169
|
|
2170
|
+
getJasmineRequireObj().Any = function() {
|
2171
|
+
|
2172
|
+
function Any(expectedObject) {
|
2173
|
+
this.expectedObject = expectedObject;
|
2174
|
+
}
|
2175
|
+
|
2176
|
+
Any.prototype.asymmetricMatch = function(other) {
|
2177
|
+
if (this.expectedObject == String) {
|
2178
|
+
return typeof other == 'string' || other instanceof String;
|
2179
|
+
}
|
2180
|
+
|
2181
|
+
if (this.expectedObject == Number) {
|
2182
|
+
return typeof other == 'number' || other instanceof Number;
|
2183
|
+
}
|
2184
|
+
|
2185
|
+
if (this.expectedObject == Function) {
|
2186
|
+
return typeof other == 'function' || other instanceof Function;
|
2187
|
+
}
|
2188
|
+
|
2189
|
+
if (this.expectedObject == Object) {
|
2190
|
+
return typeof other == 'object';
|
2191
|
+
}
|
2192
|
+
|
2193
|
+
if (this.expectedObject == Boolean) {
|
2194
|
+
return typeof other == 'boolean';
|
2195
|
+
}
|
2196
|
+
|
2197
|
+
return other instanceof this.expectedObject;
|
2198
|
+
};
|
2199
|
+
|
2200
|
+
Any.prototype.jasmineToString = function() {
|
2201
|
+
return '<jasmine.any(' + this.expectedObject + ')>';
|
2202
|
+
};
|
2203
|
+
|
2204
|
+
return Any;
|
2205
|
+
};
|
2206
|
+
|
2207
|
+
getJasmineRequireObj().Anything = function(j$) {
|
2208
|
+
|
2209
|
+
function Anything() {}
|
2210
|
+
|
2211
|
+
Anything.prototype.asymmetricMatch = function(other) {
|
2212
|
+
return !j$.util.isUndefined(other) && other !== null;
|
2213
|
+
};
|
2214
|
+
|
2215
|
+
Anything.prototype.jasmineToString = function() {
|
2216
|
+
return '<jasmine.anything>';
|
2217
|
+
};
|
2218
|
+
|
2219
|
+
return Anything;
|
2220
|
+
};
|
2221
|
+
|
2222
|
+
getJasmineRequireObj().ArrayContaining = function(j$) {
|
2223
|
+
function ArrayContaining(sample) {
|
2224
|
+
this.sample = sample;
|
2225
|
+
}
|
2226
|
+
|
2227
|
+
ArrayContaining.prototype.asymmetricMatch = function(other) {
|
2228
|
+
var className = Object.prototype.toString.call(this.sample);
|
2229
|
+
if (className !== '[object Array]') { throw new Error('You must provide an array to arrayContaining, not \'' + this.sample + '\'.'); }
|
2230
|
+
|
2231
|
+
for (var i = 0; i < this.sample.length; i++) {
|
2232
|
+
var item = this.sample[i];
|
2233
|
+
if (!j$.matchersUtil.contains(other, item)) {
|
2234
|
+
return false;
|
2235
|
+
}
|
2236
|
+
}
|
2237
|
+
|
2238
|
+
return true;
|
2239
|
+
};
|
2240
|
+
|
2241
|
+
ArrayContaining.prototype.jasmineToString = function () {
|
2242
|
+
return '<jasmine.arrayContaining(' + jasmine.pp(this.sample) +')>';
|
2243
|
+
};
|
2244
|
+
|
2245
|
+
return ArrayContaining;
|
2246
|
+
};
|
2247
|
+
|
2248
|
+
getJasmineRequireObj().ObjectContaining = function(j$) {
|
2249
|
+
|
2250
|
+
function ObjectContaining(sample) {
|
2251
|
+
this.sample = sample;
|
2252
|
+
}
|
2253
|
+
|
2254
|
+
ObjectContaining.prototype.asymmetricMatch = function(other) {
|
2255
|
+
if (typeof(this.sample) !== 'object') { throw new Error('You must provide an object to objectContaining, not \''+this.sample+'\'.'); }
|
2256
|
+
|
2257
|
+
for (var property in this.sample) {
|
2258
|
+
if (!Object.prototype.hasOwnProperty.call(other, property) ||
|
2259
|
+
!j$.matchersUtil.equals(this.sample[property], other[property])) {
|
2260
|
+
return false;
|
2261
|
+
}
|
2262
|
+
}
|
2263
|
+
|
2264
|
+
return true;
|
2265
|
+
};
|
2266
|
+
|
2267
|
+
ObjectContaining.prototype.jasmineToString = function() {
|
2268
|
+
return '<jasmine.objectContaining(' + j$.pp(this.sample) + ')>';
|
2269
|
+
};
|
2270
|
+
|
2271
|
+
return ObjectContaining;
|
2272
|
+
};
|
2273
|
+
|
2274
|
+
getJasmineRequireObj().StringMatching = function(j$) {
|
2275
|
+
|
2276
|
+
function StringMatching(expected) {
|
2277
|
+
if (!j$.isString_(expected) && !j$.isA_('RegExp', expected)) {
|
2278
|
+
throw new Error('Expected is not a String or a RegExp');
|
2279
|
+
}
|
2280
|
+
|
2281
|
+
this.regexp = new RegExp(expected);
|
2282
|
+
}
|
2283
|
+
|
2284
|
+
StringMatching.prototype.asymmetricMatch = function(other) {
|
2285
|
+
return this.regexp.test(other);
|
2286
|
+
};
|
2287
|
+
|
2288
|
+
StringMatching.prototype.jasmineToString = function() {
|
2289
|
+
return '<jasmine.stringMatching(' + this.regexp + ')>';
|
2290
|
+
};
|
2291
|
+
|
2292
|
+
return StringMatching;
|
2293
|
+
};
|
2294
|
+
|
2178
2295
|
getJasmineRequireObj().matchersUtil = function(j$) {
|
2179
2296
|
// TODO: what to do about jasmine.pp not being inject? move to JSON.stringify? gut PrettyPrinter?
|
2180
2297
|
|
@@ -2228,11 +2345,37 @@ getJasmineRequireObj().matchersUtil = function(j$) {
|
|
2228
2345
|
}
|
2229
2346
|
};
|
2230
2347
|
|
2348
|
+
function isAsymmetric(obj) {
|
2349
|
+
return obj && j$.isA_('Function', obj.asymmetricMatch);
|
2350
|
+
}
|
2351
|
+
|
2352
|
+
function asymmetricMatch(a, b) {
|
2353
|
+
var asymmetricA = isAsymmetric(a),
|
2354
|
+
asymmetricB = isAsymmetric(b);
|
2355
|
+
|
2356
|
+
if (asymmetricA && asymmetricB) {
|
2357
|
+
return undefined;
|
2358
|
+
}
|
2359
|
+
|
2360
|
+
if (asymmetricA) {
|
2361
|
+
return a.asymmetricMatch(b);
|
2362
|
+
}
|
2363
|
+
|
2364
|
+
if (asymmetricB) {
|
2365
|
+
return b.asymmetricMatch(a);
|
2366
|
+
}
|
2367
|
+
}
|
2368
|
+
|
2231
2369
|
// Equality function lovingly adapted from isEqual in
|
2232
2370
|
// [Underscore](http://underscorejs.org)
|
2233
2371
|
function eq(a, b, aStack, bStack, customTesters) {
|
2234
2372
|
var result = true;
|
2235
2373
|
|
2374
|
+
var asymmetricResult = asymmetricMatch(a, b);
|
2375
|
+
if (!j$.util.isUndefined(asymmetricResult)) {
|
2376
|
+
return asymmetricResult;
|
2377
|
+
}
|
2378
|
+
|
2236
2379
|
for (var i = 0; i < customTesters.length; i++) {
|
2237
2380
|
var customTesterResult = customTesters[i](a, b);
|
2238
2381
|
if (!j$.util.isUndefined(customTesterResult)) {
|
@@ -2240,27 +2383,6 @@ getJasmineRequireObj().matchersUtil = function(j$) {
|
|
2240
2383
|
}
|
2241
2384
|
}
|
2242
2385
|
|
2243
|
-
if (a instanceof j$.Any) {
|
2244
|
-
result = a.jasmineMatches(b);
|
2245
|
-
if (result) {
|
2246
|
-
return true;
|
2247
|
-
}
|
2248
|
-
}
|
2249
|
-
|
2250
|
-
if (b instanceof j$.Any) {
|
2251
|
-
result = b.jasmineMatches(a);
|
2252
|
-
if (result) {
|
2253
|
-
return true;
|
2254
|
-
}
|
2255
|
-
}
|
2256
|
-
|
2257
|
-
if (b instanceof j$.ObjectContaining) {
|
2258
|
-
result = b.jasmineMatches(a);
|
2259
|
-
if (result) {
|
2260
|
-
return true;
|
2261
|
-
}
|
2262
|
-
}
|
2263
|
-
|
2264
2386
|
if (a instanceof Error && b instanceof Error) {
|
2265
2387
|
return a.message == b.message;
|
2266
2388
|
}
|
@@ -2296,6 +2418,29 @@ getJasmineRequireObj().matchersUtil = function(j$) {
|
|
2296
2418
|
a.ignoreCase == b.ignoreCase;
|
2297
2419
|
}
|
2298
2420
|
if (typeof a != 'object' || typeof b != 'object') { return false; }
|
2421
|
+
|
2422
|
+
var aIsDomNode = j$.isDomNode(a);
|
2423
|
+
var bIsDomNode = j$.isDomNode(b);
|
2424
|
+
if (aIsDomNode && bIsDomNode) {
|
2425
|
+
// At first try to use DOM3 method isEqualNode
|
2426
|
+
if (a.isEqualNode) {
|
2427
|
+
return a.isEqualNode(b);
|
2428
|
+
}
|
2429
|
+
// IE8 doesn't support isEqualNode, try to use outerHTML && innerText
|
2430
|
+
var aIsElement = a instanceof Element;
|
2431
|
+
var bIsElement = b instanceof Element;
|
2432
|
+
if (aIsElement && bIsElement) {
|
2433
|
+
return a.outerHTML == b.outerHTML;
|
2434
|
+
}
|
2435
|
+
if (aIsElement || bIsElement) {
|
2436
|
+
return false;
|
2437
|
+
}
|
2438
|
+
return a.innerText == b.innerText && a.textContent == b.textContent;
|
2439
|
+
}
|
2440
|
+
if (aIsDomNode || bIsDomNode) {
|
2441
|
+
return false;
|
2442
|
+
}
|
2443
|
+
|
2299
2444
|
// Assume equality for cyclic structures. The algorithm for detecting cyclic
|
2300
2445
|
// structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
|
2301
2446
|
var length = aStack.length;
|
@@ -2309,17 +2454,12 @@ getJasmineRequireObj().matchersUtil = function(j$) {
|
|
2309
2454
|
bStack.push(b);
|
2310
2455
|
var size = 0;
|
2311
2456
|
// Recursively compare objects and arrays.
|
2312
|
-
if
|
2313
|
-
|
2314
|
-
|
2315
|
-
|
2316
|
-
|
2317
|
-
|
2318
|
-
while (size--) {
|
2319
|
-
if (!(result = eq(a[size], b[size], aStack, bStack, customTesters))) { break; }
|
2320
|
-
}
|
2321
|
-
}
|
2322
|
-
} else {
|
2457
|
+
// Compare array lengths to determine if a deep comparison is necessary.
|
2458
|
+
if (className == '[object Array]' && a.length !== b.length) {
|
2459
|
+
result = false;
|
2460
|
+
}
|
2461
|
+
|
2462
|
+
if (result) {
|
2323
2463
|
// Objects with different constructors are not equivalent, but `Object`s
|
2324
2464
|
// from different frames are.
|
2325
2465
|
var aCtor = a.constructor, bCtor = b.constructor;
|
@@ -2351,7 +2491,7 @@ getJasmineRequireObj().matchersUtil = function(j$) {
|
|
2351
2491
|
return result;
|
2352
2492
|
|
2353
2493
|
function has(obj, key) {
|
2354
|
-
return
|
2494
|
+
return Object.prototype.hasOwnProperty.call(obj, key);
|
2355
2495
|
}
|
2356
2496
|
|
2357
2497
|
function isFunction(obj) {
|
@@ -2620,11 +2760,15 @@ getJasmineRequireObj().toHaveBeenCalledWith = function(j$) {
|
|
2620
2760
|
return toHaveBeenCalledWith;
|
2621
2761
|
};
|
2622
2762
|
|
2623
|
-
getJasmineRequireObj().toMatch = function() {
|
2763
|
+
getJasmineRequireObj().toMatch = function(j$) {
|
2624
2764
|
|
2625
2765
|
function toMatch() {
|
2626
2766
|
return {
|
2627
2767
|
compare: function(actual, expected) {
|
2768
|
+
if (!j$.isString_(expected) && !j$.isA_('RegExp', expected)) {
|
2769
|
+
throw new Error('Expected is not a String or a RegExp');
|
2770
|
+
}
|
2771
|
+
|
2628
2772
|
var regexp = new RegExp(expected);
|
2629
2773
|
|
2630
2774
|
return {
|
@@ -2717,7 +2861,7 @@ getJasmineRequireObj().toThrowError = function(j$) {
|
|
2717
2861
|
}
|
2718
2862
|
|
2719
2863
|
if (errorMatcher.hasNoSpecifics()) {
|
2720
|
-
pass.message = 'Expected function not to throw an Error, but it threw ' + fnNameFor(thrown) + '.';
|
2864
|
+
pass.message = 'Expected function not to throw an Error, but it threw ' + j$.fnNameFor(thrown) + '.';
|
2721
2865
|
return pass;
|
2722
2866
|
}
|
2723
2867
|
|
@@ -2771,9 +2915,9 @@ getJasmineRequireObj().toThrowError = function(j$) {
|
|
2771
2915
|
}
|
2772
2916
|
|
2773
2917
|
return {
|
2774
|
-
errorTypeDescription: errorType ? fnNameFor(errorType) : 'an exception',
|
2918
|
+
errorTypeDescription: errorType ? j$.fnNameFor(errorType) : 'an exception',
|
2775
2919
|
thrownDescription: function(thrown) {
|
2776
|
-
var thrownName = errorType ? fnNameFor(thrown.constructor) : 'an exception',
|
2920
|
+
var thrownName = errorType ? j$.fnNameFor(thrown.constructor) : 'an exception',
|
2777
2921
|
thrownMessage = '';
|
2778
2922
|
|
2779
2923
|
if (expected) {
|
@@ -2801,10 +2945,6 @@ getJasmineRequireObj().toThrowError = function(j$) {
|
|
2801
2945
|
};
|
2802
2946
|
}
|
2803
2947
|
|
2804
|
-
function fnNameFor(func) {
|
2805
|
-
return func.name || func.toString().match(/^\s*function\s*(\w*)\s*\(/)[1];
|
2806
|
-
}
|
2807
|
-
|
2808
2948
|
function isStringOrRegExp(potential) {
|
2809
2949
|
return potential instanceof RegExp || (typeof potential == 'string');
|
2810
2950
|
}
|
@@ -2837,32 +2977,32 @@ getJasmineRequireObj().interface = function(jasmine, env) {
|
|
2837
2977
|
return env.fdescribe(description, specDefinitions);
|
2838
2978
|
},
|
2839
2979
|
|
2840
|
-
it: function(
|
2841
|
-
return env.it(
|
2980
|
+
it: function() {
|
2981
|
+
return env.it.apply(env, arguments);
|
2842
2982
|
},
|
2843
2983
|
|
2844
|
-
xit: function(
|
2845
|
-
return env.xit(
|
2984
|
+
xit: function() {
|
2985
|
+
return env.xit.apply(env, arguments);
|
2846
2986
|
},
|
2847
2987
|
|
2848
|
-
fit: function(
|
2849
|
-
return env.fit(
|
2988
|
+
fit: function() {
|
2989
|
+
return env.fit.apply(env, arguments);
|
2850
2990
|
},
|
2851
2991
|
|
2852
|
-
beforeEach: function(
|
2853
|
-
return env.beforeEach(
|
2992
|
+
beforeEach: function() {
|
2993
|
+
return env.beforeEach.apply(env, arguments);
|
2854
2994
|
},
|
2855
2995
|
|
2856
|
-
afterEach: function(
|
2857
|
-
return env.afterEach(
|
2996
|
+
afterEach: function() {
|
2997
|
+
return env.afterEach.apply(env, arguments);
|
2858
2998
|
},
|
2859
2999
|
|
2860
|
-
beforeAll: function(
|
2861
|
-
return env.beforeAll(
|
3000
|
+
beforeAll: function() {
|
3001
|
+
return env.beforeAll.apply(env, arguments);
|
2862
3002
|
},
|
2863
3003
|
|
2864
|
-
afterAll: function(
|
2865
|
-
return env.afterAll(
|
3004
|
+
afterAll: function() {
|
3005
|
+
return env.afterAll.apply(env, arguments);
|
2866
3006
|
},
|
2867
3007
|
|
2868
3008
|
expect: function(actual) {
|
@@ -2870,7 +3010,7 @@ getJasmineRequireObj().interface = function(jasmine, env) {
|
|
2870
3010
|
},
|
2871
3011
|
|
2872
3012
|
pending: function() {
|
2873
|
-
return env.pending();
|
3013
|
+
return env.pending.apply(env, arguments);
|
2874
3014
|
},
|
2875
3015
|
|
2876
3016
|
fail: function() {
|
@@ -2904,5 +3044,5 @@ getJasmineRequireObj().interface = function(jasmine, env) {
|
|
2904
3044
|
};
|
2905
3045
|
|
2906
3046
|
getJasmineRequireObj().version = function() {
|
2907
|
-
return '2.
|
3047
|
+
return '2.2.0';
|
2908
3048
|
};
|