teaspoon 0.9.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +141 -0
  3. data/README.md +9 -19
  4. data/{vendor → app}/assets/javascripts/support/bind-poly.js +0 -0
  5. data/{vendor → app}/assets/javascripts/support/sinon.js +0 -0
  6. data/app/assets/javascripts/teaspoon-filterer.js +55 -0
  7. data/app/assets/javascripts/teaspoon/error.coffee +5 -0
  8. data/app/assets/javascripts/teaspoon/{base/fixture.coffee → fixture.coffee} +15 -15
  9. data/app/assets/javascripts/teaspoon/{base/hook.coffee → hook.coffee} +0 -0
  10. data/app/assets/javascripts/teaspoon/{base/reporters → reporters}/console.coffee +18 -10
  11. data/app/assets/javascripts/teaspoon/{base/reporters → reporters}/html.coffee +43 -40
  12. data/app/assets/javascripts/teaspoon/{base/reporters → reporters}/html/base_view.coffee +0 -0
  13. data/app/assets/javascripts/teaspoon/{base/reporters → reporters}/html/failure_view.coffee +2 -0
  14. data/app/assets/javascripts/teaspoon/reporters/html/progress_view.coffee +18 -0
  15. data/app/assets/javascripts/teaspoon/{base/reporters/html/progress_view.coffee → reporters/html/radial_progress_view.coffee} +1 -34
  16. data/app/assets/javascripts/teaspoon/reporters/html/simple_progress_view.coffee +15 -0
  17. data/app/assets/javascripts/teaspoon/{base/reporters → reporters}/html/spec_view.coffee +5 -3
  18. data/app/assets/javascripts/teaspoon/{base/reporters → reporters}/html/suite_view.coffee +4 -2
  19. data/app/assets/javascripts/teaspoon/{base/reporters → reporters}/html/template.coffee +0 -0
  20. data/app/assets/javascripts/teaspoon/{base/runner.coffee → runner.coffee} +7 -3
  21. data/app/assets/javascripts/teaspoon/teaspoon.coffee +90 -32
  22. data/app/controllers/teaspoon/suite_controller.rb +5 -0
  23. data/app/views/teaspoon/suite/index.html.erb +1 -1
  24. data/lib/generators/teaspoon/install/install_generator.rb +67 -37
  25. data/lib/generators/teaspoon/install/templates/MISSING_FRAMEWORK +14 -0
  26. data/lib/generators/teaspoon/install/{POST_INSTALL → templates/POST_INSTALL} +0 -0
  27. data/lib/generators/teaspoon/install/templates/env.rb.tt +14 -0
  28. data/lib/generators/teaspoon/install/templates/{jasmine/env_comments.rb.tt → env_comments.rb.tt} +34 -43
  29. data/lib/tasks/teaspoon/info.rake +17 -0
  30. data/lib/teaspoon-devkit.rb +61 -0
  31. data/lib/teaspoon.rb +2 -0
  32. data/lib/teaspoon/command_line.rb +19 -14
  33. data/lib/teaspoon/configuration.rb +24 -35
  34. data/lib/teaspoon/console.rb +11 -21
  35. data/lib/teaspoon/coverage.rb +14 -7
  36. data/lib/teaspoon/deprecated.rb +22 -4
  37. data/lib/teaspoon/driver.rb +15 -0
  38. data/lib/teaspoon/driver/base.rb +7 -0
  39. data/lib/teaspoon/{drivers/capybara_webkit_driver.rb → driver/capybara_webkit.rb} +8 -5
  40. data/lib/teaspoon/{drivers/phantomjs_driver.rb → driver/phantomjs.rb} +8 -4
  41. data/lib/teaspoon/{drivers → driver}/phantomjs/runner.js +0 -0
  42. data/lib/teaspoon/{drivers/selenium_driver.rb → driver/selenium.rb} +11 -9
  43. data/lib/teaspoon/engine.rb +38 -25
  44. data/lib/teaspoon/environment.rb +24 -15
  45. data/lib/teaspoon/exceptions.rb +154 -41
  46. data/lib/teaspoon/exporter.rb +2 -2
  47. data/lib/teaspoon/formatter.rb +30 -0
  48. data/lib/teaspoon/{formatters → formatter}/base.rb +2 -36
  49. data/lib/teaspoon/{formatters/clean_formatter.rb → formatter/clean.rb} +4 -2
  50. data/lib/teaspoon/{formatters/documentation_formatter.rb → formatter/documentation.rb} +4 -3
  51. data/lib/teaspoon/{formatters/dot_formatter.rb → formatter/dot.rb} +4 -3
  52. data/lib/teaspoon/{formatters/json_formatter.rb → formatter/json.rb} +4 -2
  53. data/lib/teaspoon/{formatters/junit_formatter.rb → formatter/junit.rb} +3 -2
  54. data/lib/teaspoon/{formatters → formatter}/modules/report_module.rb +1 -1
  55. data/lib/teaspoon/{formatters/pride_formatter.rb → formatter/pride.rb} +4 -2
  56. data/lib/teaspoon/{formatters/rspec_html_formatter.rb → formatter/rspec_html.rb} +3 -2
  57. data/lib/teaspoon/{formatters/snowday_formatter.rb → formatter/snowday.rb} +3 -2
  58. data/lib/teaspoon/formatter/swayze_or_oprah.rb +111 -0
  59. data/lib/teaspoon/{formatters/tap_formatter.rb → formatter/tap.rb} +4 -2
  60. data/lib/teaspoon/{formatters/tap_y_formatter.rb → formatter/tap_y.rb} +3 -2
  61. data/lib/teaspoon/{formatters/teamcity_formatter.rb → formatter/teamcity.rb} +4 -2
  62. data/lib/teaspoon/framework.rb +17 -0
  63. data/lib/teaspoon/framework/base.rb +88 -0
  64. data/lib/teaspoon/instrumentation.rb +12 -2
  65. data/lib/teaspoon/registry.rb +47 -0
  66. data/lib/teaspoon/registry/has_default.rb +11 -0
  67. data/lib/teaspoon/runner.rb +6 -7
  68. data/lib/teaspoon/server.rb +2 -2
  69. data/lib/teaspoon/suite.rb +28 -30
  70. data/lib/teaspoon/utility.rb +5 -0
  71. data/lib/teaspoon/version.rb +1 -1
  72. metadata +52 -276
  73. data/app/assets/javascripts/teaspoon-jasmine.js +0 -1344
  74. data/app/assets/javascripts/teaspoon-mocha.js +0 -1350
  75. data/app/assets/javascripts/teaspoon-qunit.js +0 -1415
  76. data/app/assets/javascripts/teaspoon-teaspoon.js +0 -51
  77. data/app/assets/javascripts/teaspoon/base/teaspoon.coffee +0 -69
  78. data/app/assets/javascripts/teaspoon/jasmine.coffee +0 -119
  79. data/app/assets/javascripts/teaspoon/jasmine/reporters/html.coffee +0 -11
  80. data/app/assets/javascripts/teaspoon/mocha.coffee +0 -90
  81. data/app/assets/javascripts/teaspoon/mocha/reporters/console.coffee +0 -16
  82. data/app/assets/javascripts/teaspoon/mocha/reporters/html.coffee +0 -27
  83. data/app/assets/javascripts/teaspoon/qunit.coffee +0 -81
  84. data/app/assets/javascripts/teaspoon/qunit/reporters/console.coffee +0 -25
  85. data/app/assets/javascripts/teaspoon/qunit/reporters/html.coffee +0 -80
  86. data/lib/generators/teaspoon/install/templates/jasmine/env.rb +0 -11
  87. data/lib/generators/teaspoon/install/templates/jasmine/spec_helper.coffee +0 -31
  88. data/lib/generators/teaspoon/install/templates/jasmine/spec_helper.js +0 -31
  89. data/lib/generators/teaspoon/install/templates/mocha/env.rb +0 -11
  90. data/lib/generators/teaspoon/install/templates/mocha/env_comments.rb.tt +0 -187
  91. data/lib/generators/teaspoon/install/templates/mocha/spec_helper.coffee +0 -40
  92. data/lib/generators/teaspoon/install/templates/mocha/spec_helper.js +0 -40
  93. data/lib/generators/teaspoon/install/templates/qunit/env.rb +0 -11
  94. data/lib/generators/teaspoon/install/templates/qunit/env_comments.rb.tt +0 -187
  95. data/lib/generators/teaspoon/install/templates/qunit/test_helper.coffee +0 -29
  96. data/lib/generators/teaspoon/install/templates/qunit/test_helper.js +0 -30
  97. data/lib/teaspoon/drivers/base.rb +0 -10
  98. data/lib/teaspoon/formatters/description.rb +0 -36
  99. data/lib/teaspoon/formatters/swayze_or_oprah_formatter.rb +0 -101
  100. data/spec/dummy/Rakefile +0 -7
  101. data/spec/dummy/app/assets/javascripts/instrumented1.coffee +0 -1
  102. data/spec/dummy/app/assets/javascripts/instrumented2.coffee +0 -1
  103. data/spec/dummy/app/assets/javascripts/integration/integration.coffee +0 -1
  104. data/spec/dummy/app/assets/javascripts/integration/integration_spec.coffee +0 -32
  105. data/spec/dummy/app/assets/javascripts/integration/spec_helper.coffee +0 -7
  106. data/spec/dummy/app/assets/javascripts/specs/asset_spec.js +0 -11
  107. data/spec/dummy/config.ru +0 -15
  108. data/spec/dummy/config/application.rb +0 -29
  109. data/spec/dummy/config/boot.rb +0 -3
  110. data/spec/dummy/config/environment.rb +0 -5
  111. data/spec/dummy/config/environments/development.rb +0 -41
  112. data/spec/dummy/config/environments/production.rb +0 -79
  113. data/spec/dummy/config/environments/test.rb +0 -42
  114. data/spec/dummy/config/routes.rb +0 -2
  115. data/spec/dummy/config/secrets.yml +0 -22
  116. data/spec/dummy/log/.gitkeep +0 -0
  117. data/spec/dummy/public/favicon.ico +0 -0
  118. data/spec/dummy/script/rails +0 -6
  119. data/spec/features/console_reporter_spec.rb +0 -62
  120. data/spec/features/hooks_spec.rb +0 -60
  121. data/spec/features/html_reporter_spec.rb +0 -81
  122. data/spec/features/install_generator_spec.rb +0 -54
  123. data/spec/features/instrumentation_spec.rb +0 -21
  124. data/spec/fixtures/coverage.json +0 -243
  125. data/spec/javascripts/fixtures/_body.html.erb +0 -1
  126. data/spec/javascripts/fixtures/fixture.html.haml +0 -4
  127. data/spec/javascripts/fixtures/fixture.json +0 -4
  128. data/spec/javascripts/jasmine_helper.coffee +0 -3
  129. data/spec/javascripts/mocha_helper.coffee +0 -4
  130. data/spec/javascripts/spec_helper.coffee +0 -7
  131. data/spec/javascripts/stylesheets/stylesheet.css.scss +0 -0
  132. data/spec/javascripts/support/json2.js +0 -486
  133. data/spec/javascripts/support/support.js.coffee +0 -0
  134. data/spec/javascripts/teaspoon/base/fixture_spec.coffee +0 -93
  135. data/spec/javascripts/teaspoon/base/reporters/console_spec.coffee +0 -162
  136. data/spec/javascripts/teaspoon/base/reporters/html/base_view_spec.coffee +0 -88
  137. data/spec/javascripts/teaspoon/base/reporters/html/failure_view_spec.coffee +0 -28
  138. data/spec/javascripts/teaspoon/base/reporters/html/progress_view_spec.coffee +0 -1
  139. data/spec/javascripts/teaspoon/base/reporters/html/spec_view_spec.coffee +0 -1
  140. data/spec/javascripts/teaspoon/base/reporters/html/suite_view_spec.coffee +0 -1
  141. data/spec/javascripts/teaspoon/base/reporters/html_spec.coffee +0 -372
  142. data/spec/javascripts/teaspoon/base/runner_spec.coffee +0 -58
  143. data/spec/javascripts/teaspoon/base/teaspoon_spec.coffee +0 -47
  144. data/spec/javascripts/teaspoon/jasmine/fixture_jspec.coffee +0 -13
  145. data/spec/javascripts/teaspoon/jasmine/models_jspec.coffee +0 -101
  146. data/spec/javascripts/teaspoon/jasmine/reporters/html_jspec.coffee +0 -17
  147. data/spec/javascripts/teaspoon/jasmine/runner_jspec.coffee +0 -59
  148. data/spec/javascripts/teaspoon/jasmine/spec_jspec.coffee +0 -3
  149. data/spec/javascripts/teaspoon/mocha/fixture_mspec.coffee +0 -12
  150. data/spec/javascripts/teaspoon/mocha/models_mspec.coffee +0 -93
  151. data/spec/javascripts/teaspoon/mocha/reporters/console_mspec.coffee +0 -24
  152. data/spec/javascripts/teaspoon/mocha/reporters/html_mspec.coffee +0 -41
  153. data/spec/javascripts/teaspoon/mocha/runner_mspec.coffee +0 -23
  154. data/spec/javascripts/teaspoon/mocha/spec_mspec.coffee +0 -9
  155. data/spec/javascripts/teaspoon/other/erb_spec.js.coffee.erb +0 -4
  156. data/spec/javascripts/teaspoon/phantomjs/runner_spec.coffee +0 -161
  157. data/spec/javascripts/turbolinks_helper.coffee +0 -2
  158. data/spec/spec_helper.rb +0 -25
  159. data/spec/support/aruba.rb +0 -15
  160. data/spec/teaspoon/command_line_spec.rb +0 -157
  161. data/spec/teaspoon/configuration_spec.rb +0 -236
  162. data/spec/teaspoon/console_spec.rb +0 -224
  163. data/spec/teaspoon/coverage_spec.rb +0 -118
  164. data/spec/teaspoon/drivers/base_spec.rb +0 -5
  165. data/spec/teaspoon/drivers/capybara_webkit_driver_spec.rb +0 -39
  166. data/spec/teaspoon/drivers/phantomjs_driver_spec.rb +0 -66
  167. data/spec/teaspoon/drivers/selenium_driver_spec.rb +0 -68
  168. data/spec/teaspoon/engine_spec.rb +0 -22
  169. data/spec/teaspoon/environment_spec.rb +0 -109
  170. data/spec/teaspoon/exceptions_spec.rb +0 -57
  171. data/spec/teaspoon/exporter_spec.rb +0 -96
  172. data/spec/teaspoon/formatters/base_spec.rb +0 -259
  173. data/spec/teaspoon/formatters/clean_formatter_spec.rb +0 -37
  174. data/spec/teaspoon/formatters/documentation_formatter_spec.rb +0 -127
  175. data/spec/teaspoon/formatters/dot_formatter_spec.rb +0 -116
  176. data/spec/teaspoon/formatters/json_formatter_spec.rb +0 -77
  177. data/spec/teaspoon/formatters/junit_formatter_spec.rb +0 -114
  178. data/spec/teaspoon/formatters/pride_formatter_spec.rb +0 -37
  179. data/spec/teaspoon/formatters/rspec_html_formatter_spec.rb +0 -107
  180. data/spec/teaspoon/formatters/snowday_formatter_spec.rb +0 -35
  181. data/spec/teaspoon/formatters/tap_formatter_spec.rb +0 -72
  182. data/spec/teaspoon/formatters/tap_y_formatter_spec.rb +0 -80
  183. data/spec/teaspoon/formatters/teamcity_formatter_spec.rb +0 -148
  184. data/spec/teaspoon/instrumentation_spec.rb +0 -113
  185. data/spec/teaspoon/result_spec.rb +0 -98
  186. data/spec/teaspoon/runner_spec.rb +0 -116
  187. data/spec/teaspoon/server_spec.rb +0 -105
  188. data/spec/teaspoon/suite_spec.rb +0 -138
  189. data/spec/teaspoon_env.rb +0 -39
  190. data/test/javascripts/qunit_helper.coffee +0 -3
  191. data/test/javascripts/teaspoon/qunit/fixture_test.coffee +0 -10
  192. data/test/javascripts/teaspoon/qunit/models_test.coffee +0 -66
  193. data/test/javascripts/teaspoon/qunit/reporters/console_test.coffee +0 -3
  194. data/test/javascripts/teaspoon/qunit/reporters/html/failure_view_test.coffee +0 -3
  195. data/test/javascripts/teaspoon/qunit/reporters/html/spec_view_test.coffee +0 -3
  196. data/test/javascripts/teaspoon/qunit/reporters/html/suite_view_test.coffee +0 -3
  197. data/test/javascripts/teaspoon/qunit/reporters/html_test.coffee +0 -3
  198. data/test/javascripts/teaspoon/qunit/runner_test.coffee +0 -18
  199. data/vendor/assets/javascripts/jasmine/1.3.1.js +0 -2602
  200. data/vendor/assets/javascripts/jasmine/2.0.0.js +0 -2412
  201. data/vendor/assets/javascripts/jasmine/MIT.LICENSE +0 -20
  202. data/vendor/assets/javascripts/mocha/1.10.0.js +0 -5374
  203. data/vendor/assets/javascripts/mocha/1.17.1.js +0 -5813
  204. data/vendor/assets/javascripts/mocha/MIT.LICENSE +0 -22
  205. data/vendor/assets/javascripts/qunit/1.12.0.js +0 -2212
  206. data/vendor/assets/javascripts/qunit/1.14.0.js +0 -2288
  207. data/vendor/assets/javascripts/qunit/MIT.LICENSE +0 -21
  208. data/vendor/assets/javascripts/support/chai-1.10.0.js +0 -4800
  209. data/vendor/assets/javascripts/support/chai-jq-0.0.7.js +0 -524
  210. data/vendor/assets/javascripts/support/chai.js +0 -4782
  211. data/vendor/assets/javascripts/support/expect.js +0 -1284
  212. data/vendor/assets/javascripts/support/jasmine-jquery-1.7.0.js +0 -720
  213. data/vendor/assets/javascripts/support/jasmine-jquery-2.0.0.js +0 -812
  214. data/vendor/assets/javascripts/support/sinon-chai.js +0 -126
@@ -1,23 +0,0 @@
1
- describe "Mocha Teaspoon.Runner", ->
2
-
3
- beforeEach ->
4
- @runSpy = mocha.run = sinon.spy()
5
- @runner = new Teaspoon.Runner()
6
-
7
- describe "constructor", ->
8
-
9
- it "calls run on the mocha env", ->
10
- @runner.setup = sinon.stub()
11
- assert.calledOnce(@runSpy)
12
-
13
-
14
- describe "#setup", ->
15
-
16
- it "adds the reporter to the env", ->
17
- # spy = mocha.setup = sinon.spy()
18
- # @runner.params = {grep: "foo"}
19
- # @runner.setup()
20
- # if window.navigator.userAgent.match(/PhantomJS/)
21
- # assert.calledOnce(spy, reporter: Teaspoon.Reporters.Console)
22
- # else
23
- # assert.calledOnce(spy, reporter: Teaspoon.Reporters.HTML)
@@ -1,9 +0,0 @@
1
- describe "Teaspoon running Mocha", ->
2
-
3
- it "allows pending specs"
4
-
5
- it "displays spec times", ->
6
-
7
- it "can delay assertions", (run) ->
8
- setTimeout((-> run()), 1800)
9
-
@@ -1,4 +0,0 @@
1
- describe "erb", ->
2
-
3
- it "tests", ->
4
- expect(true).toBe(true)
@@ -1,161 +0,0 @@
1
- #= require_self
2
- #= require drivers/phantomjs/runner
3
-
4
- # stub out phantomjs
5
- window.phantom = {exit: ->}
6
- window.require = (file) ->
7
- switch file
8
- when "system" then {args: ["runner.js", "http://host:port/path", "200"]}
9
- when "webpage" then create: -> {
10
- open: -> {}
11
- evaluate: -> {}
12
- }
13
-
14
- describe "PhantomJS Runner", ->
15
-
16
- beforeEach ->
17
- @logSpy = spyOn(window.console, "log")
18
- @runner = new Runner()
19
-
20
- describe "constructor", ->
21
-
22
- it "sets the url from system.args", ->
23
- expect(@runner.url).toBe("http://host:port/path")
24
-
25
- it "sets the timeout from system.args", ->
26
- expect(@runner.timeout).toBe(200 * 1000)
27
-
28
-
29
- describe "#run", ->
30
-
31
- beforeEach ->
32
- @initSpy = spyOn(@runner, "initPage")
33
- @loadSpy = spyOn(@runner, "loadPage")
34
-
35
- it "calls initPage", ->
36
- @runner.run()
37
- expect(@initSpy).toHaveBeenCalled()
38
-
39
- it "calls loadPage", ->
40
- @runner.run()
41
- expect(@loadSpy).toHaveBeenCalled()
42
-
43
-
44
- describe "#initPage", ->
45
-
46
- it "creates a webpage and assigns it to @page", ->
47
- @runner.initPage()
48
- expect(typeof(@runner.page["open"])).toBe("function")
49
-
50
-
51
- describe "#loadPage", ->
52
-
53
- beforeEach ->
54
- @runner.initPage()
55
-
56
- it "opens the url in the page", ->
57
- spy = spyOn(@runner.page, "open")
58
- @runner.loadPage()
59
- expect(spy).toHaveBeenCalledWith(@runner.url)
60
-
61
- it "attaches all the methods to page", ->
62
- spyOn(@runner, "pageCallbacks").andCallFake -> {callback1: "method1", callback2: "method2"}
63
- @runner.loadPage()
64
- expect(@runner.page.callback1).toBe("method1")
65
- expect(@runner.page.callback2).toBe("method2")
66
-
67
-
68
- describe "#waitForResults", ->
69
-
70
- beforeEach ->
71
- @timeoutSpy = spyOn(window, "setTimeout")
72
- @runner.initPage()
73
-
74
- it "evaluates in the context of the page", ->
75
- spy = spyOn(@runner.page, "evaluate").andReturn(false)
76
- @runner.waitForResults()
77
- expect(spy).toHaveBeenCalled()
78
-
79
- it "sets a timeout of 100ms if not finished", ->
80
- spyOn(@runner.page, "evaluate").andReturn(false)
81
- @runner.waitForResults()
82
- expect(@timeoutSpy).toHaveBeenCalled()
83
-
84
- it "calls finish if Teaspoon says that it's finished", ->
85
- spyOn(@runner.page, "evaluate").andCallFake (f) -> f()
86
- spy = spyOn(@runner, "finish")
87
- window.Teaspoon.finished = true
88
- @runner.waitForResults()
89
- expect(spy).toHaveBeenCalled()
90
-
91
-
92
- describe "#fail", ->
93
-
94
- it "logs the error message", ->
95
- @runner.fail("_message_")
96
- expect(@logSpy).toHaveBeenCalledWith('{"_teaspoon":true,"type":"exception","message":"_message_"}')
97
-
98
- it "exits with the error code", ->
99
- spy = spyOn(phantom, "exit")
100
- @runner.fail("_message_", 2)
101
- expect(spy).toHaveBeenCalledWith(2)
102
-
103
-
104
- describe "#finish", ->
105
-
106
- it "calls exit with a success code", ->
107
- spy = spyOn(phantom, "exit")
108
- @runner.finish()
109
- expect(spy).toHaveBeenCalledWith(0)
110
-
111
-
112
- describe "#pageCallbacks", ->
113
-
114
- it "returns an object with the expected methods", ->
115
- return unless Object.keys
116
- object = @runner.pageCallbacks()
117
- expect(Object.keys(object)).toEqual(["onError", "onConsoleMessage", "onLoadFinished"])
118
-
119
-
120
- describe "callback method", ->
121
-
122
- beforeEach ->
123
- @callbacks = @runner.pageCallbacks()
124
-
125
- describe "#onError", ->
126
-
127
- it "logs the json of a message and trace", ->
128
- @callbacks.onError("_message_", ["trace1", "trace2"])
129
- expect(@logSpy).toHaveBeenCalledWith('{"_teaspoon":true,"type":"error","message":"_message_","trace":["trace1","trace2"]}')
130
-
131
- it "calls #fail if the error is a TeaspoonError", ->
132
- spyOn(@runner, "fail")
133
- @callbacks.onError("TeaspoonError: _message_")
134
- expect(@runner.fail).toHaveBeenCalledWith("Execution halted.")
135
-
136
- describe "#onConsoleMessage", ->
137
-
138
- it "logs the message", ->
139
- @callbacks.onConsoleMessage("_message_")
140
- expect(@logSpy).toHaveBeenCalledWith("_message_")
141
-
142
-
143
- describe "#onLoadFinish", ->
144
-
145
- beforeEach ->
146
- @runner.initPage()
147
- @waitSpy = spyOn(@runner, "waitForResults")
148
-
149
- it "fails if the status was not success", ->
150
- spy = spyOn(@runner, "fail")
151
- evalSpy = spyOn(@runner.page, "evaluate").andReturn(true)
152
- @callbacks.onLoadFinished("failure")
153
- expect(spy).toHaveBeenCalledWith("Failed to load: #{@runner.url}")
154
- expect(evalSpy).toHaveBeenCalled()
155
- expect(@waitSpy).wasNotCalled()
156
-
157
-
158
- it "calls waitForResults", ->
159
- @callbacks.onLoadFinished("success")
160
- expect(@waitSpy).toHaveBeenCalled()
161
-
@@ -1,2 +0,0 @@
1
- #= require turbolinks
2
- #= require ./spec_helper
data/spec/spec_helper.rb DELETED
@@ -1,25 +0,0 @@
1
- require "codeclimate-test-reporter"
2
- CodeClimate::TestReporter.start
3
-
4
- ENV["RAILS_ENV"] ||= "test"
5
- ENV["RAILS_ROOT"] = File.expand_path("../dummy", __FILE__)
6
- require File.expand_path("../dummy/config/environment", __FILE__)
7
-
8
- require "rspec/rails"
9
- require "capybara/rails"
10
- require "aruba/api"
11
-
12
- require "ostruct"
13
-
14
- Dir[File.expand_path("../support/**/*.rb", __FILE__)].each { |f| require f }
15
-
16
- RSpec.configure do |config|
17
- config.infer_base_class_for_anonymous_controllers = false
18
- config.order = "random"
19
-
20
- config.run_all_when_everything_filtered = true
21
-
22
- config.mock_with :rspec do |c|
23
- c.syntax = :expect
24
- end
25
- end
@@ -1,15 +0,0 @@
1
- RSpec.configure do |config|
2
- config.include Aruba::Api
3
-
4
- config.before(:each, aruba: true) do
5
- @aruba_timeout_seconds = 180
6
- FileUtils.rm_rf(current_dir)
7
- @__aruba_original_paths = (ENV['PATH'] || '').split(File::PATH_SEPARATOR)
8
- ENV['PATH'] = ([File.expand_path('bin')] + @__aruba_original_paths).join(File::PATH_SEPARATOR)
9
- end
10
-
11
- config.after(:each, aruba: true) do
12
- ENV['PATH'] = @__aruba_original_paths.join(File::PATH_SEPARATOR)
13
- restore_env
14
- end
15
- end
@@ -1,157 +0,0 @@
1
- require "spec_helper"
2
- require "teaspoon/command_line"
3
- require "teaspoon/console"
4
-
5
- module Kernel
6
- def suppress_warnings
7
- original_verbosity = $VERBOSE
8
- $VERBOSE = nil
9
- result = yield
10
- $VERBOSE = original_verbosity
11
- return result
12
- end
13
- end
14
-
15
- describe Teaspoon::CommandLine do
16
-
17
- subject { Teaspoon::CommandLine }
18
-
19
- let(:console) { double(failures?: false) }
20
- let(:parser) { double(parse!: ["file1", "file2"]) }
21
-
22
- describe "#initialize" do
23
-
24
- before do
25
- allow(Teaspoon::Console).to receive(:new).and_return(console)
26
- allow_any_instance_of(subject).to receive(:abort)
27
- allow_any_instance_of(subject).to receive(:opt_parser).and_return(parser)
28
- end
29
-
30
- it "assigns @options and adds the files that were parsed out" do
31
- expect(subject.new.instance_variable_get(:@options)).to eq(files: ["file1", "file2"])
32
- end
33
-
34
- it "aborts with a message on Teaspoon::EnvironmentNotFound" do
35
- expect(Teaspoon::Console).to receive(:new).and_raise(Teaspoon::EnvironmentNotFound)
36
- expect_any_instance_of(subject).to receive(:abort).with("Teaspoon::EnvironmentNotFound\nConsider using -r path/to/teaspoon_env\n")
37
- subject.new
38
- end
39
-
40
- it "executes using Teaspoon::Console" do
41
- expect(Teaspoon::Console).to receive(:new).with(files: ["file1", "file2"])
42
- expect(console).to receive(:failures?)
43
- subject.new
44
- end
45
-
46
- it "aborts if Teaspoon::Console fails" do
47
- expect_any_instance_of(subject).to receive(:abort)
48
- expect(console).to receive(:failures?).and_return(true)
49
- subject.new
50
- end
51
-
52
- it "logs a message and exits on abort" do
53
- expect(STDOUT).to receive(:print).with("Teaspoon::EnvironmentNotFound\nConsider using -r path/to/teaspoon_env\n")
54
- expect(Teaspoon::Console).to receive(:new).and_raise(Teaspoon::EnvironmentNotFound)
55
- expect_any_instance_of(subject).to receive(:abort).and_call_original
56
- expect { subject.new }.to raise_error(SystemExit)
57
- end
58
-
59
- end
60
-
61
- describe "opt_parser" do
62
-
63
- before do
64
- @log = ""
65
- allow(STDOUT).to receive(:print) { |s| @log << s }
66
- allow(Teaspoon::Console).to receive(:new).and_return(console)
67
- end
68
-
69
- it "has --help" do
70
- suppress_warnings { ARGV = ["--help"] }
71
- expect { subject.new.opt_parser }.to raise_error(SystemExit)
72
- expect(@log).to include <<-OUTPUT.strip_heredoc
73
- Usage: teaspoon [options] [files]
74
-
75
- -r, --require FILE Require Teaspoon environment file.
76
- -d, --driver DRIVER Specify driver:
77
- phantomjs (default)
78
- selenium
79
- capybara_webkit
80
- --driver-options OPTIONS Specify driver-specific options to pass into the driver.
81
- e.g. "--ssl-protocol=any --ssl-certificates-path=/path/to/certs".
82
- Driver options are only supported with phantomjs.
83
- --driver-timeout SECONDS Sets the timeout for the driver to wait before exiting.
84
- --server SERVER Sets server to use with Rack.
85
- e.g. webrick, thin
86
- --server-port PORT Sets the server to use a specific port.
87
- --server-timeout SECONDS Sets the timeout that the server must start within.
88
- -F, --[no-]fail-fast Abort after the first failing suite.
89
-
90
- **** Filtering ****
91
-
92
- -s, --suite SUITE Focus to a specific suite.
93
- -g, --filter FILTER Filter tests matching a specific filter.
94
-
95
- **** Output ****
96
-
97
- -q, --[no-]suppress-log Suppress logs coming from console[log/debug/error].
98
- -c, --[no-]color Enable/Disable color output.
99
- -e, --export [OUTPUT_PATH] Exports the test suite as the full HTML (requires wget).
100
- -f, --format FORMATTERS Specify formatters (comma separated)
101
- #{Teaspoon::Formatters.known_formatters.map(&:cli_help).join("\n" + (" " * 43))}
102
-
103
- **** Coverage ****
104
-
105
- -C, --coverage CONFIG_NAME Generate coverage reports using a pre-defined coverage configuration.
106
-
107
- **** Utility ****
108
-
109
- -v, --version Display the version.
110
- -h, --help You're looking at it.
111
- OUTPUT
112
- end
113
-
114
- it "has --version" do
115
- suppress_warnings { ARGV = ["--version"] }
116
- expect { subject.new.opt_parser }.to raise_error(SystemExit)
117
- expect(@log).to match(/\d+\.\d+\.\d+\n/)
118
- end
119
-
120
- it "has various other arguments" do
121
- value_flags = {
122
- environment: ["require", "_environment_"],
123
- driver: ["driver", "_driver_"],
124
- driver_options: ["driver-options", "_driver_options_"],
125
- driver_timeout: ["driver-timeout", "_driver_timeout_"],
126
- server: ["server", "_server_"],
127
- server_port: ["server-port", "_server_port_"],
128
- server_timeout: ["server-timeout", "_server_timeout_"],
129
- suite: ["suite", "_suite_"],
130
- filter: ["filter", "_filter_"],
131
- export: ["export", "_export_"],
132
- formatters: ["format", "_foo,bar_"],
133
- use_coverage: ["coverage", "_coverage_"],
134
- }
135
-
136
- bool_flags = {
137
- fail_fast: "fail-fast",
138
- suppress_log: "suppress-log",
139
- color: "color",
140
- }
141
-
142
- value_flags.each do |k, v|
143
- suppress_warnings { ARGV = ["--#{v[0]}=#{v[1]}"] }
144
- expect(subject.new.instance_variable_get(:@options)[k]).to eq(v[1])
145
- end
146
-
147
- bool_flags.each do |k, v|
148
- suppress_warnings { ARGV = ["--#{v}"] }
149
- expect(subject.new.instance_variable_get(:@options)[k]).to eq(true)
150
- suppress_warnings { ARGV = ["--no-#{v}"] }
151
- expect(subject.new.instance_variable_get(:@options)[k]).to eq(false)
152
- end
153
- end
154
-
155
- end
156
-
157
- end
@@ -1,236 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Teaspoon do
4
-
5
- subject { Teaspoon }
6
-
7
- it "has a configuration property" do
8
- expect(subject.configuration).to be(Teaspoon::Configuration)
9
- end
10
-
11
- describe ".configure" do
12
-
13
- it "yields configuration" do
14
- config = nil
15
- subject.configure { |c| config = c }
16
- expect(config).to be(Teaspoon::Configuration)
17
- end
18
-
19
- it "sets configured to true" do
20
- subject.configured = false
21
- subject.configure { }
22
- expect(subject.configured).to be_truthy
23
- end
24
-
25
- it "overrides configuration from ENV" do
26
- expect(subject.configuration).to receive(:override_from_env).with(ENV)
27
- subject.configure { }
28
- end
29
-
30
- end
31
-
32
- describe ".setup" do
33
-
34
- it "calls configure" do
35
- block = proc{}
36
- expect(subject).to receive(:configure).with(no_args) { |&arg| expect(arg).to eq(block) }
37
- subject.setup(&block)
38
- end
39
-
40
- end
41
-
42
- end
43
-
44
-
45
- describe Teaspoon::Configuration do
46
-
47
- subject { Teaspoon::Configuration }
48
-
49
- before do
50
- @orig_root = subject.root
51
- @orig_asset_paths = subject.asset_paths
52
- @orig_formatters = subject.formatters
53
- end
54
-
55
- after do
56
- subject.mount_at = "/teaspoon"
57
- subject.suite_configs.delete("test_suite")
58
- subject.server = nil
59
- subject.root = @orig_root
60
- subject.asset_paths = @orig_asset_paths
61
- subject.formatters = @orig_formatters
62
- end
63
-
64
- it "has the default configuration" do
65
- expect(subject.mount_at).to eq("/teaspoon")
66
- expect(subject.root).to eq(Rails.root.join('..', '..'))
67
- expect(subject.asset_paths).to include("spec/javascripts")
68
- expect(subject.asset_paths).to include("spec/javascripts/stylesheets")
69
- expect(subject.fixture_paths).to eq(["spec/javascripts/fixtures", "test/javascripts/fixtures"])
70
-
71
- expect(subject.driver).to eq("phantomjs")
72
- expect(subject.driver_options).to be_nil
73
- expect(subject.driver_timeout).to eq(180)
74
- expect(subject.server).to be_nil
75
- expect(subject.server_port).to be_nil
76
- expect(subject.server_timeout).to eq(20)
77
- expect(subject.formatters).to eq(['dot'])
78
- expect(subject.use_coverage).to be_nil
79
- expect(subject.fail_fast).to be_truthy
80
- expect(subject.suppress_log).to be_falsey
81
- expect(subject.color).to be_truthy
82
-
83
- expect(subject.suite_configs).to be_a(Hash)
84
- expect(subject.coverage_configs).to be_a(Hash)
85
- end
86
-
87
- it "allows setting various configuration options" do
88
- subject.mount_at = "/teaspoons_are_awesome"
89
- expect(subject.mount_at).to eq("/teaspoons_are_awesome")
90
- subject.server = :webrick
91
- expect(subject.server).to eq(:webrick)
92
- end
93
-
94
- it "allows defining suite configurations" do
95
- subject.suite(:test_suite) { }
96
- expect(subject.suite_configs["test_suite"][:block]).to be_a(Proc)
97
- expect(subject.suite_configs["test_suite"][:instance]).to be_a(Teaspoon::Configuration::Suite)
98
- end
99
-
100
- it "allows defining coverage configurations" do
101
- subject.coverage(:test_coverage) { }
102
- expect(subject.coverage_configs["test_coverage"][:block]).to be_a(Proc)
103
- expect(subject.coverage_configs["test_coverage"][:instance]).to be_a(Teaspoon::Configuration::Coverage)
104
- end
105
-
106
- describe ".root=" do
107
-
108
- it "forces the path provided into a Pathname" do
109
- subject.root = "/path"
110
- expect(subject.root).to be_a(Pathname)
111
- end
112
-
113
- end
114
-
115
- describe ".formatters" do
116
-
117
- it "returns the default dot formatter if nothing was set" do
118
- expect(subject.formatters).to eq(["dot"])
119
- end
120
-
121
- it "returns an array of formatters if they were comma separated" do
122
- subject.formatters = "dot,swayze_or_oprah"
123
- expect(subject.formatters).to eq(["dot", "swayze_or_oprah"])
124
- end
125
-
126
- end
127
-
128
- describe ".override_from_options" do
129
-
130
- it "allows overriding from options" do
131
- expect(subject).to receive(:fail_fast=).with(true)
132
- expect(subject).to receive(:driver_timeout=).with(123)
133
- expect(subject).to receive(:driver=).with("driver")
134
-
135
- subject.send(:override_from_options, fail_fast: true, driver_timeout: 123, driver: "driver")
136
- end
137
-
138
- end
139
-
140
- describe ".override_from_env" do
141
-
142
- it "allows overriding from the env" do
143
- expect(subject).to receive(:fail_fast=).with(true)
144
- expect(subject).to receive(:driver_timeout=).with(123)
145
- expect(subject).to receive(:driver=).with("driver")
146
-
147
- subject.send(:override_from_env, "FAIL_FAST" => "true", "DRIVER_TIMEOUT" => "123", "DRIVER" => "driver")
148
- end
149
-
150
- end
151
-
152
- end
153
-
154
-
155
- describe Teaspoon::Configuration::Suite do
156
-
157
- subject { Teaspoon::Configuration::Suite.new &(@suite || proc{}) }
158
-
159
- it "has the default configuration" do
160
- expect(subject.matcher).to eq("{spec/javascripts,spec/dummy/app/assets/javascripts/specs}/**/*_spec.{js,js.coffee,coffee,js.coffee.erb}")
161
- expect(subject.helper).to eq("spec_helper")
162
- expect(subject.javascripts).to eq(["jasmine/1.3.1", "teaspoon/jasmine"])
163
- expect(subject.stylesheets).to eq(["teaspoon"])
164
- expect(subject.no_coverage).to eq([%r{/lib/ruby/gems/}, %r{/vendor/assets/}, %r{/support/}, %r{/(.+)_helper.}])
165
- expect(subject.expand_assets).to eq(true)
166
- end
167
-
168
- it "accepts a block that can override defaults" do
169
- @suite = proc{ |s| s.helper = "helper_file" }
170
- expect(subject.helper).to eq("helper_file")
171
- end
172
-
173
- it "allows registering hooks" do
174
- expect(subject.hooks).to eq({})
175
- subject.hook {}
176
- expect(subject.hooks['default'].length).to eq(1)
177
- end
178
-
179
- describe "specifying a framework" do
180
-
181
- it "allows specifying mocha with a version" do
182
- @suite = proc{ |s| s.use_framework :mocha, "1.10.0" }
183
- expect(subject.javascripts).to eq(["mocha/1.10.0", "teaspoon-mocha"])
184
- end
185
-
186
- it "handles qunit specifically to set matcher and helper" do
187
- @suite = proc{ |s| s.use_framework :qunit }
188
- expect(subject.javascripts).to eq(["qunit/1.14.0", "teaspoon-qunit"])
189
- expect(subject.matcher).to eq("{test/javascripts,app/assets}/**/*_test.{js,js.coffee,coffee}")
190
- expect(subject.helper).to eq("test_helper")
191
- end
192
-
193
- describe "exceptions" do
194
-
195
- it "shows an error for unknown frameworks" do
196
- @suite = proc{ |s| s.use_framework :foo }
197
- expect{ subject }.to raise_error(
198
- Teaspoon::UnknownFramework,
199
- "Unknown framework \"foo\""
200
- )
201
- end
202
-
203
- it "shows an error for unknown versions" do
204
- @suite = proc{ |s| s.use_framework :qunit, "666" }
205
- expect{ subject }.to raise_error(
206
- Teaspoon::UnknownFramework,
207
- "Unknown framework \"qunit\" with version 666 -- available versions 1.12.0, 1.14.0"
208
- )
209
- end
210
-
211
- end
212
-
213
- end
214
-
215
- end
216
-
217
-
218
- describe Teaspoon::Configuration::Coverage do
219
-
220
- subject { Teaspoon::Configuration::Coverage.new &(@coverage || proc{}) }
221
-
222
- it "has the default configuration" do
223
- expect(subject.reports).to eq(["text-summary"])
224
- expect(subject.output_path).to eq("coverage")
225
- expect(subject.statements).to be_nil
226
- expect(subject.functions).to be_nil
227
- expect(subject.branches).to be_nil
228
- expect(subject.lines).to be_nil
229
- end
230
-
231
- it "accepts a block that can override defaults" do
232
- @coverage = proc{ |s| s.reports = "report_format" }
233
- expect(subject.reports).to eq("report_format")
234
- end
235
-
236
- end