jazz 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ });