rspec 1.0.8 → 1.1.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 (301) hide show
  1. data/CHANGES +122 -2
  2. data/README +10 -9
  3. data/Rakefile +22 -49
  4. data/TODO +2 -0
  5. data/bin/spec +1 -1
  6. data/bin/spec_translator +8 -8
  7. data/examples/{auto_spec_description_example.rb → pure/autogenerated_docstrings_example.rb} +0 -0
  8. data/examples/{before_and_after_example.rb → pure/before_and_after_example.rb} +1 -0
  9. data/examples/{behave_as_example.rb → pure/behave_as_example.rb} +0 -0
  10. data/examples/{custom_expectation_matchers.rb → pure/custom_expectation_matchers.rb} +0 -0
  11. data/examples/{custom_formatter.rb → pure/custom_formatter.rb} +1 -0
  12. data/examples/{dynamic_spec.rb → pure/dynamic_spec.rb} +0 -0
  13. data/examples/{file_accessor.rb → pure/file_accessor.rb} +1 -0
  14. data/examples/{file_accessor_spec.rb → pure/file_accessor_spec.rb} +0 -0
  15. data/examples/{greeter_spec.rb → pure/greeter_spec.rb} +1 -0
  16. data/examples/{helper_method_example.rb → pure/helper_method_example.rb} +0 -0
  17. data/examples/{io_processor.rb → pure/io_processor.rb} +0 -0
  18. data/examples/{io_processor_spec.rb → pure/io_processor_spec.rb} +0 -0
  19. data/examples/{legacy_spec.rb → pure/legacy_spec.rb} +1 -0
  20. data/examples/{mocking_example.rb → pure/mocking_example.rb} +0 -0
  21. data/examples/pure/multi_threaded_behaviour_runner.rb +28 -0
  22. data/examples/pure/nested_classes_example.rb +36 -0
  23. data/examples/{partial_mock_example.rb → pure/partial_mock_example.rb} +0 -0
  24. data/examples/{pending_example.rb → pure/pending_example.rb} +0 -0
  25. data/examples/{predicate_example.rb → pure/predicate_example.rb} +0 -0
  26. data/examples/{priority.txt → pure/priority.txt} +0 -0
  27. data/examples/pure/shared_example_group_example.rb +66 -0
  28. data/examples/pure/shared_stack_examples.rb +38 -0
  29. data/examples/pure/spec_helper.rb +3 -0
  30. data/examples/{stack.rb → pure/stack.rb} +0 -0
  31. data/examples/{stack_spec.rb → pure/stack_spec.rb} +1 -35
  32. data/examples/pure/stack_spec_with_nested_example_groups.rb +67 -0
  33. data/examples/{stubbing_example.rb → pure/stubbing_example.rb} +0 -0
  34. data/examples/stories/adder.rb +13 -0
  35. data/examples/stories/addition +34 -0
  36. data/examples/stories/addition.rb +9 -0
  37. data/examples/stories/calculator.rb +65 -0
  38. data/examples/stories/game-of-life/README.txt +21 -0
  39. data/examples/stories/game-of-life/behaviour/everything.rb +6 -0
  40. data/examples/stories/game-of-life/behaviour/examples/examples.rb +3 -0
  41. data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
  42. data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
  43. data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
  44. data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
  45. data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
  46. data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
  47. data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
  48. data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
  49. data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
  50. data/examples/stories/game-of-life/behaviour/stories/helper.rb +6 -0
  51. data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +26 -0
  52. data/examples/stories/game-of-life/behaviour/stories/steps.rb +5 -0
  53. data/examples/stories/game-of-life/behaviour/stories/stories.rb +3 -0
  54. data/examples/stories/game-of-life/behaviour/stories/stories.txt +22 -0
  55. data/examples/stories/game-of-life/life.rb +3 -0
  56. data/examples/stories/game-of-life/life/game.rb +23 -0
  57. data/examples/stories/game-of-life/life/grid.rb +43 -0
  58. data/examples/stories/helper.rb +9 -0
  59. data/examples/stories/steps/addition_steps.rb +18 -0
  60. data/lib/autotest/rspec.rb +1 -2
  61. data/lib/spec.rb +30 -6
  62. data/lib/spec/example.rb +12 -0
  63. data/lib/spec/{dsl → example}/configuration.rb +48 -39
  64. data/lib/spec/{dsl → example}/errors.rb +2 -2
  65. data/lib/spec/example/example_group.rb +16 -0
  66. data/lib/spec/example/example_group_factory.rb +62 -0
  67. data/lib/spec/example/example_group_methods.rb +412 -0
  68. data/lib/spec/example/example_matcher.rb +42 -0
  69. data/lib/spec/example/example_methods.rb +101 -0
  70. data/lib/spec/example/module_reopening_fix.rb +21 -0
  71. data/lib/spec/example/pending.rb +18 -0
  72. data/lib/spec/example/shared_example_group.rb +58 -0
  73. data/lib/spec/expectations/differs/default.rb +15 -10
  74. data/lib/spec/expectations/errors.rb +7 -1
  75. data/lib/spec/expectations/extensions/object.rb +12 -7
  76. data/lib/spec/expectations/handler.rb +13 -4
  77. data/lib/spec/extensions.rb +2 -0
  78. data/lib/spec/extensions/class.rb +24 -0
  79. data/lib/spec/extensions/main.rb +54 -0
  80. data/lib/spec/extensions/object.rb +5 -1
  81. data/lib/spec/interop/test.rb +10 -0
  82. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  83. data/lib/spec/interop/test/unit/testcase.rb +61 -0
  84. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  85. data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  86. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +60 -0
  87. data/lib/spec/matchers.rb +11 -15
  88. data/lib/spec/matchers/be.rb +23 -6
  89. data/lib/spec/matchers/change.rb +25 -1
  90. data/lib/spec/matchers/exist.rb +17 -0
  91. data/lib/spec/matchers/operator_matcher.rb +1 -0
  92. data/lib/spec/matchers/simple_matcher.rb +29 -0
  93. data/lib/spec/matchers/throw_symbol.rb +2 -0
  94. data/lib/spec/mocks.rb +5 -2
  95. data/lib/spec/mocks/argument_expectation.rb +1 -1
  96. data/lib/spec/mocks/message_expectation.rb +62 -44
  97. data/lib/spec/mocks/methods.rb +2 -2
  98. data/lib/spec/mocks/mock.rb +24 -3
  99. data/lib/spec/mocks/proxy.rb +26 -23
  100. data/lib/spec/mocks/space.rb +1 -1
  101. data/lib/spec/mocks/spec_methods.rb +20 -12
  102. data/lib/spec/rake/spectask.rb +19 -1
  103. data/lib/spec/rake/verify_rcov.rb +1 -1
  104. data/lib/spec/runner.rb +33 -10
  105. data/lib/spec/runner/backtrace_tweaker.rb +3 -3
  106. data/lib/spec/runner/class_and_arguments_parser.rb +16 -0
  107. data/lib/spec/runner/command_line.rb +18 -12
  108. data/lib/spec/runner/drb_command_line.rb +4 -5
  109. data/lib/spec/runner/example_group_runner.rb +59 -0
  110. data/lib/spec/runner/formatter/base_formatter.rb +10 -8
  111. data/lib/spec/runner/formatter/base_text_formatter.rb +18 -18
  112. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +31 -0
  113. data/lib/spec/runner/formatter/failing_examples_formatter.rb +3 -5
  114. data/lib/spec/runner/formatter/html_formatter.rb +37 -27
  115. data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  116. data/lib/spec/runner/formatter/progress_bar_formatter.rb +3 -4
  117. data/lib/spec/runner/formatter/specdoc_formatter.rb +27 -13
  118. data/lib/spec/runner/formatter/story/html_formatter.rb +124 -0
  119. data/lib/spec/runner/formatter/story/plain_text_formatter.rb +123 -0
  120. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  121. data/lib/spec/runner/heckle_runner.rb +9 -9
  122. data/lib/spec/runner/option_parser.rb +140 -138
  123. data/lib/spec/runner/options.rb +168 -90
  124. data/lib/spec/runner/reporter.rb +58 -40
  125. data/lib/spec/runner/spec_parser.rb +11 -8
  126. data/lib/spec/story.rb +10 -0
  127. data/lib/spec/story/extensions.rb +1 -0
  128. data/lib/spec/story/extensions/main.rb +86 -0
  129. data/lib/spec/story/given_scenario.rb +14 -0
  130. data/lib/spec/story/runner.rb +58 -0
  131. data/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
  132. data/lib/spec/story/runner/scenario_collector.rb +18 -0
  133. data/lib/spec/story/runner/scenario_runner.rb +46 -0
  134. data/lib/spec/story/runner/story_mediator.rb +123 -0
  135. data/lib/spec/story/runner/story_parser.rb +227 -0
  136. data/lib/spec/story/runner/story_runner.rb +67 -0
  137. data/lib/spec/story/scenario.rb +14 -0
  138. data/lib/spec/story/step.rb +48 -0
  139. data/lib/spec/story/step_group.rb +89 -0
  140. data/lib/spec/story/step_mother.rb +37 -0
  141. data/lib/spec/story/story.rb +42 -0
  142. data/lib/spec/story/world.rb +124 -0
  143. data/lib/spec/version.rb +4 -5
  144. data/plugins/mock_frameworks/rspec.rb +1 -1
  145. data/spec/autotest/rspec_spec.rb +13 -7
  146. data/spec/autotest_helper.rb +4 -3
  147. data/spec/rspec_suite.rb +7 -0
  148. data/spec/ruby_forker.rb +13 -0
  149. data/spec/spec/example/configuration_spec.rb +290 -0
  150. data/spec/spec/example/example_group_class_definition_spec.rb +48 -0
  151. data/spec/spec/example/example_group_factory_spec.rb +129 -0
  152. data/spec/spec/example/example_group_methods_spec.rb +465 -0
  153. data/spec/spec/example/example_group_spec.rb +711 -0
  154. data/spec/spec/{dsl → example}/example_matcher_spec.rb +23 -18
  155. data/spec/spec/example/example_methods_spec.rb +75 -0
  156. data/spec/spec/example/example_runner_spec.rb +194 -0
  157. data/spec/spec/example/example_spec.rb +53 -0
  158. data/spec/spec/example/nested_example_group_spec.rb +59 -0
  159. data/spec/spec/example/pending_module_spec.rb +31 -0
  160. data/spec/spec/{dsl → example}/predicate_matcher_spec.rb +1 -1
  161. data/spec/spec/example/shared_example_group_spec.rb +265 -0
  162. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  163. data/spec/spec/expectations/differs/default_spec.rb +5 -3
  164. data/spec/spec/expectations/extensions/object_spec.rb +63 -2
  165. data/spec/spec/extensions/main_spec.rb +50 -0
  166. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
  167. data/spec/spec/interop/test/unit/testcase_spec.rb +10 -0
  168. data/spec/spec/interop/test/unit/testcase_spec_with_test_unit.rb +20 -0
  169. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  170. data/spec/spec/interop/test/unit/testsuite_adapter_spec_with_test_unit.rb +34 -0
  171. data/spec/spec/matchers/be_spec.rb +15 -0
  172. data/spec/spec/matchers/change_spec.rb +87 -0
  173. data/spec/spec/matchers/description_generation_spec.rb +31 -37
  174. data/spec/spec/matchers/exist_spec.rb +31 -22
  175. data/spec/spec/matchers/handler_spec.rb +42 -1
  176. data/spec/spec/matchers/have_spec.rb +1 -1
  177. data/spec/spec/matchers/mock_constraint_matchers_spec.rb +1 -1
  178. data/spec/spec/matchers/operator_matcher_spec.rb +1 -1
  179. data/spec/spec/matchers/simple_matcher_spec.rb +31 -0
  180. data/spec/spec/matchers/throw_symbol_spec.rb +4 -1
  181. data/spec/spec/mocks/bug_report_10263.rb +24 -0
  182. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  183. data/spec/spec/mocks/bug_report_8165_spec.rb +2 -2
  184. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +1 -0
  185. data/spec/spec/mocks/mock_spec.rb +200 -102
  186. data/spec/spec/mocks/multiple_return_value_spec.rb +1 -1
  187. data/spec/spec/mocks/options_hash_spec.rb +19 -7
  188. data/spec/spec/mocks/partial_mock_spec.rb +31 -9
  189. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +6 -0
  190. data/spec/spec/mocks/stub_spec.rb +120 -98
  191. data/spec/spec/package/bin_spec_spec.rb +7 -5
  192. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  193. data/spec/spec/runner/command_line_spec.rb +140 -27
  194. data/spec/spec/runner/drb_command_line_spec.rb +39 -31
  195. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +44 -0
  196. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +16 -11
  197. data/spec/spec/runner/formatter/html_formatter_spec.rb +60 -50
  198. data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
  199. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +29 -13
  200. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
  201. data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
  202. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +103 -39
  203. data/spec/spec/runner/formatter/story/html_formatter_spec.rb +56 -0
  204. data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +289 -0
  205. data/spec/spec/runner/heckle_runner_spec.rb +29 -14
  206. data/spec/spec/runner/heckler_spec.rb +4 -5
  207. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +5 -5
  208. data/spec/spec/runner/option_parser_spec.rb +86 -58
  209. data/spec/spec/runner/options_spec.rb +239 -120
  210. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  211. data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
  212. data/spec/spec/runner/output_one_time_spec.rb +16 -0
  213. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +6 -6
  214. data/spec/spec/runner/reporter_spec.rb +147 -163
  215. data/spec/spec/runner/spec_parser_spec.rb +31 -0
  216. data/spec/spec/runner_spec.rb +11 -0
  217. data/spec/spec/spec_classes.rb +12 -5
  218. data/spec/spec/story/builders.rb +46 -0
  219. data/spec/spec/story/extensions/main_spec.rb +161 -0
  220. data/spec/spec/story/extensions_spec.rb +14 -0
  221. data/spec/spec/story/given_scenario_spec.rb +27 -0
  222. data/spec/spec/story/runner/plain_text_story_runner_spec.rb +92 -0
  223. data/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
  224. data/spec/spec/story/runner/scenario_runner_spec.rb +142 -0
  225. data/spec/spec/story/runner/story_mediator_spec.rb +133 -0
  226. data/spec/spec/story/runner/story_parser_spec.rb +384 -0
  227. data/spec/spec/story/runner/story_runner_spec.rb +219 -0
  228. data/spec/spec/story/runner_spec.rb +106 -0
  229. data/spec/spec/story/scenario_spec.rb +20 -0
  230. data/spec/spec/story/step_group_spec.rb +157 -0
  231. data/spec/spec/story/step_mother_spec.rb +72 -0
  232. data/spec/spec/story/step_spec.rb +147 -0
  233. data/spec/spec/story/story_helper.rb +2 -0
  234. data/spec/spec/story/story_spec.rb +86 -0
  235. data/spec/spec/story/world_spec.rb +416 -0
  236. data/spec/spec/translator_spec.rb +2 -1
  237. data/spec/spec_helper.rb +59 -2
  238. data/stories/all.rb +5 -0
  239. data/stories/example_groups/autogenerated_docstrings +26 -0
  240. data/stories/example_groups/example_group_with_should_methods +17 -0
  241. data/stories/example_groups/nested_groups +17 -0
  242. data/stories/example_groups/output +20 -0
  243. data/stories/example_groups/stories.rb +7 -0
  244. data/stories/helper.rb +6 -0
  245. data/stories/interop/examples_and_tests_together +30 -0
  246. data/stories/interop/stories.rb +7 -0
  247. data/stories/interop/test_case_with_should_methods +17 -0
  248. data/stories/pending_stories/README +3 -0
  249. data/stories/resources/helpers/cmdline.rb +9 -0
  250. data/stories/resources/helpers/story_helper.rb +16 -0
  251. data/stories/resources/matchers/smart_match.rb +37 -0
  252. data/stories/resources/spec/example_group_with_should_methods.rb +12 -0
  253. data/stories/resources/spec/simple_spec.rb +8 -0
  254. data/stories/resources/steps/running_rspec.rb +50 -0
  255. data/stories/resources/test/spec_and_test_together.rb +57 -0
  256. data/stories/resources/test/test_case_with_should_methods.rb +30 -0
  257. metadata +232 -106
  258. data/EXAMPLES.rd +0 -111
  259. data/examples/multi_threaded_behaviour_runner.rb +0 -25
  260. data/examples/shared_behaviours_example.rb +0 -39
  261. data/examples/spec_helper.rb +0 -1
  262. data/examples/test_case_adapter_example.rb +0 -26
  263. data/examples/test_case_spec.rb +0 -65
  264. data/lib/spec/dsl.rb +0 -11
  265. data/lib/spec/dsl/behaviour.rb +0 -220
  266. data/lib/spec/dsl/behaviour_callbacks.rb +0 -82
  267. data/lib/spec/dsl/behaviour_eval.rb +0 -231
  268. data/lib/spec/dsl/behaviour_factory.rb +0 -42
  269. data/lib/spec/dsl/composite_proc_builder.rb +0 -33
  270. data/lib/spec/dsl/description.rb +0 -76
  271. data/lib/spec/dsl/example.rb +0 -135
  272. data/lib/spec/dsl/example_matcher.rb +0 -40
  273. data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
  274. data/lib/spec/runner/behaviour_runner.rb +0 -123
  275. data/lib/spec/runner/extensions/kernel.rb +0 -50
  276. data/lib/spec/runner/extensions/object.rb +0 -32
  277. data/lib/spec/runner/formatter.rb +0 -9
  278. data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -29
  279. data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
  280. data/lib/spec/test_case_adapter.rb +0 -10
  281. data/spec/spec/dsl/behaviour_eval_spec.rb +0 -79
  282. data/spec/spec/dsl/behaviour_factory_spec.rb +0 -48
  283. data/spec/spec/dsl/behaviour_spec.rb +0 -661
  284. data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -44
  285. data/spec/spec/dsl/configuration_spec.rb +0 -55
  286. data/spec/spec/dsl/description_spec.rb +0 -89
  287. data/spec/spec/dsl/example_class_spec.rb +0 -24
  288. data/spec/spec/dsl/example_instance_spec.rb +0 -160
  289. data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
  290. data/spec/spec/dsl/shared_behaviour_spec.rb +0 -252
  291. data/spec/spec/runner/behaviour_runner_spec.rb +0 -229
  292. data/spec/spec/runner/context_matching_spec.rb +0 -27
  293. data/spec/spec/runner/extensions/bug_report_10577_spec.rb +0 -35
  294. data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
  295. data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -40
  296. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -20
  297. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
  298. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
  299. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
  300. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
  301. data/spec/spec/runner/object_ext_spec.rb +0 -11
@@ -1,252 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Spec
4
- module DSL
5
- describe Behaviour, ", with :shared => true" do
6
-
7
- before(:each) do
8
- @formatter = Spec::Mocks::Mock.new("formatter", :null_object => true)
9
- @behaviour = behaviour_class.new("behaviour") {}
10
- end
11
-
12
- after(:each) do
13
- @formatter.rspec_verify
14
- @behaviour_class = nil
15
- $shared_behaviours.clear unless $shared_behaviours.nil?
16
- end
17
-
18
- def behaviour_class
19
- unless @behaviour_class
20
- @behaviour_class = Behaviour.dup
21
- # dup copies the class instance vars
22
- @behaviour_class.instance_variable_set(:@shared_behaviours, nil)
23
- end
24
- @behaviour_class
25
- end
26
-
27
- def make_shared_behaviour(name, opts=nil, &block)
28
- behaviour = behaviour_class.new(name, :shared => true, &block)
29
- behaviour_class.add_shared_behaviour(behaviour)
30
- behaviour
31
- end
32
-
33
- def non_shared_behaviour()
34
- @non_shared_behaviour ||= behaviour_class.new("behaviour") {}
35
- end
36
-
37
- it "should accept an optional options hash" do
38
- lambda { behaviour_class.new("context") {} }.should_not raise_error(Exception)
39
- lambda { behaviour_class.new("context", :shared => true) {} }.should_not raise_error(Exception)
40
- end
41
-
42
- it "should return all shared behaviours" do
43
- b1 = make_shared_behaviour("b1", :shared => true) {}
44
- b2 = make_shared_behaviour("b2", :shared => true) {}
45
-
46
- b1.should_not be(nil)
47
- b2.should_not be(nil)
48
-
49
- behaviour_class.find_shared_behaviour("b1").should equal(b1)
50
- behaviour_class.find_shared_behaviour("b2").should equal(b2)
51
- end
52
-
53
- it "should be shared when configured as shared" do
54
- behaviour = make_shared_behaviour("behaviour") {}
55
- behaviour.should be_shared
56
- end
57
-
58
- it "should not be shared when not configured as shared" do
59
- non_shared_behaviour.should_not be_shared
60
- end
61
-
62
- it "should raise if run when shared" do
63
- behaviour = make_shared_behaviour("context") {}
64
- $example_ran = false
65
- behaviour.it("test") {$example_ran = true}
66
- lambda { behaviour.run(@formatter) }.should raise_error
67
- $example_ran.should be_false
68
- end
69
-
70
- it "should contain examples when shared" do
71
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
72
- shared_behaviour.it("shared example") {}
73
- shared_behaviour.number_of_examples.should == 1
74
- end
75
-
76
- it "should complain when adding a second shared behaviour with the same description" do
77
- describe "shared behaviour", :shared => true do
78
- end
79
- lambda do
80
- describe "shared behaviour", :shared => true do
81
- end
82
- end.should raise_error(ArgumentError)
83
- end
84
-
85
- it "should NOT complain when adding the same shared behaviour instance again" do
86
- shared_behaviour = behaviour_class.new("shared behaviour", :shared => true) {}
87
- behaviour_class.add_shared_behaviour(shared_behaviour)
88
- behaviour_class.add_shared_behaviour(shared_behaviour)
89
- end
90
-
91
- it "should NOT complain when adding the same shared behaviour again (i.e. file gets reloaded)" do
92
- lambda do
93
- 2.times do
94
- describe "shared behaviour which gets loaded twice", :shared => true do
95
- end
96
- end
97
- end.should_not raise_error(ArgumentError)
98
- end
99
-
100
- it "should NOT complain when adding the same shared behaviour in same file with different absolute path" do
101
- shared_behaviour_1 = behaviour_class.new("shared behaviour", :shared => true) {}
102
- shared_behaviour_2 = behaviour_class.new("shared behaviour", :shared => true) {}
103
-
104
- shared_behaviour_1.description[:spec_path] = "/my/spec/a/../shared.rb"
105
- shared_behaviour_2.description[:spec_path] = "/my/spec/b/../shared.rb"
106
-
107
- behaviour_class.add_shared_behaviour(shared_behaviour_1)
108
- behaviour_class.add_shared_behaviour(shared_behaviour_2)
109
- end
110
-
111
- it "should complain when adding a different shared behaviour with the same name in a different file with the same basename" do
112
- shared_behaviour_1 = behaviour_class.new("shared behaviour", :shared => true) {}
113
- shared_behaviour_2 = behaviour_class.new("shared behaviour", :shared => true) {}
114
-
115
- shared_behaviour_1.description[:spec_path] = "/my/spec/a/shared.rb"
116
- shared_behaviour_2.description[:spec_path] = "/my/spec/b/shared.rb"
117
-
118
- behaviour_class.add_shared_behaviour(shared_behaviour_1)
119
- lambda do
120
- behaviour_class.add_shared_behaviour(shared_behaviour_2)
121
- end.should raise_error(ArgumentError, /already exists/)
122
- end
123
-
124
- it "should add examples to current behaviour when calling it_should_behave_like" do
125
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
126
- shared_behaviour.it("shared example") {}
127
- shared_behaviour.it("shared example 2") {}
128
-
129
- @behaviour.it("example") {}
130
- @behaviour.number_of_examples.should == 1
131
- @behaviour.it_should_behave_like("shared behaviour")
132
- @behaviour.number_of_examples.should == 3
133
- end
134
-
135
- it "should run shared examples" do
136
- shared_example_ran = false
137
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
138
- shared_behaviour.it("shared example") { shared_example_ran = true }
139
-
140
- example_ran = false
141
-
142
- @behaviour.it_should_behave_like("shared behaviour")
143
- @behaviour.it("example") {example_ran = true}
144
- @behaviour.run(@formatter)
145
- example_ran.should be_true
146
- shared_example_ran.should be_true
147
- end
148
-
149
- it "should run setup and teardown from shared behaviour" do
150
- shared_setup_ran = false
151
- shared_teardown_ran = false
152
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
153
- shared_behaviour.before { shared_setup_ran = true }
154
- shared_behaviour.after { shared_teardown_ran = true }
155
- shared_behaviour.it("shared example") { shared_example_ran = true }
156
-
157
- example_ran = false
158
-
159
- @behaviour.it_should_behave_like("shared behaviour")
160
- @behaviour.it("example") {example_ran = true}
161
- @behaviour.run(@formatter)
162
- example_ran.should be_true
163
- shared_setup_ran.should be_true
164
- shared_teardown_ran.should be_true
165
- end
166
-
167
- it "should run before(:all) and after(:all) only once from shared behaviour" do
168
- shared_before_all_run_count = 0
169
- shared_after_all_run_count = 0
170
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
171
- shared_behaviour.before(:all) { shared_before_all_run_count += 1}
172
- shared_behaviour.after(:all) { shared_after_all_run_count += 1}
173
- shared_behaviour.it("shared example") { shared_example_ran = true }
174
-
175
- example_ran = false
176
-
177
- @behaviour.it_should_behave_like("shared behaviour")
178
- @behaviour.it("example") {example_ran = true}
179
- @behaviour.run(@formatter)
180
- example_ran.should be_true
181
- shared_before_all_run_count.should == 1
182
- shared_after_all_run_count.should == 1
183
- end
184
-
185
- it "should include modules, included into shared behaviour, into current behaviour" do
186
- @formatter.should_receive(:add_behaviour).with(any_args)
187
- @formatter.should_receive(:example_finished).twice.with(any_args)
188
-
189
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
190
- shared_behaviour.it("shared example") { shared_example_ran = true }
191
-
192
- mod1_method_called = false
193
- mod1 = Module.new do
194
- define_method :mod1_method do
195
- mod1_method_called = true
196
- end
197
- end
198
-
199
- mod2_method_called = false
200
- mod2 = Module.new do
201
- define_method :mod2_method do
202
- mod2_method_called = true
203
- end
204
- end
205
-
206
- shared_behaviour.include mod2
207
-
208
- @behaviour.it_should_behave_like("shared behaviour")
209
- @behaviour.include mod1
210
-
211
- @behaviour.it("test") do
212
- mod1_method
213
- mod2_method
214
- end
215
- @behaviour.run(@formatter)
216
- mod1_method_called.should be_true
217
- mod2_method_called.should be_true
218
- end
219
-
220
- it "should make methods defined in the shared behaviour available in consuming behaviour" do
221
- shared_behaviour = make_shared_behaviour("shared behaviour xyz") do
222
- def a_shared_helper_method
223
- "this got defined in a shared behaviour"
224
- end
225
- end
226
- @behaviour.it_should_behave_like("shared behaviour xyz")
227
- success = false
228
- @behaviour.it("should access a_shared_helper_method") do
229
- a_shared_helper_method
230
- success = true
231
- end
232
- @behaviour.run(@formatter)
233
- success.should be_true
234
- end
235
-
236
- it "should error if told to inherit from a class" do
237
- shared_behaviour = make_shared_behaviour("shared behaviour") {}
238
- shared_behaviour.it("shared example") { shared_example_ran = true }
239
- lambda { shared_behaviour.inherit Object }.should raise_error(ArgumentError)
240
- end
241
-
242
- it "should raise when named shared behaviour can not be found" do
243
- begin
244
- @behaviour.it_should_behave_like("non-existent shared behaviour")
245
- violated
246
- rescue => e
247
- e.message.should == "Shared Behaviour 'non-existent shared behaviour' can not be found"
248
- end
249
- end
250
- end
251
- end
252
- end
@@ -1,229 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
-
3
- module Spec
4
- module Runner
5
- describe BehaviourRunner, "#add_behaviour affecting passed in behaviour" do
6
- before do
7
- @err = StringIO.new('')
8
- @out = StringIO.new('')
9
- @options = Options.new(@err,@out)
10
- @runner = BehaviourRunner.new(@options)
11
- class << @runner
12
- attr_reader :behaviours
13
- end
14
-
15
- @behaviour = ::Spec::DSL::Behaviour.new("A Behaviour") do
16
- it "runs 1" do
17
- end
18
- it "runs 2" do
19
- end
20
- end
21
- end
22
-
23
- it "removes examples not selected from Behaviour when options.examples is set" do
24
- @options.examples << "A Behaviour runs 1"
25
-
26
- @behaviour.number_of_examples.should == 2
27
-
28
- @runner.add_behaviour @behaviour
29
- @behaviour.number_of_examples.should == 1
30
- @behaviour.examples.first.send(:description).should == "runs 1"
31
- end
32
-
33
- it "keeps all examples when options.examples is nil" do
34
- @options.examples = nil
35
- @behaviour.number_of_examples.should == 2
36
-
37
- @runner.add_behaviour @behaviour
38
- @behaviour.number_of_examples.should == 2
39
- @behaviour.examples.collect {|example| example.send(:description) }.should == ['runs 1', 'runs 2']
40
- end
41
-
42
- it "keeps all examples when options.examples is empty" do
43
- @options.examples = []
44
- @behaviour.number_of_examples.should == 2
45
-
46
- @runner.add_behaviour @behaviour
47
- @behaviour.number_of_examples.should == 2
48
- @behaviour.examples.collect {|example| example.send(:description) }.should == ['runs 1', 'runs 2']
49
- end
50
- end
51
-
52
- describe BehaviourRunner, "#add_behaviour affecting behaviours" do
53
- before do
54
- @err = StringIO.new('')
55
- @out = StringIO.new('')
56
- @options = Options.new(@err,@out)
57
- @runner = BehaviourRunner.new(@options)
58
- class << @runner
59
- attr_reader :behaviours
60
- end
61
- end
62
-
63
- it "adds behaviour when behaviour has examples and is not shared" do
64
- @behaviour = ::Spec::DSL::Behaviour.new("A Behaviour") do
65
- it "uses this behaviour" do
66
- end
67
- end
68
-
69
- @behaviour.should_not be_shared
70
- @behaviour.number_of_examples.should be > 0
71
- @runner.add_behaviour @behaviour
72
-
73
- @runner.behaviours.length.should == 1
74
- end
75
-
76
- it "does not add the behaviour when number_of_examples is 0" do
77
- @behaviour = ::Spec::DSL::Behaviour.new("A Behaviour") do
78
- end
79
- @behaviour.number_of_examples.should == 0
80
- @runner.add_behaviour @behaviour
81
-
82
- @runner.behaviours.should be_empty
83
- end
84
-
85
- it "does not add the behaviour when behaviour is shared" do
86
- @behaviour = ::Spec::DSL::Behaviour.new("A Behaviour", :shared => true) do
87
- it "does not use this behaviour" do
88
- end
89
- end
90
- @behaviour.should be_shared
91
- @runner.add_behaviour @behaviour
92
-
93
- @runner.behaviours.should be_empty
94
- end
95
- end
96
-
97
- describe BehaviourRunner do
98
- before do
99
- @err = StringIO.new('')
100
- @out = StringIO.new('')
101
- @options = Options.new(@err,@out)
102
- end
103
-
104
- it "should only run behaviours with at least one example" do
105
- desired_behaviour = mock("desired behaviour")
106
- desired_behaviour.should_receive(:run)
107
- desired_behaviour.should_receive(:retain_examples_matching!)
108
- desired_behaviour.should_receive(:number_of_examples).twice.and_return(1)
109
- desired_behaviour.should_receive(:shared?).and_return(false)
110
- desired_behaviour.should_receive(:set_sequence_numbers).with(0, anything)
111
-
112
- other_behaviour = mock("other behaviour")
113
- other_behaviour.should_receive(:run).never
114
- other_behaviour.should_receive(:retain_examples_matching!)
115
- other_behaviour.should_receive(:number_of_examples).and_return(0)
116
-
117
- reporter = mock("reporter")
118
- @options.reporter = reporter
119
- @options.examples = ["desired behaviour legal spec"]
120
-
121
- runner = Spec::Runner::BehaviourRunner.new(@options)
122
- runner.add_behaviour(desired_behaviour)
123
- runner.add_behaviour(other_behaviour)
124
- reporter.should_receive(:start)
125
- reporter.should_receive(:end)
126
- reporter.should_receive(:dump)
127
- runner.run([], false)
128
- end
129
-
130
- it "should dump even if Interrupt exception is occurred" do
131
- behaviour = Spec::DSL::Behaviour.new("behaviour") do
132
- it "no error" do
133
- end
134
-
135
- it "should interrupt" do
136
- raise Interrupt
137
- end
138
- end
139
-
140
- reporter = mock("reporter")
141
- reporter.should_receive(:start)
142
- reporter.should_receive(:add_behaviour)
143
- reporter.should_receive(:example_started).twice
144
- reporter.should_receive(:example_finished).twice
145
- reporter.should_receive(:rspec_verify)
146
- reporter.should_receive(:rspec_reset)
147
- reporter.should_receive(:end)
148
- reporter.should_receive(:dump)
149
-
150
- @options.reporter = reporter
151
- runner = Spec::Runner::BehaviourRunner.new(@options)
152
- runner.add_behaviour(behaviour)
153
- runner.run([], false)
154
- end
155
-
156
- it "should heckle when options have heckle_runner" do
157
- behaviour = mock("behaviour", :null_object => true)
158
- behaviour.should_receive(:number_of_examples).twice.and_return(1)
159
- behaviour.should_receive(:run).and_return(0)
160
- behaviour.should_receive(:shared?).and_return(false)
161
-
162
- reporter = mock("reporter")
163
- reporter.should_receive(:start).with(1)
164
- reporter.should_receive(:end)
165
- reporter.should_receive(:dump).and_return(0)
166
-
167
- heckle_runner = mock("heckle_runner")
168
- heckle_runner.should_receive(:heckle_with)
169
-
170
- @options.reporter = reporter
171
- @options.heckle_runner = heckle_runner
172
-
173
- runner = Spec::Runner::BehaviourRunner.new(@options)
174
- runner.add_behaviour(behaviour)
175
- runner.run([], false)
176
- end
177
-
178
- it "should run examples backwards if options.reverse is true" do
179
- @options.reverse = true
180
-
181
- reporter = mock("reporter")
182
- reporter.should_receive(:start).with(3)
183
- reporter.should_receive(:end)
184
- reporter.should_receive(:dump).and_return(0)
185
- @options.reporter = reporter
186
-
187
- runner = Spec::Runner::BehaviourRunner.new(@options)
188
- b1 = mock("b1")
189
- b1.should_receive(:number_of_examples).twice.and_return(1)
190
- b1.should_receive(:shared?).and_return(false)
191
- b1.should_receive(:set_sequence_numbers).with(12, true).and_return(18)
192
-
193
- b2 = mock("b2")
194
- b2.should_receive(:number_of_examples).twice.and_return(2)
195
- b2.should_receive(:shared?).and_return(false)
196
- b2.should_receive(:set_sequence_numbers).with(0, true).and_return(12)
197
- b2.should_receive(:run) do
198
- b1.should_receive(:run)
199
- end
200
-
201
- runner.add_behaviour(b1)
202
- runner.add_behaviour(b2)
203
-
204
- runner.run([], false)
205
- end
206
-
207
- it "should yield global configuration" do
208
- Spec::Runner.configure do |config|
209
- config.should equal(Spec::Runner.configuration)
210
- end
211
- end
212
-
213
- it "should pass its Description to the reporter" do
214
- behaviour = Spec::DSL::Behaviour.new("behaviour") do
215
- it "should" do
216
- end
217
- end
218
-
219
- reporter = mock("reporter", :null_object => true)
220
- reporter.should_receive(:add_behaviour).with(an_instance_of(Spec::DSL::Description))
221
-
222
- @options.reporter = reporter
223
- runner = Spec::Runner::BehaviourRunner.new(@options)
224
- runner.add_behaviour(behaviour)
225
- runner.run([], false)
226
- end
227
- end
228
- end
229
- end