jasmine-core 3.7.1 → 3.8.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e0633e3d3e468f779220b229062eae61754bc886788981cadb4ac571ca61f09e
4
- data.tar.gz: c738ae0489e9b35212f228b0c81674ef19544338b39ca0fa86f09977d04c61ea
3
+ metadata.gz: a1d57232cc4b128cad1a9e9ddbc94319bd2b56a24211eaae6e32fc1e5c181810
4
+ data.tar.gz: ca6ebdb25bc946e9b2abd7e71d22e2cdf22edf33ae86824ab5e7f07d9689cdba
5
5
  SHA512:
6
- metadata.gz: ce627b117c79117d1c83b17411291022310e5d15eeec55a99eb90663397a21657d64361c7a8384bf6a3909c7bef5961d25344f0d66467be1fa267ad74aa1421e
7
- data.tar.gz: 492b3ce3d974d9ce732fbf799e2b6c8eee5c98466b5c9656d910e6df5f4ad2a225b206a9d14b400abc8749a6ebaffaf6f4f77b80d9df9e96f211bf1b14bfb6e3
6
+ metadata.gz: 0d7258d7339350d5bd68e4fa7da1b0170524f74a81c5ca1ca73f919924abde8efa98c1459bda1db2b89ca43973c821e93027ca8a0db720f67241a3aaa7b7c777
7
+ data.tar.gz: 61b1a8dfdb8d06916111340bd2a281ca0da8c102385ac5e011a7091d4813f9499928060686c3b92d15d2f6aeaec642f1036fc506f6448b917470b8e601ae070e
@@ -1,4 +1,33 @@
1
1
  import pkg_resources
2
+ import os
3
+
4
+ if 'SUPPRESS_JASMINE_DEPRECATION' not in os.environ:
5
+ print('DEPRECATION WARNING:\n' +
6
+ '\n' +
7
+ 'The Jasmine packages for Python are deprecated. There will be no further\n' +
8
+ 'releases after the end of the Jasmine 3.x series. We recommend migrating to the\n' +
9
+ 'following options:\n' +
10
+ '\n' +
11
+ '* jasmine-browser-runner (<https://github.com/jasmine/jasmine-browser>,\n' +
12
+ ' `npm install jasmine-browser-runner`) to run specs in browsers, including\n' +
13
+ ' headless Chrome and Saucelabs. This is the most direct replacement for the\n' +
14
+ ' jasmine server` and `jasmine ci` commands provided by the `jasmine` Python\n' +
15
+ ' package.\n' +
16
+ '* The jasmine npm package (<https://github.com/jasmine/jasmine-npm>,\n' +
17
+ ' `npm install jasmine`) to run specs under Node.js.\n' +
18
+ '* The standalone distribution from the latest Jasmine release\n' +
19
+ ' <https://github.com/jasmine/jasmine/releases> to run specs in browsers with\n' +
20
+ ' no additional tools.\n' +
21
+ '* The jasmine-core npm package (`npm install jasmine-core`) if all you need is\n' +
22
+ ' the Jasmine assets. This is the direct equivalent of the jasmine-core Python\n' +
23
+ ' package.\n' +
24
+ '\n' +
25
+ 'Except for the standalone distribution, all of the above are distributed through\n' +
26
+ 'npm.\n' +
27
+ '\n' +
28
+ 'To prevent this message from appearing, set the SUPPRESS_JASMINE_DEPRECATION\n' +
29
+ 'environment variable.\n')
30
+
2
31
 
3
32
  try:
4
33
  from collections import OrderedDict
@@ -208,7 +208,10 @@ jasmineRequire.HtmlReporter = function(j$) {
208
208
  ' of ' +
209
209
  totalSpecsDefined +
210
210
  ' specs - run all';
211
- var skippedLink = addToExistingQueryString('spec', '');
211
+ // include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906
212
+ var skippedLink =
213
+ (window.location.pathname || '') +
214
+ addToExistingQueryString('spec', '');
212
215
  alert.appendChild(
213
216
  createDom(
214
217
  'span',
@@ -565,7 +568,7 @@ jasmineRequire.HtmlReporter = function(j$) {
565
568
  );
566
569
  throwCheckbox.checked = config.oneFailurePerSpec;
567
570
  throwCheckbox.onclick = function() {
568
- navigateWithNewParam('throwFailures', !config.oneFailurePerSpec);
571
+ navigateWithNewParam('oneFailurePerSpec', !config.oneFailurePerSpec);
569
572
  };
570
573
 
571
574
  var randomCheckbox = optionsMenuDom.querySelector(
@@ -635,7 +638,11 @@ jasmineRequire.HtmlReporter = function(j$) {
635
638
  suite = suite.parent;
636
639
  }
637
640
 
638
- return addToExistingQueryString('spec', els.join(' '));
641
+ // include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906
642
+ return (
643
+ (window.location.pathname || '') +
644
+ addToExistingQueryString('spec', els.join(' '))
645
+ );
639
646
  }
640
647
 
641
648
  function addDeprecationWarnings(result, runnableType) {
@@ -699,11 +706,19 @@ jasmineRequire.HtmlReporter = function(j$) {
699
706
  }
700
707
 
701
708
  function specHref(result) {
702
- return addToExistingQueryString('spec', result.fullName);
709
+ // include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906
710
+ return (
711
+ (window.location.pathname || '') +
712
+ addToExistingQueryString('spec', result.fullName)
713
+ );
703
714
  }
704
715
 
705
716
  function seedHref(seed) {
706
- return addToExistingQueryString('seed', seed);
717
+ // include window.location.pathname to fix issue with karma-jasmine-html-reporter in angular: see https://github.com/jasmine/jasmine/issues/1906
718
+ return (
719
+ (window.location.pathname || '') +
720
+ addToExistingQueryString('seed', seed)
721
+ );
707
722
  }
708
723
 
709
724
  function defaultQueryString(key, value) {
@@ -1,128 +1,271 @@
1
1
  @charset "UTF-8";
2
- body { overflow-y: scroll; }
3
-
4
- .jasmine_html-reporter { width: 100%; background-color: #eee; padding: 5px; margin: -8px; font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333; }
5
-
6
- .jasmine_html-reporter a { text-decoration: none; }
7
-
8
- .jasmine_html-reporter a:hover { text-decoration: underline; }
9
-
10
- .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; }
11
-
12
- .jasmine_html-reporter .jasmine-banner, .jasmine_html-reporter .jasmine-symbol-summary, .jasmine_html-reporter .jasmine-summary, .jasmine_html-reporter .jasmine-result-message, .jasmine_html-reporter .jasmine-spec .jasmine-description, .jasmine_html-reporter .jasmine-spec-detail .jasmine-description, .jasmine_html-reporter .jasmine-alert .jasmine-bar, .jasmine_html-reporter .jasmine-stack-trace { padding-left: 9px; padding-right: 9px; }
13
-
14
- .jasmine_html-reporter .jasmine-banner { position: relative; }
15
-
16
- .jasmine_html-reporter .jasmine-banner .jasmine-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; }
17
-
18
- .jasmine_html-reporter .jasmine-banner .jasmine-version { margin-left: 14px; position: relative; top: 6px; }
19
-
20
- .jasmine_html-reporter #jasmine_content { position: fixed; right: 100%; }
21
-
22
- .jasmine_html-reporter .jasmine-version { color: #aaa; }
23
-
24
- .jasmine_html-reporter .jasmine-banner { margin-top: 14px; }
25
-
26
- .jasmine_html-reporter .jasmine-duration { color: #fff; float: right; line-height: 28px; padding-right: 9px; }
27
-
28
- .jasmine_html-reporter .jasmine-symbol-summary { overflow: hidden; margin: 14px 0; }
29
-
30
- .jasmine_html-reporter .jasmine-symbol-summary li { display: inline-block; height: 10px; width: 14px; font-size: 16px; }
31
-
32
- .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-passed { font-size: 14px; }
33
-
34
- .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-passed:before { color: #007069; content: "•"; }
35
-
36
- .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-failed { line-height: 9px; }
37
-
38
- .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-failed:before { color: #ca3a11; content: "×"; font-weight: bold; margin-left: -1px; }
39
-
40
- .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-excluded { font-size: 14px; }
41
-
42
- .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-excluded:before { color: #bababa; content: "•"; }
43
-
44
- .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-excluded-no-display { font-size: 14px; display: none; }
45
-
46
- .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-pending { line-height: 17px; }
47
-
48
- .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-pending:before { color: #ba9d37; content: "*"; }
49
-
50
- .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-empty { font-size: 14px; }
51
-
52
- .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-empty:before { color: #ba9d37; content: "•"; }
53
-
54
- .jasmine_html-reporter .jasmine-run-options { float: right; margin-right: 5px; border: 1px solid #8a4182; color: #8a4182; position: relative; line-height: 20px; }
55
-
56
- .jasmine_html-reporter .jasmine-run-options .jasmine-trigger { cursor: pointer; padding: 8px 16px; }
57
-
58
- .jasmine_html-reporter .jasmine-run-options .jasmine-payload { position: absolute; display: none; right: -1px; border: 1px solid #8a4182; background-color: #eee; white-space: nowrap; padding: 4px 8px; }
59
-
60
- .jasmine_html-reporter .jasmine-run-options .jasmine-payload.jasmine-open { display: block; }
61
-
62
- .jasmine_html-reporter .jasmine-bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
63
-
64
- .jasmine_html-reporter .jasmine-bar.jasmine-failed, .jasmine_html-reporter .jasmine-bar.jasmine-errored { background-color: #ca3a11; border-bottom: 1px solid #eee; }
65
-
66
- .jasmine_html-reporter .jasmine-bar.jasmine-passed { background-color: #007069; }
67
-
68
- .jasmine_html-reporter .jasmine-bar.jasmine-incomplete { background-color: #bababa; }
69
-
70
- .jasmine_html-reporter .jasmine-bar.jasmine-skipped { background-color: #bababa; }
71
-
72
- .jasmine_html-reporter .jasmine-bar.jasmine-warning { background-color: #ba9d37; color: #333; }
73
-
74
- .jasmine_html-reporter .jasmine-bar.jasmine-menu { background-color: #fff; color: #aaa; }
75
-
76
- .jasmine_html-reporter .jasmine-bar.jasmine-menu a { color: #333; }
77
-
78
- .jasmine_html-reporter .jasmine-bar a { color: white; }
79
-
80
- .jasmine_html-reporter.jasmine-spec-list .jasmine-bar.jasmine-menu.jasmine-failure-list, .jasmine_html-reporter.jasmine-spec-list .jasmine-results .jasmine-failures { display: none; }
81
-
82
- .jasmine_html-reporter.jasmine-failure-list .jasmine-bar.jasmine-menu.jasmine-spec-list, .jasmine_html-reporter.jasmine-failure-list .jasmine-summary { display: none; }
83
-
84
- .jasmine_html-reporter .jasmine-results { margin-top: 14px; }
85
-
86
- .jasmine_html-reporter .jasmine-summary { margin-top: 14px; }
87
-
88
- .jasmine_html-reporter .jasmine-summary ul { list-style-type: none; margin-left: 14px; padding-top: 0; padding-left: 0; }
89
-
90
- .jasmine_html-reporter .jasmine-summary ul.jasmine-suite { margin-top: 7px; margin-bottom: 7px; }
91
-
92
- .jasmine_html-reporter .jasmine-summary li.jasmine-passed a { color: #007069; }
93
-
94
- .jasmine_html-reporter .jasmine-summary li.jasmine-failed a { color: #ca3a11; }
95
-
96
- .jasmine_html-reporter .jasmine-summary li.jasmine-empty a { color: #ba9d37; }
97
-
98
- .jasmine_html-reporter .jasmine-summary li.jasmine-pending a { color: #ba9d37; }
99
-
100
- .jasmine_html-reporter .jasmine-summary li.jasmine-excluded a { color: #bababa; }
101
-
102
- .jasmine_html-reporter .jasmine-specs li.jasmine-passed a:before { content: "• "; }
103
-
104
- .jasmine_html-reporter .jasmine-specs li.jasmine-failed a:before { content: "× "; }
105
-
106
- .jasmine_html-reporter .jasmine-specs li.jasmine-empty a:before { content: "* "; }
107
-
108
- .jasmine_html-reporter .jasmine-specs li.jasmine-pending a:before { content: "• "; }
109
-
110
- .jasmine_html-reporter .jasmine-specs li.jasmine-excluded a:before { content: "• "; }
111
-
112
- .jasmine_html-reporter .jasmine-description + .jasmine-suite { margin-top: 0; }
113
-
114
- .jasmine_html-reporter .jasmine-suite { margin-top: 14px; }
115
-
116
- .jasmine_html-reporter .jasmine-suite a { color: #333; }
117
-
118
- .jasmine_html-reporter .jasmine-failures .jasmine-spec-detail { margin-bottom: 28px; }
119
-
120
- .jasmine_html-reporter .jasmine-failures .jasmine-spec-detail .jasmine-description { background-color: #ca3a11; color: white; }
121
-
122
- .jasmine_html-reporter .jasmine-failures .jasmine-spec-detail .jasmine-description a { color: white; }
123
-
124
- .jasmine_html-reporter .jasmine-result-message { padding-top: 14px; color: #333; white-space: pre-wrap; }
125
-
126
- .jasmine_html-reporter .jasmine-result-message span.jasmine-result { display: block; }
127
-
128
- .jasmine_html-reporter .jasmine-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; }
2
+ body {
3
+ overflow-y: scroll;
4
+ }
5
+
6
+ .jasmine_html-reporter {
7
+ width: 100%;
8
+ background-color: #eee;
9
+ padding: 5px;
10
+ margin: -8px;
11
+ font-size: 11px;
12
+ font-family: Monaco, "Lucida Console", monospace;
13
+ line-height: 14px;
14
+ color: #333;
15
+ }
16
+ .jasmine_html-reporter a {
17
+ text-decoration: none;
18
+ }
19
+ .jasmine_html-reporter a:hover {
20
+ text-decoration: underline;
21
+ }
22
+ .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 {
23
+ margin: 0;
24
+ line-height: 14px;
25
+ }
26
+ .jasmine_html-reporter .jasmine-banner,
27
+ .jasmine_html-reporter .jasmine-symbol-summary,
28
+ .jasmine_html-reporter .jasmine-summary,
29
+ .jasmine_html-reporter .jasmine-result-message,
30
+ .jasmine_html-reporter .jasmine-spec .jasmine-description,
31
+ .jasmine_html-reporter .jasmine-spec-detail .jasmine-description,
32
+ .jasmine_html-reporter .jasmine-alert .jasmine-bar,
33
+ .jasmine_html-reporter .jasmine-stack-trace {
34
+ padding-left: 9px;
35
+ padding-right: 9px;
36
+ }
37
+ .jasmine_html-reporter .jasmine-banner {
38
+ position: relative;
39
+ }
40
+ .jasmine_html-reporter .jasmine-banner .jasmine-title {
41
+ background: url("data:image/png;base64,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") no-repeat;
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
+ background-size: 100%;
47
+ display: block;
48
+ float: left;
49
+ width: 90px;
50
+ height: 25px;
51
+ }
52
+ .jasmine_html-reporter .jasmine-banner .jasmine-version {
53
+ margin-left: 14px;
54
+ position: relative;
55
+ top: 6px;
56
+ }
57
+ .jasmine_html-reporter #jasmine_content {
58
+ position: fixed;
59
+ right: 100%;
60
+ }
61
+ .jasmine_html-reporter .jasmine-version {
62
+ color: #aaa;
63
+ }
64
+ .jasmine_html-reporter .jasmine-banner {
65
+ margin-top: 14px;
66
+ }
67
+ .jasmine_html-reporter .jasmine-duration {
68
+ color: #fff;
69
+ float: right;
70
+ line-height: 28px;
71
+ padding-right: 9px;
72
+ }
73
+ .jasmine_html-reporter .jasmine-symbol-summary {
74
+ overflow: hidden;
75
+ margin: 14px 0;
76
+ }
77
+ .jasmine_html-reporter .jasmine-symbol-summary li {
78
+ display: inline-block;
79
+ height: 10px;
80
+ width: 14px;
81
+ font-size: 16px;
82
+ }
83
+ .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-passed {
84
+ font-size: 14px;
85
+ }
86
+ .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-passed:before {
87
+ color: #007069;
88
+ content: "•";
89
+ }
90
+ .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-failed {
91
+ line-height: 9px;
92
+ }
93
+ .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-failed:before {
94
+ color: #ca3a11;
95
+ content: "×";
96
+ font-weight: bold;
97
+ margin-left: -1px;
98
+ }
99
+ .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-excluded {
100
+ font-size: 14px;
101
+ }
102
+ .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-excluded:before {
103
+ color: #bababa;
104
+ content: "";
105
+ }
106
+ .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-excluded-no-display {
107
+ font-size: 14px;
108
+ display: none;
109
+ }
110
+ .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-pending {
111
+ line-height: 17px;
112
+ }
113
+ .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-pending:before {
114
+ color: #ba9d37;
115
+ content: "*";
116
+ }
117
+ .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-empty {
118
+ font-size: 14px;
119
+ }
120
+ .jasmine_html-reporter .jasmine-symbol-summary li.jasmine-empty:before {
121
+ color: #ba9d37;
122
+ content: "•";
123
+ }
124
+ .jasmine_html-reporter .jasmine-run-options {
125
+ float: right;
126
+ margin-right: 5px;
127
+ border: 1px solid #8a4182;
128
+ color: #8a4182;
129
+ position: relative;
130
+ line-height: 20px;
131
+ }
132
+ .jasmine_html-reporter .jasmine-run-options .jasmine-trigger {
133
+ cursor: pointer;
134
+ padding: 8px 16px;
135
+ }
136
+ .jasmine_html-reporter .jasmine-run-options .jasmine-payload {
137
+ position: absolute;
138
+ display: none;
139
+ right: -1px;
140
+ border: 1px solid #8a4182;
141
+ background-color: #eee;
142
+ white-space: nowrap;
143
+ padding: 4px 8px;
144
+ }
145
+ .jasmine_html-reporter .jasmine-run-options .jasmine-payload.jasmine-open {
146
+ display: block;
147
+ }
148
+ .jasmine_html-reporter .jasmine-bar {
149
+ line-height: 28px;
150
+ font-size: 14px;
151
+ display: block;
152
+ color: #eee;
153
+ }
154
+ .jasmine_html-reporter .jasmine-bar.jasmine-failed, .jasmine_html-reporter .jasmine-bar.jasmine-errored {
155
+ background-color: #ca3a11;
156
+ border-bottom: 1px solid #eee;
157
+ }
158
+ .jasmine_html-reporter .jasmine-bar.jasmine-passed {
159
+ background-color: #007069;
160
+ }
161
+ .jasmine_html-reporter .jasmine-bar.jasmine-incomplete {
162
+ background-color: #bababa;
163
+ }
164
+ .jasmine_html-reporter .jasmine-bar.jasmine-skipped {
165
+ background-color: #bababa;
166
+ }
167
+ .jasmine_html-reporter .jasmine-bar.jasmine-warning {
168
+ background-color: #ba9d37;
169
+ color: #333;
170
+ }
171
+ .jasmine_html-reporter .jasmine-bar.jasmine-menu {
172
+ background-color: #fff;
173
+ color: #aaa;
174
+ }
175
+ .jasmine_html-reporter .jasmine-bar.jasmine-menu a {
176
+ color: #333;
177
+ }
178
+ .jasmine_html-reporter .jasmine-bar a {
179
+ color: white;
180
+ }
181
+ .jasmine_html-reporter.jasmine-spec-list .jasmine-bar.jasmine-menu.jasmine-failure-list,
182
+ .jasmine_html-reporter.jasmine-spec-list .jasmine-results .jasmine-failures {
183
+ display: none;
184
+ }
185
+ .jasmine_html-reporter.jasmine-failure-list .jasmine-bar.jasmine-menu.jasmine-spec-list,
186
+ .jasmine_html-reporter.jasmine-failure-list .jasmine-summary {
187
+ display: none;
188
+ }
189
+ .jasmine_html-reporter .jasmine-results {
190
+ margin-top: 14px;
191
+ }
192
+ .jasmine_html-reporter .jasmine-summary {
193
+ margin-top: 14px;
194
+ }
195
+ .jasmine_html-reporter .jasmine-summary ul {
196
+ list-style-type: none;
197
+ margin-left: 14px;
198
+ padding-top: 0;
199
+ padding-left: 0;
200
+ }
201
+ .jasmine_html-reporter .jasmine-summary ul.jasmine-suite {
202
+ margin-top: 7px;
203
+ margin-bottom: 7px;
204
+ }
205
+ .jasmine_html-reporter .jasmine-summary li.jasmine-passed a {
206
+ color: #007069;
207
+ }
208
+ .jasmine_html-reporter .jasmine-summary li.jasmine-failed a {
209
+ color: #ca3a11;
210
+ }
211
+ .jasmine_html-reporter .jasmine-summary li.jasmine-empty a {
212
+ color: #ba9d37;
213
+ }
214
+ .jasmine_html-reporter .jasmine-summary li.jasmine-pending a {
215
+ color: #ba9d37;
216
+ }
217
+ .jasmine_html-reporter .jasmine-summary li.jasmine-excluded a {
218
+ color: #bababa;
219
+ }
220
+ .jasmine_html-reporter .jasmine-specs li.jasmine-passed a:before {
221
+ content: "• ";
222
+ }
223
+ .jasmine_html-reporter .jasmine-specs li.jasmine-failed a:before {
224
+ content: "× ";
225
+ }
226
+ .jasmine_html-reporter .jasmine-specs li.jasmine-empty a:before {
227
+ content: "* ";
228
+ }
229
+ .jasmine_html-reporter .jasmine-specs li.jasmine-pending a:before {
230
+ content: "• ";
231
+ }
232
+ .jasmine_html-reporter .jasmine-specs li.jasmine-excluded a:before {
233
+ content: "• ";
234
+ }
235
+ .jasmine_html-reporter .jasmine-description + .jasmine-suite {
236
+ margin-top: 0;
237
+ }
238
+ .jasmine_html-reporter .jasmine-suite {
239
+ margin-top: 14px;
240
+ }
241
+ .jasmine_html-reporter .jasmine-suite a {
242
+ color: #333;
243
+ }
244
+ .jasmine_html-reporter .jasmine-failures .jasmine-spec-detail {
245
+ margin-bottom: 28px;
246
+ }
247
+ .jasmine_html-reporter .jasmine-failures .jasmine-spec-detail .jasmine-description {
248
+ background-color: #ca3a11;
249
+ color: white;
250
+ }
251
+ .jasmine_html-reporter .jasmine-failures .jasmine-spec-detail .jasmine-description a {
252
+ color: white;
253
+ }
254
+ .jasmine_html-reporter .jasmine-result-message {
255
+ padding-top: 14px;
256
+ color: #333;
257
+ white-space: pre-wrap;
258
+ }
259
+ .jasmine_html-reporter .jasmine-result-message span.jasmine-result {
260
+ display: block;
261
+ }
262
+ .jasmine_html-reporter .jasmine-stack-trace {
263
+ margin: 5px 0 0 0;
264
+ max-height: 224px;
265
+ overflow: auto;
266
+ line-height: 18px;
267
+ color: #666;
268
+ border: 1px solid #ddd;
269
+ background: white;
270
+ white-space: pre;
271
+ }
@@ -371,6 +371,19 @@ getJasmineRequireObj().base = function(j$, jasmineGlobal) {
371
371
  return matches ? matches[1] : '<anonymous>';
372
372
  };
373
373
 
374
+ j$.isPending_ = function(promise) {
375
+ var sentinel = {};
376
+ // eslint-disable-next-line compat/compat
377
+ return Promise.race([promise, Promise.resolve(sentinel)]).then(
378
+ function(result) {
379
+ return result === sentinel;
380
+ },
381
+ function() {
382
+ return false;
383
+ }
384
+ );
385
+ };
386
+
374
387
  /**
375
388
  * Get a matcher, usable in any {@link matchers|matcher} that uses Jasmine's equality (e.g. {@link matchers#toEqual|toEqual}, {@link matchers#toContain|toContain}, or {@link matchers#toHaveBeenCalledWith|toHaveBeenCalledWith}),
376
389
  * that will succeed if the actual value being compared is an instance of the specified class/constructor.
@@ -679,11 +692,21 @@ getJasmineRequireObj().util = function(j$) {
679
692
  };
680
693
 
681
694
  getJasmineRequireObj().Spec = function(j$) {
695
+ /**
696
+ * @interface Spec
697
+ * @see Configuration#specFilter
698
+ */
682
699
  function Spec(attrs) {
683
700
  this.expectationFactory = attrs.expectationFactory;
684
701
  this.asyncExpectationFactory = attrs.asyncExpectationFactory;
685
702
  this.resultCallback = attrs.resultCallback || function() {};
686
703
  this.id = attrs.id;
704
+ /**
705
+ * The description passed to the {@link it} that created this spec.
706
+ * @name Spec#description
707
+ * @readonly
708
+ * @type {string}
709
+ */
687
710
  this.description = attrs.description || '';
688
711
  this.queueableFn = attrs.queueableFn;
689
712
  this.beforeAndAfterFns =
@@ -875,6 +898,12 @@ getJasmineRequireObj().Spec = function(j$) {
875
898
  return 'passed';
876
899
  };
877
900
 
901
+ /**
902
+ * The full description including all ancestors of this spec.
903
+ * @name Spec#getFullName
904
+ * @function
905
+ * @returns {string}
906
+ */
878
907
  Spec.prototype.getFullName = function() {
879
908
  return this.getSpecName(this);
880
909
  };
@@ -963,11 +992,12 @@ getJasmineRequireObj().Order = function() {
963
992
 
964
993
  getJasmineRequireObj().Env = function(j$) {
965
994
  /**
966
- * _Note:_ Do not construct this directly, Jasmine will make one during booting.
967
- * @name Env
995
+ * @class Env
968
996
  * @since 2.0.0
969
- * @classdesc The Jasmine environment
970
- * @constructor
997
+ * @classdesc The Jasmine environment.<br>
998
+ * _Note:_ Do not construct this directly. You can obtain the Env instance by
999
+ * calling {@link jasmine.getEnv}.
1000
+ * @hideconstructor
971
1001
  */
972
1002
  function Env(options) {
973
1003
  options = options || {};
@@ -998,7 +1028,8 @@ getJasmineRequireObj().Env = function(j$) {
998
1028
 
999
1029
  /**
1000
1030
  * This represents the available options to configure Jasmine.
1001
- * Options that are not provided will use their default values
1031
+ * Options that are not provided will use their default values.
1032
+ * @see Env#configure
1002
1033
  * @interface Configuration
1003
1034
  * @since 3.3.0
1004
1035
  */
@@ -1016,7 +1047,7 @@ getJasmineRequireObj().Env = function(j$) {
1016
1047
  * Null causes the seed to be determined randomly at the start of execution.
1017
1048
  * @name Configuration#seed
1018
1049
  * @since 3.3.0
1019
- * @type function
1050
+ * @type (number|string)
1020
1051
  * @default null
1021
1052
  */
1022
1053
  seed: null,
@@ -1046,12 +1077,19 @@ getJasmineRequireObj().Env = function(j$) {
1046
1077
  * @default false
1047
1078
  */
1048
1079
  oneFailurePerSpec: false,
1080
+ /**
1081
+ * A function that takes a spec and returns true if it should be executed
1082
+ * or false if it should be skipped.
1083
+ * @callback SpecFilter
1084
+ * @param {Spec} spec - The spec that the filter is being applied to.
1085
+ * @return boolean
1086
+ */
1049
1087
  /**
1050
1088
  * Function to use to filter specs
1051
1089
  * @name Configuration#specFilter
1052
1090
  * @since 3.3.0
1053
- * @type function
1054
- * @default true
1091
+ * @type SpecFilter
1092
+ * @default A function that always returns true.
1055
1093
  */
1056
1094
  specFilter: function() {
1057
1095
  return true;
@@ -1602,6 +1640,13 @@ getJasmineRequireObj().Env = function(j$) {
1602
1640
  defaultResourcesForRunnable(topSuite.id);
1603
1641
  currentDeclarationSuite = topSuite;
1604
1642
 
1643
+ /**
1644
+ * Provides the root suite, through which all suites and specs can be
1645
+ * accessed.
1646
+ * @function
1647
+ * @name Env#topSuite
1648
+ * @return {Suite} the root suite
1649
+ */
1605
1650
  this.topSuite = function() {
1606
1651
  return topSuite;
1607
1652
  };
@@ -1681,7 +1726,27 @@ getJasmineRequireObj().Env = function(j$) {
1681
1726
  queueRunnerFactory
1682
1727
  );
1683
1728
 
1684
- // Both params are optional.
1729
+ /**
1730
+ * Executes the specs.
1731
+ *
1732
+ * If called with no parameters or with a falsy value as the first parameter,
1733
+ * all specs will be executed except those that are excluded by a
1734
+ * [spec filter]{@link Configuration#specFilter} or other mechanism. If the
1735
+ * first parameter is a list of spec/suite IDs, only those specs/suites will
1736
+ * be run.
1737
+ *
1738
+ * Both parameters are optional, but a completion callback is only valid as
1739
+ * the second parameter. To specify a completion callback but not a list of
1740
+ * specs/suites to run, pass null or undefined as the first parameter.
1741
+ *
1742
+ * execute should not be called more than once.
1743
+ *
1744
+ * @name Env#execute
1745
+ * @since 2.0.0
1746
+ * @function
1747
+ * @param {(string[])=} runnablesToRun IDs of suites and/or specs to run
1748
+ * @param {Function=} onComplete Function that will be called after all specs have run
1749
+ */
1685
1750
  this.execute = function(runnablesToRun, onComplete) {
1686
1751
  installGlobalErrors();
1687
1752
 
@@ -1873,6 +1938,15 @@ getJasmineRequireObj().Env = function(j$) {
1873
1938
  }
1874
1939
  });
1875
1940
 
1941
+ /**
1942
+ * Configures whether Jasmine should allow the same function to be spied on
1943
+ * more than once during the execution of a spec. By default, spying on
1944
+ * a function that is already a spy will cause an error.
1945
+ * @name Env#allowRespy
1946
+ * @function
1947
+ * @since 2.5.0
1948
+ * @param {boolean} allow Whether to allow respying
1949
+ */
1876
1950
  this.allowRespy = function(allow) {
1877
1951
  spyRegistry.allowRespy(allow);
1878
1952
  };
@@ -2942,6 +3016,18 @@ getJasmineRequireObj().CallTracker = function(j$) {
2942
3016
  return call ? call.args : [];
2943
3017
  };
2944
3018
 
3019
+ /**
3020
+ * Get the "this" object that was passed to a specific invocation of this spy.
3021
+ * @name Spy#calls#thisFor
3022
+ * @function
3023
+ * @param {Integer} index The 0-based invocation index.
3024
+ * @return {Object?}
3025
+ */
3026
+ this.thisFor = function(index) {
3027
+ var call = calls[index];
3028
+ return call ? call.object : undefined;
3029
+ };
3030
+
2945
3031
  /**
2946
3032
  * Get the raw calls array for this spy.
2947
3033
  * @name Spy#calls#all
@@ -3093,9 +3179,11 @@ getJasmineRequireObj().Clock = function() {
3093
3179
  typeof process.versions.node === 'string';
3094
3180
 
3095
3181
  /**
3096
- * _Note:_ Do not construct this directly, Jasmine will make one during booting. You can get the current clock with {@link jasmine.clock}.
3097
3182
  * @class Clock
3098
- * @classdesc Jasmine's mock clock is used when testing time dependent code.
3183
+ * @classdesc Jasmine's mock clock is used when testing time dependent code.<br>
3184
+ * _Note:_ Do not construct this directly. You can get the current clock with
3185
+ * {@link jasmine.clock}.
3186
+ * @hideconstructor
3099
3187
  */
3100
3188
  function Clock(global, delayedFunctionSchedulerFactory, mockDate) {
3101
3189
  var self = this,
@@ -3651,7 +3739,35 @@ getJasmineRequireObj().Expectation = function(j$) {
3651
3739
  });
3652
3740
 
3653
3741
  /**
3654
- * Asynchronous matchers.
3742
+ * Asynchronous matchers that operate on an actual value which is a promise,
3743
+ * and return a promise.
3744
+ *
3745
+ * Most async matchers will wait indefinitely for the promise to be resolved
3746
+ * or rejected, resulting in a spec timeout if that never happens. If you
3747
+ * expect that the promise will already be resolved or rejected at the time
3748
+ * the matcher is called, you can use the {@link async-matchers#already}
3749
+ * modifier to get a faster failure with a more helpful message.
3750
+ *
3751
+ * Note: Specs must await the result of each async matcher, return the
3752
+ * promise returned by the matcher, or return a promise that's derived from
3753
+ * the one returned by the matcher. Otherwise the matcher will not be
3754
+ * evaluated before the spec completes.
3755
+ *
3756
+ * @example
3757
+ * // Good
3758
+ * await expectAsync(aPromise).toBeResolved();
3759
+ * @example
3760
+ * // Good
3761
+ * return expectAsync(aPromise).toBeResolved();
3762
+ * @example
3763
+ * // Good
3764
+ * return expectAsync(aPromise).toBeResolved()
3765
+ * .then(function() {
3766
+ * // more spec code
3767
+ * });
3768
+ * @example
3769
+ * // Bad
3770
+ * expectAsync(aPromise).toBeResolved();
3655
3771
  * @namespace async-matchers
3656
3772
  */
3657
3773
  function AsyncExpectation(options) {
@@ -3701,6 +3817,23 @@ getJasmineRequireObj().Expectation = function(j$) {
3701
3817
  }
3702
3818
  });
3703
3819
 
3820
+ /**
3821
+ * Fail as soon as possible if the actual is pending.
3822
+ * Otherwise evaluate the matcher.
3823
+ * @member
3824
+ * @name async-matchers#already
3825
+ * @type {async-matchers}
3826
+ * @example
3827
+ * await expectAsync(myPromise).already.toBeResolved();
3828
+ * @example
3829
+ * return expectAsync(myPromise).already.toBeResolved();
3830
+ */
3831
+ Object.defineProperty(AsyncExpectation.prototype, 'already', {
3832
+ get: function() {
3833
+ return addFilter(this, expectSettledPromiseFilter);
3834
+ }
3835
+ });
3836
+
3704
3837
  function wrapSyncCompare(name, matcherFactory) {
3705
3838
  return function() {
3706
3839
  var result = this.expector.compare(name, matcherFactory, arguments);
@@ -3779,6 +3912,27 @@ getJasmineRequireObj().Expectation = function(j$) {
3779
3912
  buildFailureMessage: negatedFailureMessage
3780
3913
  };
3781
3914
 
3915
+ var expectSettledPromiseFilter = {
3916
+ selectComparisonFunc: function(matcher) {
3917
+ return function(actual) {
3918
+ var matcherArgs = arguments;
3919
+
3920
+ return j$.isPending_(actual).then(function(isPending) {
3921
+ if (isPending) {
3922
+ return {
3923
+ pass: false,
3924
+ message:
3925
+ 'Expected a promise to be settled (via ' +
3926
+ 'expectAsync(...).already) but it was pending.'
3927
+ };
3928
+ } else {
3929
+ return matcher.compare.apply(null, matcherArgs);
3930
+ }
3931
+ });
3932
+ };
3933
+ }
3934
+ };
3935
+
3782
3936
  function ContextAddingFilter(message) {
3783
3937
  this.message = message;
3784
3938
  }
@@ -4074,7 +4228,22 @@ getJasmineRequireObj().GlobalErrors = function(j$) {
4074
4228
  this.jasmineHandlers = {};
4075
4229
  this.installOne_ = function installOne_(errorType, jasmineMessage) {
4076
4230
  function taggedOnError(error) {
4077
- error.jasmineMessage = jasmineMessage + ': ' + error;
4231
+ var substituteMsg;
4232
+
4233
+ if (error) {
4234
+ error.jasmineMessage = jasmineMessage + ': ' + error;
4235
+ } else {
4236
+ substituteMsg = jasmineMessage + ' with no error or message';
4237
+
4238
+ if (errorType === 'unhandledRejection') {
4239
+ substituteMsg +=
4240
+ '\n' +
4241
+ '(Tip: to get a useful stack trace, use ' +
4242
+ 'Promise.reject(new Error(...)) instead of Promise.reject().)';
4243
+ }
4244
+
4245
+ error = new Error(substituteMsg);
4246
+ }
4078
4247
 
4079
4248
  var handler = handlers[handlers.length - 1];
4080
4249
 
@@ -4423,7 +4592,7 @@ getJasmineRequireObj().toBeResolved = function(j$) {
4423
4592
  * @example
4424
4593
  * return expectAsync(aPromise).toBeResolved();
4425
4594
  */
4426
- return function toBeResolved() {
4595
+ return function toBeResolved(matchersUtil) {
4427
4596
  return {
4428
4597
  compare: function(actual) {
4429
4598
  if (!j$.isPromiseLike(actual)) {
@@ -4434,8 +4603,15 @@ getJasmineRequireObj().toBeResolved = function(j$) {
4434
4603
  function() {
4435
4604
  return { pass: true };
4436
4605
  },
4437
- function() {
4438
- return { pass: false };
4606
+ function(e) {
4607
+ return {
4608
+ pass: false,
4609
+ message:
4610
+ 'Expected a promise to be resolved but it was ' +
4611
+ 'rejected with ' +
4612
+ matchersUtil.pp(e) +
4613
+ '.'
4614
+ };
4439
4615
  }
4440
4616
  );
4441
4617
  }
@@ -4490,10 +4666,14 @@ getJasmineRequireObj().toBeResolvedTo = function(j$) {
4490
4666
  };
4491
4667
  }
4492
4668
  },
4493
- function() {
4669
+ function(e) {
4494
4670
  return {
4495
4671
  pass: false,
4496
- message: prefix(false) + ' but it was rejected.'
4672
+ message:
4673
+ prefix(false) +
4674
+ ' but it was rejected with ' +
4675
+ matchersUtil.pp(e) +
4676
+ '.'
4497
4677
  };
4498
4678
  }
4499
4679
  );
@@ -4625,11 +4805,11 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
4625
4805
  // TODO: convert all uses of j$.pp to use the injected pp
4626
4806
 
4627
4807
  /**
4808
+ * @class MatchersUtil
4809
+ * @classdesc Utilities for use in implementing matchers.<br>
4628
4810
  * _Note:_ Do not construct this directly. Jasmine will construct one and
4629
4811
  * pass it to matchers and asymmetric equality testers.
4630
- * @name MatchersUtil
4631
- * @classdesc Utilities for use in implementing matchers
4632
- * @constructor
4812
+ * @hideconstructor
4633
4813
  */
4634
4814
  function MatchersUtil(options) {
4635
4815
  options = options || {};
@@ -4892,6 +5072,17 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
4892
5072
  diffBuilder.recordMismatch();
4893
5073
  }
4894
5074
  return result;
5075
+ case '[object ArrayBuffer]':
5076
+ // If we have an instance of ArrayBuffer the Uint8Array ctor
5077
+ // will be defined as well
5078
+ return self.eq_(
5079
+ new Uint8Array(a), // eslint-disable-line compat/compat
5080
+ new Uint8Array(b), // eslint-disable-line compat/compat
5081
+ aStack,
5082
+ bStack,
5083
+ customTesters,
5084
+ diffBuilder
5085
+ );
4895
5086
  // RegExps are compared by their source patterns and flags.
4896
5087
  case '[object RegExp]':
4897
5088
  return (
@@ -5268,6 +5459,31 @@ getJasmineRequireObj().MatchersUtil = function(j$) {
5268
5459
  return MatchersUtil;
5269
5460
  };
5270
5461
 
5462
+ /**
5463
+ * @interface AsymmetricEqualityTester
5464
+ * @classdesc An asymmetric equality tester is an object that can match multiple
5465
+ * objects. Examples include jasmine.any() and jasmine.stringMatching().
5466
+ * User-defined asymmetric equality testers can also be defined and used in
5467
+ * expectations.
5468
+ * @see custom_asymmetric_equality_testers
5469
+ * @since 2.0.0
5470
+ */
5471
+ /**
5472
+ * Determines whether a value matches this tester
5473
+ * @function
5474
+ * @name AsymmetricEqualityTester#asymmetricMatch
5475
+ * @param value {any} The value to test
5476
+ * @param matchersUtil {MatchersUtil} utilities for testing equality, etc
5477
+ * @return {Boolean}
5478
+ */
5479
+ /**
5480
+ * Returns a string representation of this tester to use in matcher failure messages
5481
+ * @function
5482
+ * @name AsymmetricEqualityTester#jasmineToString
5483
+ * @param pp {function} Function that takes a value and returns a pretty-printed representation
5484
+ * @return {String}
5485
+ */
5486
+
5271
5487
  getJasmineRequireObj().MismatchTree = function(j$) {
5272
5488
  /*
5273
5489
  To be able to apply custom object formatters at all possible levels of an
@@ -7987,10 +8203,11 @@ getJasmineRequireObj().interface = function(jasmine, env) {
7987
8203
  * @function
7988
8204
  * @global
7989
8205
  * @param {Object} obj - The object upon which to install the {@link Spy}s
8206
+ * @param {boolean} includeNonEnumerable - Whether or not to add spies to non-enumerable properties
7990
8207
  * @returns {Object} the spied object
7991
8208
  */
7992
- spyOnAllFunctions: function(obj) {
7993
- return env.spyOnAllFunctions(obj);
8209
+ spyOnAllFunctions: function(obj, includeNonEnumerable) {
8210
+ return env.spyOnAllFunctions(obj, includeNonEnumerable);
7994
8211
  },
7995
8212
 
7996
8213
  jsApiReporter: new jasmine.JsApiReporter({
@@ -8145,9 +8362,11 @@ getJasmineRequireObj().Spy = function(j$) {
8145
8362
  });
8146
8363
 
8147
8364
  /**
8148
- * _Note:_ Do not construct this directly, use {@link spyOn}, {@link spyOnProperty}, {@link jasmine.createSpy}, or {@link jasmine.createSpyObj}
8149
- * @constructor
8150
- * @name Spy
8365
+ * @classdesc _Note:_ Do not construct this directly. Use {@link spyOn},
8366
+ * {@link spyOnProperty}, {@link jasmine.createSpy}, or
8367
+ * {@link jasmine.createSpyObj} instead.
8368
+ * @class Spy
8369
+ * @hideconstructor
8151
8370
  */
8152
8371
  function Spy(
8153
8372
  name,
@@ -8176,6 +8395,7 @@ getJasmineRequireObj().Spy = function(j$) {
8176
8395
  * @property {object} object - `this` context for the invocation.
8177
8396
  * @property {number} invocationOrder - Order of the invocation.
8178
8397
  * @property {Array} args - The arguments passed for this invocation.
8398
+ * @property returnValue - The value that was returned from this invocation.
8179
8399
  */
8180
8400
  var callData = {
8181
8401
  object: context,
@@ -8591,7 +8811,7 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
8591
8811
  return spy;
8592
8812
  };
8593
8813
 
8594
- this.spyOnAllFunctions = function(obj) {
8814
+ this.spyOnAllFunctions = function(obj, includeNonEnumerable) {
8595
8815
  if (j$.util.isUndefined(obj)) {
8596
8816
  throw new Error(
8597
8817
  'spyOnAllFunctions could not find an object to spy upon'
@@ -8599,30 +8819,27 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
8599
8819
  }
8600
8820
 
8601
8821
  var pointer = obj,
8602
- props = [],
8603
- prop,
8604
- descriptor;
8822
+ propsToSpyOn = [],
8823
+ properties,
8824
+ propertiesToSkip = [];
8605
8825
 
8606
- while (pointer) {
8607
- for (prop in pointer) {
8608
- if (
8609
- Object.prototype.hasOwnProperty.call(pointer, prop) &&
8610
- pointer[prop] instanceof Function
8611
- ) {
8612
- descriptor = Object.getOwnPropertyDescriptor(pointer, prop);
8613
- if (
8614
- (descriptor.writable || descriptor.set) &&
8615
- descriptor.configurable
8616
- ) {
8617
- props.push(prop);
8618
- }
8619
- }
8620
- }
8826
+ while (
8827
+ pointer &&
8828
+ (!includeNonEnumerable || pointer !== Object.prototype)
8829
+ ) {
8830
+ properties = getProps(pointer, includeNonEnumerable);
8831
+ properties = properties.filter(function(prop) {
8832
+ return propertiesToSkip.indexOf(prop) === -1;
8833
+ });
8834
+ propertiesToSkip = propertiesToSkip.concat(properties);
8835
+ propsToSpyOn = propsToSpyOn.concat(
8836
+ getSpyableFunctionProps(pointer, properties)
8837
+ );
8621
8838
  pointer = Object.getPrototypeOf(pointer);
8622
8839
  }
8623
8840
 
8624
- for (var i = 0; i < props.length; i++) {
8625
- this.spyOn(obj, props[i]);
8841
+ for (var i = 0; i < propsToSpyOn.length; i++) {
8842
+ this.spyOn(obj, propsToSpyOn[i]);
8626
8843
  }
8627
8844
 
8628
8845
  return obj;
@@ -8637,6 +8854,50 @@ getJasmineRequireObj().SpyRegistry = function(j$) {
8637
8854
  };
8638
8855
  }
8639
8856
 
8857
+ function getProps(obj, includeNonEnumerable) {
8858
+ var enumerableProperties = Object.keys(obj);
8859
+
8860
+ if (!includeNonEnumerable) {
8861
+ return enumerableProperties;
8862
+ }
8863
+
8864
+ return Object.getOwnPropertyNames(obj).filter(function(prop) {
8865
+ return (
8866
+ prop !== 'constructor' ||
8867
+ enumerableProperties.indexOf('constructor') > -1
8868
+ );
8869
+ });
8870
+ }
8871
+
8872
+ function getSpyableFunctionProps(obj, propertiesToCheck) {
8873
+ var props = [],
8874
+ prop;
8875
+ for (var i = 0; i < propertiesToCheck.length; i++) {
8876
+ prop = propertiesToCheck[i];
8877
+ if (
8878
+ Object.prototype.hasOwnProperty.call(obj, prop) &&
8879
+ isSpyableProp(obj, prop)
8880
+ ) {
8881
+ props.push(prop);
8882
+ }
8883
+ }
8884
+ return props;
8885
+ }
8886
+
8887
+ function isSpyableProp(obj, prop) {
8888
+ var value, descriptor;
8889
+ try {
8890
+ value = obj[prop];
8891
+ } catch (e) {
8892
+ return false;
8893
+ }
8894
+ if (value instanceof Function) {
8895
+ descriptor = Object.getOwnPropertyDescriptor(obj, prop);
8896
+ return (descriptor.writable || descriptor.set) && descriptor.configurable;
8897
+ }
8898
+ return false;
8899
+ }
8900
+
8640
8901
  return SpyRegistry;
8641
8902
  };
8642
8903
 
@@ -8969,10 +9230,26 @@ getJasmineRequireObj().StackTrace = function(j$) {
8969
9230
  };
8970
9231
 
8971
9232
  getJasmineRequireObj().Suite = function(j$) {
9233
+ /**
9234
+ * @interface Suite
9235
+ * @see Env#topSuite
9236
+ */
8972
9237
  function Suite(attrs) {
8973
9238
  this.env = attrs.env;
8974
9239
  this.id = attrs.id;
9240
+ /**
9241
+ * The parent of this suite, or null if this is the top suite.
9242
+ * @name Suite#parentSuite
9243
+ * @readonly
9244
+ * @type {Suite}
9245
+ */
8975
9246
  this.parentSuite = attrs.parentSuite;
9247
+ /**
9248
+ * The description passed to the {@link describe} that created this suite.
9249
+ * @name Suite#description
9250
+ * @readonly
9251
+ * @type {string}
9252
+ */
8976
9253
  this.description = attrs.description;
8977
9254
  this.expectationFactory = attrs.expectationFactory;
8978
9255
  this.asyncExpectationFactory = attrs.asyncExpectationFactory;
@@ -8986,6 +9263,11 @@ getJasmineRequireObj().Suite = function(j$) {
8986
9263
 
8987
9264
  this.timer = attrs.timer || new j$.Timer();
8988
9265
 
9266
+ /**
9267
+ * The suite's children.
9268
+ * @name Suite#children
9269
+ * @type {Array.<(Spec|Suite)>}
9270
+ */
8989
9271
  this.children = [];
8990
9272
 
8991
9273
  /**
@@ -9023,6 +9305,12 @@ getJasmineRequireObj().Suite = function(j$) {
9023
9305
  return this.asyncExpectationFactory(actual, this);
9024
9306
  };
9025
9307
 
9308
+ /**
9309
+ * The full description including all ancestors of this suite.
9310
+ * @name Suite#getFullName
9311
+ * @function
9312
+ * @returns {string}
9313
+ */
9026
9314
  Suite.prototype.getFullName = function() {
9027
9315
  var fullName = [];
9028
9316
  for (
@@ -9469,5 +9757,5 @@ getJasmineRequireObj().UserContext = function(j$) {
9469
9757
  };
9470
9758
 
9471
9759
  getJasmineRequireObj().version = function() {
9472
- return '3.7.1';
9760
+ return '3.8.0';
9473
9761
  };
@@ -4,6 +4,6 @@
4
4
  #
5
5
  module Jasmine
6
6
  module Core
7
- VERSION = "3.7.1"
7
+ VERSION = "3.8.0"
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jasmine-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.1
4
+ version: 3.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregg Van Hove
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-19 00:00:00.000000000 Z
11
+ date: 2021-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -71,8 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
71
  - !ruby/object:Gem::Version
72
72
  version: '0'
73
73
  requirements: []
74
- rubyforge_project:
75
- rubygems_version: 2.7.6.2
74
+ rubygems_version: 3.0.3
76
75
  signing_key:
77
76
  specification_version: 4
78
77
  summary: JavaScript BDD framework