jazz 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +129 -0
  3. data/bin/jazz +230 -0
  4. data/doc/jasmine/files.html +460 -0
  5. data/doc/jasmine/index.html +322 -0
  6. data/doc/jasmine/symbols/_global_.html +1083 -0
  7. data/doc/jasmine/symbols/jasmine.Block.html +417 -0
  8. data/doc/jasmine/symbols/jasmine.Clock.html +678 -0
  9. data/doc/jasmine/symbols/jasmine.Env.html +1135 -0
  10. data/doc/jasmine/symbols/jasmine.EnvjsReporter.html +328 -0
  11. data/doc/jasmine/symbols/jasmine.JsApiReporter.html +822 -0
  12. data/doc/jasmine/symbols/jasmine.Matchers.html +1106 -0
  13. data/doc/jasmine/symbols/jasmine.MultiReporter.html +394 -0
  14. data/doc/jasmine/symbols/jasmine.NestedResults.html +710 -0
  15. data/doc/jasmine/symbols/jasmine.Reporter.html +574 -0
  16. data/doc/jasmine/symbols/jasmine.Runner.html +710 -0
  17. data/doc/jasmine/symbols/jasmine.Spec.html +1372 -0
  18. data/doc/jasmine/symbols/jasmine.Spy.html +855 -0
  19. data/doc/jasmine/symbols/jasmine.Suite.html +705 -0
  20. data/doc/jasmine/symbols/jasmine.XMLReporter.html +328 -0
  21. data/doc/jasmine/symbols/jasmine.html +1359 -0
  22. data/doc/jasmine/symbols/jasmine.util.html +535 -0
  23. data/doc/jasmine/symbols/src/lib_EnvjsReporter.js.html +149 -0
  24. data/doc/jasmine/symbols/src/lib_TrivialReporter.js.html +127 -0
  25. data/doc/jasmine/symbols/src/lib_XMLReporter.js.html +210 -0
  26. data/doc/jasmine/symbols/src/src_Block.js.html +35 -0
  27. data/doc/jasmine/symbols/src/src_Env.js.html +233 -0
  28. data/doc/jasmine/symbols/src/src_JsApiReporter.js.html +110 -0
  29. data/doc/jasmine/symbols/src/src_Matchers.js.html +399 -0
  30. data/doc/jasmine/symbols/src/src_MultiReporter.js.html +36 -0
  31. data/doc/jasmine/symbols/src/src_NestedResults.js.html +88 -0
  32. data/doc/jasmine/symbols/src/src_PrettyPrinter.js.html +128 -0
  33. data/doc/jasmine/symbols/src/src_Queue.js.html +119 -0
  34. data/doc/jasmine/symbols/src/src_Reporter.js.html +35 -0
  35. data/doc/jasmine/symbols/src/src_Reporters.js.html +51 -0
  36. data/doc/jasmine/symbols/src/src_Runner.js.html +75 -0
  37. data/doc/jasmine/symbols/src/src_Spec.js.html +228 -0
  38. data/doc/jasmine/symbols/src/src_Suite.js.html +77 -0
  39. data/doc/jasmine/symbols/src/src_WaitsBlock.js.html +21 -0
  40. data/doc/jasmine/symbols/src/src_WaitsForBlock.js.html +45 -0
  41. data/doc/jasmine/symbols/src/src_base.js.html +566 -0
  42. data/doc/jasmine/symbols/src/src_mock-timeout.js.html +185 -0
  43. data/doc/jasmine/symbols/src/src_util.js.html +75 -0
  44. data/lib/jazz.rb +0 -0
  45. data/lib/jazz/intro.js +46 -0
  46. data/lib/jazz/jasmine/EnvjsReporter.js +141 -0
  47. data/lib/jazz/jasmine/TrivialReporter.js +155 -0
  48. data/lib/jazz/jasmine/XMLReporter.js +241 -0
  49. data/lib/jazz/jasmine/consolex.js +28 -0
  50. data/lib/jazz/jasmine/jasmine-0.10.0.js +2526 -0
  51. data/lib/jazz/jasmine/jasmine.js +2526 -0
  52. data/lib/jazz/jasmine/json2.js +478 -0
  53. data/lib/jazz/options.rb +26 -0
  54. data/lib/jazz/outro.js +3 -0
  55. data/lib/jazz/qintro.js +113 -0
  56. data/lib/jazz/qoutro.js +3 -0
  57. data/lib/jazz/qunit/qunit.css +17 -0
  58. data/lib/jazz/qunit/qunit.js +1027 -0
  59. data/spec/example/hello_world_spec.js +29 -0
  60. data/spec/example/nested/HelloWorldSpec.js +13 -0
  61. data/spec/example/nested/SpecHelper.js +1 -0
  62. data/spec/example/plain_spec.js +8 -0
  63. data/spec/example/spec_helper.js +1 -0
  64. data/spec/spec_helper.js +18 -0
  65. data/spec/spec_runner.js +143 -0
  66. data/test/jazz_test.rb +7 -0
  67. data/test/test_helper.rb +10 -0
  68. data/vendor/jasmine/MIT.LICENSE +20 -0
  69. data/vendor/jasmine/README.markdown +479 -0
  70. data/vendor/jasmine/Rakefile +155 -0
  71. data/vendor/jasmine/Wakefile +68 -0
  72. data/vendor/jasmine/contrib/ruby/jasmine_runner.rb +334 -0
  73. data/vendor/jasmine/contrib/ruby/jasmine_spec_builder.rb +153 -0
  74. data/vendor/jasmine/contrib/ruby/run.html +47 -0
  75. data/vendor/jasmine/contrib/ruby/spec/jasmine_runner_spec.rb +71 -0
  76. data/vendor/jasmine/doc/files.html +460 -0
  77. data/vendor/jasmine/doc/index.html +322 -0
  78. data/vendor/jasmine/doc/symbols/_global_.html +1083 -0
  79. data/vendor/jasmine/doc/symbols/jasmine.Block.html +417 -0
  80. data/vendor/jasmine/doc/symbols/jasmine.Clock.html +678 -0
  81. data/vendor/jasmine/doc/symbols/jasmine.Env.html +1135 -0
  82. data/vendor/jasmine/doc/symbols/jasmine.EnvjsReporter.html +328 -0
  83. data/vendor/jasmine/doc/symbols/jasmine.JsApiReporter.html +822 -0
  84. data/vendor/jasmine/doc/symbols/jasmine.Matchers.html +1106 -0
  85. data/vendor/jasmine/doc/symbols/jasmine.MultiReporter.html +394 -0
  86. data/vendor/jasmine/doc/symbols/jasmine.NestedResults.html +710 -0
  87. data/vendor/jasmine/doc/symbols/jasmine.Reporter.html +574 -0
  88. data/vendor/jasmine/doc/symbols/jasmine.Runner.html +710 -0
  89. data/vendor/jasmine/doc/symbols/jasmine.Spec.html +1372 -0
  90. data/vendor/jasmine/doc/symbols/jasmine.Spy.html +855 -0
  91. data/vendor/jasmine/doc/symbols/jasmine.Suite.html +705 -0
  92. data/vendor/jasmine/doc/symbols/jasmine.XMLReporter.html +328 -0
  93. data/vendor/jasmine/doc/symbols/jasmine.html +1359 -0
  94. data/vendor/jasmine/doc/symbols/jasmine.util.html +535 -0
  95. data/vendor/jasmine/doc/symbols/src/lib_EnvjsReporter.js.html +149 -0
  96. data/vendor/jasmine/doc/symbols/src/lib_TrivialReporter.js.html +127 -0
  97. data/vendor/jasmine/doc/symbols/src/lib_XMLReporter.js.html +210 -0
  98. data/vendor/jasmine/doc/symbols/src/src_Block.js.html +35 -0
  99. data/vendor/jasmine/doc/symbols/src/src_Env.js.html +233 -0
  100. data/vendor/jasmine/doc/symbols/src/src_JsApiReporter.js.html +110 -0
  101. data/vendor/jasmine/doc/symbols/src/src_Matchers.js.html +399 -0
  102. data/vendor/jasmine/doc/symbols/src/src_MultiReporter.js.html +36 -0
  103. data/vendor/jasmine/doc/symbols/src/src_NestedResults.js.html +88 -0
  104. data/vendor/jasmine/doc/symbols/src/src_PrettyPrinter.js.html +128 -0
  105. data/vendor/jasmine/doc/symbols/src/src_Queue.js.html +119 -0
  106. data/vendor/jasmine/doc/symbols/src/src_Reporter.js.html +35 -0
  107. data/vendor/jasmine/doc/symbols/src/src_Reporters.js.html +51 -0
  108. data/vendor/jasmine/doc/symbols/src/src_Runner.js.html +75 -0
  109. data/vendor/jasmine/doc/symbols/src/src_Spec.js.html +228 -0
  110. data/vendor/jasmine/doc/symbols/src/src_Suite.js.html +77 -0
  111. data/vendor/jasmine/doc/symbols/src/src_WaitsBlock.js.html +21 -0
  112. data/vendor/jasmine/doc/symbols/src/src_WaitsForBlock.js.html +45 -0
  113. data/vendor/jasmine/doc/symbols/src/src_base.js.html +566 -0
  114. data/vendor/jasmine/doc/symbols/src/src_mock-timeout.js.html +185 -0
  115. data/vendor/jasmine/doc/symbols/src/src_util.js.html +75 -0
  116. data/vendor/jasmine/examples/html/example_suite.html +27 -0
  117. data/vendor/jasmine/examples/html/spec/example_suite.js +11 -0
  118. data/vendor/jasmine/examples/ruby/Rakefile +33 -0
  119. data/vendor/jasmine/examples/ruby/spec/example/example_spec.js +11 -0
  120. data/vendor/jasmine/examples/ruby/spec/jasmine_helper.rb +41 -0
  121. data/vendor/jasmine/examples/ruby/spec/jasmine_spec.rb +31 -0
  122. data/vendor/jasmine/examples/ruby/spec/saucelabs.yml +24 -0
  123. data/vendor/jasmine/geminstaller.yml +23 -0
  124. data/vendor/jasmine/images/fail-16.png +0 -0
  125. data/vendor/jasmine/images/fail.png +0 -0
  126. data/vendor/jasmine/images/go-16.png +0 -0
  127. data/vendor/jasmine/images/go.png +0 -0
  128. data/vendor/jasmine/images/pending-16.png +0 -0
  129. data/vendor/jasmine/images/pending.png +0 -0
  130. data/vendor/jasmine/images/question-bk.png +0 -0
  131. data/vendor/jasmine/images/questionbk-16.png +0 -0
  132. data/vendor/jasmine/images/spinner.gif +0 -0
  133. data/vendor/jasmine/lib/EnvjsReporter.js +141 -0
  134. data/vendor/jasmine/lib/TrivialReporter.js +155 -0
  135. data/vendor/jasmine/lib/XMLReporter.js +241 -0
  136. data/vendor/jasmine/lib/consolex.js +28 -0
  137. data/vendor/jasmine/lib/jasmine-0.10.0.js +2526 -0
  138. data/vendor/jasmine/lib/jasmine.css +86 -0
  139. data/vendor/jasmine/lib/json2.js +478 -0
  140. data/vendor/jasmine/spec/jasmine_helper.rb +44 -0
  141. data/vendor/jasmine/spec/jasmine_spec.rb +31 -0
  142. data/vendor/jasmine/spec/runner.html +43 -0
  143. data/vendor/jasmine/spec/runner.js +78 -0
  144. data/vendor/jasmine/spec/saucelabs.yml +24 -0
  145. data/vendor/jasmine/spec/suites/EnvSpec.js +71 -0
  146. data/vendor/jasmine/spec/suites/ExceptionsSpec.js +107 -0
  147. data/vendor/jasmine/spec/suites/JsApiReporterSpec.js +82 -0
  148. data/vendor/jasmine/spec/suites/MatchersSpec.js +589 -0
  149. data/vendor/jasmine/spec/suites/MockClockSpec.js +34 -0
  150. data/vendor/jasmine/spec/suites/MultiReporterSpec.js +30 -0
  151. data/vendor/jasmine/spec/suites/NestedResultsSpec.js +54 -0
  152. data/vendor/jasmine/spec/suites/PrettyPrintSpec.js +93 -0
  153. data/vendor/jasmine/spec/suites/QueueSpec.js +23 -0
  154. data/vendor/jasmine/spec/suites/ReporterSpec.js +60 -0
  155. data/vendor/jasmine/spec/suites/RunnerSpec.js +258 -0
  156. data/vendor/jasmine/spec/suites/SpecRunningSpec.js +1117 -0
  157. data/vendor/jasmine/spec/suites/SpecSpec.js +110 -0
  158. data/vendor/jasmine/spec/suites/SpySpec.js +187 -0
  159. data/vendor/jasmine/spec/suites/SuiteSpec.js +101 -0
  160. data/vendor/jasmine/spec/suites/TrivialReporterSpec.js +140 -0
  161. data/vendor/jasmine/spec/suites/UtilSpec.js +23 -0
  162. data/vendor/jasmine/src/Block.js +34 -0
  163. data/vendor/jasmine/src/Env.js +236 -0
  164. data/vendor/jasmine/src/JsApiReporter.js +103 -0
  165. data/vendor/jasmine/src/Matchers.js +326 -0
  166. data/vendor/jasmine/src/MultiReporter.js +28 -0
  167. data/vendor/jasmine/src/NestedResults.js +99 -0
  168. data/vendor/jasmine/src/PrettyPrinter.js +122 -0
  169. data/vendor/jasmine/src/Queue.js +210 -0
  170. data/vendor/jasmine/src/Reporter.js +27 -0
  171. data/vendor/jasmine/src/Reporters.js +43 -0
  172. data/vendor/jasmine/src/Runner.js +68 -0
  173. data/vendor/jasmine/src/Spec.js +254 -0
  174. data/vendor/jasmine/src/Suite.js +70 -0
  175. data/vendor/jasmine/src/WaitsBlock.js +13 -0
  176. data/vendor/jasmine/src/WaitsForBlock.js +38 -0
  177. data/vendor/jasmine/src/base.js +604 -0
  178. data/vendor/jasmine/src/mock-timeout.js +177 -0
  179. data/vendor/jasmine/src/util.js +67 -0
  180. data/vendor/jasmine/src/version.json +5 -0
  181. metadata +292 -0
@@ -0,0 +1,44 @@
1
+ class JasmineHelper
2
+ def self.jasmine_lib_dir
3
+ File.expand_path(File.join(jasmine_root, 'lib'))
4
+ end
5
+
6
+ def self.jasmine
7
+ ['/lib/' + File.basename(Dir.glob("#{JasmineHelper.jasmine_lib_dir}/jasmine*.js").first)] +
8
+ ['/lib/json2.js',
9
+ '/lib/TrivialReporter.js']
10
+ end
11
+
12
+ def self.jasmine_root
13
+ File.expand_path(File.join(File.dirname(__FILE__), '..'))
14
+ end
15
+
16
+
17
+ def self.jasmine_src_dir
18
+ File.expand_path(File.join(jasmine_root, 'src'))
19
+ end
20
+
21
+ def self.jasmine_lib_dir
22
+ File.expand_path(File.join(jasmine_root, 'lib'))
23
+ end
24
+
25
+ def self.jasmine_spec_dir
26
+ File.expand_path(File.join(jasmine_root, 'spec'))
27
+ end
28
+
29
+ def self.raw_spec_files
30
+ Dir.glob(File.join(jasmine_spec_dir, "**/*[Ss]pec.js"))
31
+ end
32
+
33
+ def self.specs
34
+ Jasmine.cachebust(raw_spec_files).collect {|f| f.sub(jasmine_spec_dir, "/spec")}
35
+ end
36
+
37
+ def self.dir_mappings
38
+ {
39
+ "/src" => jasmine_src_dir,
40
+ "/spec" => jasmine_spec_dir,
41
+ "/lib" => jasmine_lib_dir
42
+ }
43
+ end
44
+ end
@@ -0,0 +1,31 @@
1
+ require 'rubygems'
2
+ require File.expand_path(File.join(File.dirname(__FILE__), "jasmine_helper.rb"))
3
+ require File.expand_path(File.join(JasmineHelper.jasmine_root, "contrib/ruby/jasmine_spec_builder"))
4
+
5
+ jasmine_runner = if ENV['SAUCELABS'] == 'true'
6
+ require 'sauce_tunnel'
7
+ require 'selenium_config'
8
+ Jasmine::SauceLabsRunner.new(JasmineHelper.specs,
9
+ JasmineHelper.dir_mappings,
10
+ :saucelabs_config => 'saucelabs',
11
+ :saucelabs_config_file => File.expand_path(File.join(File.dirname(__FILE__), "saucelabs.yml")))
12
+ else
13
+ require "selenium_rc"
14
+ Jasmine::Runner.new(SeleniumRC::Server.new.jar_path,
15
+ JasmineHelper.specs,
16
+ JasmineHelper.dir_mappings)
17
+ end
18
+
19
+ spec_builder = Jasmine::SpecBuilder.new(JasmineHelper.raw_spec_files, jasmine_runner)
20
+
21
+ should_stop = false
22
+
23
+ Spec::Runner.configure do |config|
24
+ config.after(:suite) do
25
+ spec_builder.stop if should_stop
26
+ end
27
+ end
28
+
29
+ spec_builder.start
30
+ should_stop = true
31
+ spec_builder.declare_suites
@@ -0,0 +1,43 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
2
+ "http://www.w3.org/TR/html4/loose.dtd">
3
+ <html>
4
+ <head>
5
+ <title>Jasmine Test Runner</title>
6
+
7
+ <script type="text/javascript">
8
+ print = ( this.console && this.console.log || this.print );
9
+ print && ( this.console || ( ( this.console = {} ) && ( this.console.log = print ) ) );
10
+ this.Envjs && this.Envjs.$env && ( this.Envjs.$env.logLevel = this.Envjs.$env.WARNING );
11
+ undefined = "diz be undefined yo";
12
+ </script>
13
+
14
+ <script type="text/javascript" src="../src/base.js"></script>
15
+ <script type="text/javascript" src="../src/util.js"></script>
16
+ <script type="text/javascript" src="../src/Env.js"></script>
17
+ <script type="text/javascript" src="../src/Reporter.js"></script>
18
+ <script type="text/javascript" src="../src/Block.js"></script>
19
+
20
+ <script type="text/javascript" src="../src/JsApiReporter.js"></script>
21
+ <script type="text/javascript" src="../src/Matchers.js"></script>
22
+ <script type="text/javascript" src="../src/mock-timeout.js"></script>
23
+ <script type="text/javascript" src="../src/MultiReporter.js"></script>
24
+ <script type="text/javascript" src="../src/NestedResults.js"></script>
25
+ <script type="text/javascript" src="../src/PrettyPrinter.js"></script>
26
+ <script type="text/javascript" src="../src/Queue.js"></script>
27
+ <script type="text/javascript" src="../src/Reporters.js"></script>
28
+ <script type="text/javascript" src="../src/Runner.js"></script>
29
+ <script type="text/javascript" src="../src/Spec.js"></script>
30
+ <script type="text/javascript" src="../src/Suite.js"></script>
31
+ <script type="text/javascript" src="../src/WaitsBlock.js"></script>
32
+ <script type="text/javascript" src="../src/WaitsForBlock.js"></script>
33
+
34
+ <script type="text/javascript" src="../lib/TrivialReporter.js"></script>
35
+ <script type="text/javascript" src="../lib/consolex.js"></script>
36
+
37
+ <script type="text/javascript" src="runner.js"></script>
38
+
39
+ <link href="../lib/jasmine.css" rel="stylesheet" type="text/css"/>
40
+ </head>
41
+ <body>
42
+ </body>
43
+ </html>
@@ -0,0 +1,78 @@
1
+ if(!this.jasmine){
2
+ (function(){
3
+ this.Envjs && this.Envjs.$env && ( this.Envjs.$env.logLevel = this.Envjs.$env.WARNING );
4
+ load("src/base.js");
5
+ load("src/util.js");
6
+ load("src/Env.js");
7
+ load("src/Reporter.js");
8
+ load("src/Block.js");
9
+
10
+ load("src/JsApiReporter.js");
11
+ load("src/Matchers.js");
12
+ load("src/mock-timeout.js");
13
+ load("src/MultiReporter.js");
14
+ load("src/NestedResults.js");
15
+ load("src/PrettyPrinter.js");
16
+ load("src/Queue.js");
17
+ load("src/Reporters.js");
18
+ load("src/Runner.js");
19
+ load("src/Spec.js");
20
+ load("src/Suite.js");
21
+ load("src/WaitsBlock.js");
22
+ load("src/WaitsForBlock.js");
23
+
24
+ load("lib/TrivialReporter.js");
25
+ })();
26
+ }
27
+
28
+ if(this.Envjs && !jasmine.EnvjsReporter){
29
+ load("lib/EnvjsReporter.js");
30
+ }
31
+
32
+ (function () {
33
+ var suites = [
34
+ 'suites/EnvSpec.js',
35
+ 'suites/ExceptionsSpec.js',
36
+ 'suites/JsApiReporterSpec.js',
37
+ 'suites/MatchersSpec.js',
38
+ 'suites/MockClockSpec.js',
39
+ 'suites/MultiReporterSpec.js',
40
+ 'suites/NestedResultsSpec.js',
41
+ 'suites/PrettyPrintSpec.js',
42
+ 'suites/ReporterSpec.js',
43
+ 'suites/RunnerSpec.js',
44
+ 'suites/QueueSpec.js',
45
+ 'suites/SpecSpec.js',
46
+ 'suites/SpecRunningSpec.js',
47
+ 'suites/SpySpec.js',
48
+ 'suites/SuiteSpec.js',
49
+ 'suites/TrivialReporterSpec.js',
50
+ 'suites/UtilSpec.js'
51
+ ];
52
+
53
+ var embedded = window.location != "about:blank";
54
+
55
+ for (var i = 0; i < suites.length; i++) {
56
+ var path = embedded ? suites[i] : "spec/" + suites[i];
57
+ jasmine.include(path,embedded);
58
+ }
59
+
60
+ var jasmineEnv = jasmine.getEnv();
61
+ jasmineEnv.updateInterval = 1000;
62
+
63
+ if(embedded) {
64
+ var trivialReporter = new jasmine.TrivialReporter();
65
+ jasmineEnv.addReporter(trivialReporter);
66
+ jasmineEnv.specFilter = function(spec) {
67
+ return trivialReporter.specFilter(spec);
68
+ };
69
+ }
70
+
71
+ if(embedded && window.Envjs && jasmine.EnvjsReporter){
72
+ jasmineEnv.addReporter(new jasmine.EnvjsReporter());
73
+ }
74
+
75
+ window.onload = function() {
76
+ jasmineEnv.execute();
77
+ };
78
+ })();
@@ -0,0 +1,24 @@
1
+ local:
2
+ application_framework: :selenium
3
+ #
4
+ # Possible Sauce Labs configurations as of 2009/11/19
5
+ # From: http://saucelabs.com/products/docs/sauce-ondemand/browsers
6
+ # os: "Windows 2003"
7
+ # browser: "iexplore"
8
+ # browser-version: "6.", "7.", "8."
9
+ # browser: "firefox"
10
+ # browser-version: "2.", "3.0", "3.5"
11
+ # browser: "safari"
12
+ # browser-version: "3.", "4."
13
+ # browser: "opera"
14
+ # browser-version: "9."
15
+ # browser: "googlechrome"
16
+ # browser-version: ""
17
+ # os: "Linux"
18
+ # browser: "firefox"
19
+ # browser-version: "3."
20
+ saucelabs:
21
+ application_framework: :external
22
+ selenium_server_address: "saucelabs.com"
23
+ selenium_browser_key: '{"username": "--YOUR-SAUCELABS-USERNAME--", "access-key": "--YOUR-SAUCELABS-ACCESS-KEY--", "os": "Linux", "browser": "firefox", "browser-version": "3."}'
24
+ application_port: "80"
@@ -0,0 +1,71 @@
1
+ describe("jasmine.Env", function() {
2
+ var env;
3
+ beforeEach(function() {
4
+ env = new jasmine.Env();
5
+ env.updateInterval = 0;
6
+ });
7
+
8
+ describe('ids', function () {
9
+
10
+ it('nextSpecId should return consecutive integers, starting at 0', function () {
11
+ expect(env.nextSpecId()).toEqual(0);
12
+ expect(env.nextSpecId()).toEqual(1);
13
+ expect(env.nextSpecId()).toEqual(2);
14
+ });
15
+
16
+ });
17
+ describe("reporting", function() {
18
+ var fakeReporter;
19
+
20
+ beforeEach(function() {
21
+ fakeReporter = jasmine.createSpyObj("fakeReporter", ["log"]);
22
+ });
23
+
24
+ describe('version', function () {
25
+ var oldVersion;
26
+
27
+ beforeEach(function () {
28
+ oldVersion = jasmine.version_;
29
+ });
30
+
31
+ afterEach(function () {
32
+ jasmine.version_ = oldVersion;
33
+ });
34
+
35
+ it('should raise an error if version is not set', function () {
36
+ jasmine.version_ = null;
37
+ var exception;
38
+ try {
39
+ env.version();
40
+ }
41
+ catch (e) {
42
+ exception = e;
43
+ }
44
+ expect(exception.message).toEqual('Version not set');
45
+
46
+ });
47
+
48
+ it("version should return the current version as an int", function() {
49
+ jasmine.version_ = {
50
+ "major": 1,
51
+ "minor": 9,
52
+ "build": 7,
53
+ "revision": 8
54
+ };
55
+ expect(env.version()).toEqual({
56
+ "major": 1,
57
+ "minor": 9,
58
+ "build": 7,
59
+ "revision": 8
60
+ });
61
+
62
+ });
63
+ });
64
+
65
+ it("should allow reporters to be registered", function() {
66
+ env.addReporter(fakeReporter);
67
+ env.reporter.log("message");
68
+ expect(fakeReporter.log).wasCalledWith("message");
69
+ });
70
+ });
71
+ });
@@ -0,0 +1,107 @@
1
+ describe('Exceptions:', function() {
2
+ var env;
3
+
4
+ beforeEach(function() {
5
+ env = new jasmine.Env();
6
+ env.updateInterval = 0;
7
+ });
8
+
9
+ it('jasmine.formatException formats Firefox exception messages as expected', function() {
10
+ var sampleFirefoxException = {
11
+ fileName: 'foo.js',
12
+ line: '1978',
13
+ message: 'you got your foo in my bar',
14
+ name: 'A Classic Mistake'
15
+ };
16
+
17
+ var expected = 'A Classic Mistake: you got your foo in my bar in foo.js (line 1978)';
18
+
19
+ expect(jasmine.util.formatException(sampleFirefoxException)).toEqual(expected);
20
+ });
21
+
22
+ it('jasmine.formatException formats Webkit exception messages as expected', function() {
23
+ var sampleWebkitException = {
24
+ sourceURL: 'foo.js',
25
+ lineNumber: '1978',
26
+ message: 'you got your foo in my bar',
27
+ name: 'A Classic Mistake'
28
+ };
29
+
30
+ var expected = 'A Classic Mistake: you got your foo in my bar in foo.js (line 1978)';
31
+
32
+ expect(jasmine.util.formatException(sampleWebkitException)).toEqual(expected);
33
+ });
34
+
35
+ it('should handle exceptions thrown, but continue', function() {
36
+ var fakeTimer = new jasmine.FakeTimer();
37
+ env.setTimeout = fakeTimer.setTimeout;
38
+ env.clearTimeout = fakeTimer.clearTimeout;
39
+ env.setInterval = fakeTimer.setInterval;
40
+ env.clearInterval = fakeTimer.clearInterval;
41
+
42
+ //we run two exception tests to make sure we continue after throwing an exception
43
+ var suite = env.describe('Suite for handles exceptions', function () {
44
+ env.it('should be a test that fails because it throws an exception', function() {
45
+ throw new Error('fake error 1');
46
+ });
47
+
48
+ env.it('should be another test that fails because it throws an exception', function() {
49
+ this.runs(function () {
50
+ throw new Error('fake error 2');
51
+ });
52
+ this.runs(function () {
53
+ this.expect(true).toEqual(true);
54
+ });
55
+ });
56
+
57
+ env.it('should be a passing test that runs after exceptions are thrown', function() {
58
+ this.expect(true).toEqual(true);
59
+ });
60
+
61
+ env.it('should be another test that fails because it throws an exception after a wait', function() {
62
+ this.runs(function () {
63
+ var foo = 'foo';
64
+ });
65
+ this.waits(250);
66
+ this.runs(function () {
67
+ throw new Error('fake error 3');
68
+ });
69
+ });
70
+
71
+ env.it('should be a passing test that runs after exceptions are thrown from a async test', function() {
72
+ this.expect(true).toEqual(true);
73
+ });
74
+ });
75
+
76
+ var runner = env.currentRunner();
77
+ suite.execute();
78
+ fakeTimer.tick(2500);
79
+
80
+ var suiteResults = suite.results();
81
+ var specResults = suiteResults.getItems();
82
+
83
+ expect(suiteResults.passed()).toEqual(false);
84
+ //
85
+ expect(specResults.length).toEqual(5);
86
+ expect(specResults[0].passed()).toMatch(false);
87
+ var blockResults = specResults[0].getItems();
88
+ expect(blockResults[0].passed()).toEqual(false);
89
+ expect(blockResults[0].message).toMatch(/fake error 1/);
90
+
91
+ expect(specResults[1].passed()).toEqual(false);
92
+ var blockResults = specResults[1].getItems();
93
+ expect(blockResults[0].passed()).toEqual(false);
94
+ expect(blockResults[0].message).toMatch(/fake error 2/),
95
+ expect(blockResults[1].passed()).toEqual(true);
96
+
97
+ expect(specResults[2].passed()).toEqual(true);
98
+
99
+ expect(specResults[3].passed()).toEqual(false);
100
+ blockResults = specResults[3].getItems();
101
+ expect(blockResults[0].message).toMatch(/fake error 3/);
102
+
103
+ expect(specResults[4].passed()).toEqual(true);
104
+
105
+ });
106
+
107
+ });
@@ -0,0 +1,82 @@
1
+ describe('jasmine.jsApiReporter', function() {
2
+
3
+
4
+ describe('results', function () {
5
+ var reporter, spec1, spec2, spec3, expectedSpec1Results, expectedSpec2Results;
6
+
7
+ beforeEach(function() {
8
+ var env = new jasmine.Env();
9
+ env.updateInterval = 0;
10
+ var suite = new jasmine.Suite(env);
11
+ spec1 = new jasmine.Spec(env, suite, 'spec 1');
12
+ spec1.runs(function () {
13
+ this.expect(true).toEqual(true);
14
+ });
15
+ expectedSpec1Results = {
16
+ messages: spec1.results().getItems(),
17
+ result: "passed"
18
+ };
19
+ spec2 = new jasmine.Spec(env, suite, 'spec 2');
20
+ spec2.runs(function () {
21
+ this.expect(true).toEqual(false);
22
+ });
23
+ expectedSpec2Results = {
24
+ messages: spec2.results().getItems(),
25
+ result: "failed"
26
+ };
27
+
28
+ spec3 = new jasmine.Spec(env, suite, 'spec 3');
29
+ spec3.runs(function () {
30
+ this.log('some debug message')
31
+ });
32
+
33
+ spec1.execute();
34
+ spec2.execute();
35
+ spec3.execute();
36
+
37
+ reporter = new jasmine.JsApiReporter();
38
+ reporter.reportSpecResults(spec1);
39
+ reporter.reportSpecResults(spec2);
40
+ reporter.reportSpecResults(spec3);
41
+ });
42
+
43
+ it('resultForSpec() should return the result for the given spec', function () {
44
+ expect(reporter.resultsForSpec(spec1.id)).toEqual(expectedSpec1Results);
45
+ expect(reporter.resultsForSpec(spec2.id)).toEqual(expectedSpec2Results);
46
+
47
+ });
48
+
49
+ it('results() should return a hash of all results, indexed by spec id', function () {
50
+ expect(reporter.results()[spec1.id]).toEqual(expectedSpec1Results);
51
+ expect(reporter.results()[spec2.id]).toEqual(expectedSpec2Results);
52
+ });
53
+
54
+ describe("#summarizeResult_", function() {
55
+ it("should summarize a passing result", function() {
56
+ var result = reporter.results()[spec1.id];
57
+ var summarizedResult = reporter.summarizeResult_(result);
58
+ expect(summarizedResult.result).toEqual('passed');
59
+ expect(summarizedResult.messages.length).toEqual(1);
60
+ expect(summarizedResult.messages[0].message).toEqual(result.messages[0].message);
61
+ expect(summarizedResult.messages[0].passed).toBeTruthy();
62
+ expect(summarizedResult.messages[0].type).toEqual('ExpectationResult');
63
+ expect(summarizedResult.messages[0].text).toEqual(jasmine.undefined);
64
+ expect(summarizedResult.messages[0].trace.stack).toEqual(jasmine.undefined);
65
+ });
66
+
67
+ it("should have a stack trace for failing specs", function() {
68
+ var result = reporter.results()[spec2.id];
69
+ var summarizedResult = reporter.summarizeResult_(result);
70
+ expect(summarizedResult.result).toEqual('failed');
71
+ expect(summarizedResult.messages[0].trace.stack).toEqual(result.messages[0].trace.stack);
72
+ });
73
+
74
+ it("should have messages for specs with messages", function() {
75
+ var result = reporter.results()[spec3.id];
76
+ var summarizedResult = reporter.summarizeResult_(result);
77
+ expect(summarizedResult.result).toEqual('passed');
78
+ expect(summarizedResult.messages[0].text).toEqual('some debug message');
79
+ });
80
+ });
81
+ });
82
+ });