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,111 +0,0 @@
1
- # Examples with no descriptions
2
- # * should equal 5
3
- # * should be < 5
4
- # * should include "a"
5
- # * should respond to #size
6
- # State created in before(:all)
7
- # * should be accessible from example
8
- # * should not have sideffects
9
- # BehaveAsExample::BluesGuitarist
10
- # * should behave as guitarist
11
- # BehaveAsExample::RockGuitarist
12
- # * should behave as guitarist
13
- # BehaveAsExample::ClassicGuitarist
14
- # * should not behave as guitarist
15
- # Animals::Mouse
16
- # * should eat cheese
17
- # * should not eat cat
18
- # Some integers
19
- # * The root of 1 square should be 1
20
- # * The root of 2 square should be 2
21
- # * The root of 3 square should be 3
22
- # * The root of 4 square should be 4
23
- # * The root of 5 square should be 5
24
- # * The root of 6 square should be 6
25
- # * The root of 7 square should be 7
26
- # * The root of 8 square should be 8
27
- # * The root of 9 square should be 9
28
- # * The root of 10 square should be 10
29
- # A FileAccessor
30
- # * should open a file and pass it to the processor's process method
31
- # Greeter
32
- # * should say Hi to person
33
- # * should say Hi to nobody
34
- # a context with helper a method
35
- # * should make that method available to specs
36
- # An IoProcessor
37
- # * should raise nothing when the file is exactly 32 bytes
38
- # * should raise an exception when the file length is less than 32 bytes
39
- # A legacy spec
40
- # * should work fine
41
- # A consumer of a mock
42
- # * should be able to send messages to the mock
43
- # a mock
44
- # * should be able to mock the same message twice w/ different args
45
- # * should be able to mock the same message twice w/ different args in reverse order
46
- # A partial mock
47
- # * should work at the class level
48
- # * should revert to the original after each spec
49
- # * can be mocked w/ ordering
50
- # pending example (using pending method)
51
- # * pending example (using pending method) should be reported as "PENDING: for some reason" [PENDING: for some reason]
52
- # pending example (with no block)
53
- # * pending example (with no block) should be reported as "PENDING: Not Yet Implemented" [PENDING: Not Yet Implemented]
54
- # pending example (with block for pending)
55
- # * pending example (with block for pending) should have a failing block, passed to pending, reported as "PENDING: for some reason" [PENDING: for some reason]
56
- # BDD framework
57
- # * should be adopted quickly
58
- # * should be intuitive
59
- # SharedBehaviourExample::OneThing
60
- # * should do what things do
61
- # * should have access to helper methods defined in the shared behaviour
62
- # SharedBehaviourExample::AnotherThing
63
- # * should do what things do
64
- # Stack (empty)
65
- # * should be empty
66
- # * should not be full
67
- # * should add to the top when sent #push
68
- # * should complain when sent #peek
69
- # * should complain when sent #pop
70
- # Stack (with one item)
71
- # * should not be empty
72
- # * should return the top item when sent #peek
73
- # * should NOT remove the top item when sent #peek
74
- # * should return the top item when sent #pop
75
- # * should remove the top item when sent #pop
76
- # * should not be full
77
- # * should add to the top when sent #push
78
- # Stack (with one item less than capacity)
79
- # * should not be empty
80
- # * should return the top item when sent #peek
81
- # * should NOT remove the top item when sent #peek
82
- # * should return the top item when sent #pop
83
- # * should remove the top item when sent #pop
84
- # * should not be full
85
- # * should add to the top when sent #push
86
- # Stack (full)
87
- # * should be full
88
- # * should not be empty
89
- # * should return the top item when sent #peek
90
- # * should NOT remove the top item when sent #peek
91
- # * should return the top item when sent #pop
92
- # * should remove the top item when sent #pop
93
- # * should complain on #push
94
- # A consumer of a stub
95
- # * should be able to stub methods on any Object
96
- # A stubbed method on a class
97
- # * should return the stubbed value
98
- # * should revert to the original method after each spec
99
- # * can stub! and mock the same message
100
- # A mock
101
- # * can stub!
102
- # * can stub! and mock
103
- # * can stub! and mock the same message
104
- # RSpec should integrate with Test::Unit::TestCase
105
- # * TestCase#setup should be called.
106
- # * RSpec should be able to access TestCase methods
107
- # * RSpec should be able to accept included modules
108
-
109
- Finished in 0.030063 seconds
110
-
111
- 78 examples, 0 failures, 3 pending
@@ -1,25 +0,0 @@
1
-
2
- class MultiThreadedBehaviourRunner < Spec::Runner::BehaviourRunner
3
- def initialize(options)
4
- super
5
- # configure these
6
- @thread_count = 4
7
- @thread_wait = 0
8
- end
9
-
10
- def run_behaviours(behaviours)
11
- @threads = []
12
- q = Queue.new
13
- behaviours.each { |b| q << b}
14
- @thread_count.times do
15
- @threads << Thread.new(q) do |queue|
16
- while not queue.empty?
17
- behaviour = queue.pop
18
- behaviour.run(@options.reporter, @options.dry_run, @options.reverse)
19
- end
20
- end
21
- sleep @thread_wait
22
- end
23
- @threads.each {|t| t.join}
24
- end
25
- end
@@ -1,39 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- module SharedBehaviourExample
4
- class OneThing
5
- def what_things_do
6
- "stuff"
7
- end
8
- end
9
-
10
- class AnotherThing
11
- def what_things_do
12
- "stuff"
13
- end
14
- end
15
-
16
- describe "All Things", :shared => true do
17
- def helper_method
18
- "helper method"
19
- end
20
-
21
- it "should do what things do" do
22
- @thing.what_things_do.should == "stuff"
23
- end
24
- end
25
-
26
- describe OneThing do
27
- it_should_behave_like "All Things"
28
- before(:each) { @thing = OneThing.new }
29
-
30
- it "should have access to helper methods defined in the shared behaviour" do
31
- helper_method.should == "helper method"
32
- end
33
- end
34
-
35
- describe AnotherThing do
36
- it_should_behave_like "All Things"
37
- before(:each) { @thing = AnotherThing.new }
38
- end
39
- end
@@ -1 +0,0 @@
1
- require File.dirname(__FILE__) + '/../lib/spec'
@@ -1,26 +0,0 @@
1
- #This is an example of using RSpec's expectations in test/unit.
2
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
3
-
4
- require 'test/unit'
5
- require 'spec/test_case_adapter'
6
-
7
- class IntegratingRSpecExpectationsIntoTestCaseTest < Test::Unit::TestCase
8
-
9
- def test_should_support_rspecs_equality_expectations
10
- 5.should == 5
11
- end
12
-
13
- def test_should_support_rspecs_comparison_expectations
14
- 5.should be > 4
15
- end
16
-
17
- class Band
18
- def players
19
- ["John", "Paul", "George", "Ringo"]
20
- end
21
- end
22
-
23
- def test_should_support_rspecs_collection_expectations
24
- Band.new.should have(4).players
25
- end
26
- end
@@ -1,65 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
- require 'test/unit'
3
-
4
- class RSpecIntegrationTest < Test::Unit::TestCase
5
- def self.fixtures(*args)
6
- @@fixtures = true
7
- end
8
-
9
- def self.verify_class_method
10
- @@fixtures.should == true
11
- end
12
-
13
- def setup
14
- @test_case_setup_called = true
15
- end
16
-
17
- def teardown
18
- @test_case_teardown_called = true
19
- end
20
-
21
- def run(result)
22
- end
23
-
24
- def helper_method
25
- @helper_method_called = true
26
- end
27
- end
28
-
29
- module RandomHelperModule
30
- def random_task
31
- @random_task_called = true
32
- end
33
- end
34
-
35
- describe "RSpec should integrate with Test::Unit::TestCase" do
36
- inherit RSpecIntegrationTest
37
- include RandomHelperModule
38
-
39
- fixtures :some_table
40
-
41
- prepend_before(:each) {setup}
42
-
43
- before(:each) do
44
- @rspec_setup_called = true
45
- end
46
-
47
- it "TestCase#setup should be called." do
48
- @test_case_setup_called.should be_true
49
- @rspec_setup_called.should be_true
50
- end
51
-
52
- it "RSpec should be able to access TestCase methods" do
53
- helper_method
54
- @helper_method_called.should be_true
55
- end
56
-
57
- it "RSpec should be able to accept included modules" do
58
- random_task
59
- @random_task_called.should be_true
60
- end
61
-
62
- after(:each) do
63
- RSpecIntegrationTest.verify_class_method
64
- end
65
- end
@@ -1,11 +0,0 @@
1
- require 'spec/dsl/description'
2
- require 'spec/dsl/errors'
3
- require 'spec/dsl/configuration'
4
- require 'spec/dsl/behaviour_callbacks'
5
- require 'spec/dsl/behaviour'
6
- require 'spec/dsl/behaviour_eval'
7
- require 'spec/dsl/composite_proc_builder'
8
- require 'spec/dsl/example'
9
- require 'spec/dsl/example_matcher'
10
- require 'spec/dsl/example_should_raise_handler'
11
- require 'spec/dsl/behaviour_factory'
@@ -1,220 +0,0 @@
1
- module Spec
2
- module DSL
3
- class EvalModule < Module; end
4
- class Behaviour
5
- extend BehaviourCallbacks
6
-
7
- class << self
8
- def add_shared_behaviour(behaviour)
9
- return if behaviour.equal?(found_behaviour = find_shared_behaviour(behaviour.description))
10
- return if found_behaviour and File.expand_path(behaviour.description[:spec_path]) == File.expand_path(found_behaviour.description[:spec_path])
11
- raise ArgumentError.new("Shared Behaviour '#{behaviour.description}' already exists") if found_behaviour
12
- shared_behaviours << behaviour
13
- end
14
-
15
- def find_shared_behaviour(behaviour_description)
16
- shared_behaviours.find { |b| b.description == behaviour_description }
17
- end
18
-
19
- def shared_behaviours
20
- # TODO - this needs to be global, or at least accessible from
21
- # from subclasses of Behaviour in a centralized place. I'm not loving
22
- # this as a solution, but it works for now.
23
- $shared_behaviours ||= []
24
- end
25
- end
26
-
27
- def initialize(*args, &behaviour_block)
28
- init_description(*args)
29
- init_eval_module
30
- before_eval
31
- eval_behaviour(&behaviour_block)
32
- end
33
-
34
- private
35
-
36
- def init_description(*args)
37
- unless self.class == Behaviour
38
- args << {} unless Hash === args.last
39
- args.last[:behaviour_class] = self.class
40
- end
41
- @description = Description.new(*args)
42
- end
43
-
44
- def init_eval_module
45
- @eval_module = EvalModule.new
46
- @eval_module.extend BehaviourEval::ModuleMethods
47
- @eval_module.include BehaviourEval::InstanceMethods
48
- @eval_module.include described_type if described_type.class == Module
49
- @eval_module.behaviour = self
50
- @eval_module.description = @description
51
- end
52
-
53
- def eval_behaviour(&behaviour_block)
54
- @eval_module.class_eval(&behaviour_block)
55
- end
56
-
57
- protected
58
-
59
- def before_eval
60
- end
61
-
62
- public
63
-
64
- def run(reporter, dry_run=false, reverse=false, timeout=nil)
65
- raise "shared behaviours should never run" if shared?
66
- # TODO - change add_behaviour to add_description ??????
67
- reporter.add_behaviour(@description)
68
- prepare_execution_context_class
69
- before_all_errors = run_before_all(reporter, dry_run)
70
-
71
- exs = reverse ? examples.reverse : examples
72
- example_execution_context = nil
73
-
74
- if before_all_errors.empty?
75
- exs.each do |example|
76
- example_execution_context = execution_context(example)
77
- example_execution_context.copy_instance_variables_from(@before_and_after_all_context_instance) unless before_all_proc(behaviour_type).nil?
78
-
79
- befores = before_each_proc(behaviour_type) {|e| raise e}
80
- afters = after_each_proc(behaviour_type)
81
- example.run(reporter, befores, afters, dry_run, example_execution_context, timeout)
82
- end
83
- end
84
-
85
- @before_and_after_all_context_instance.copy_instance_variables_from(example_execution_context) unless after_all_proc(behaviour_type).nil?
86
- run_after_all(reporter, dry_run)
87
- end
88
-
89
- def number_of_examples
90
- examples.length
91
- end
92
-
93
- def matches?(specified_examples)
94
- matcher ||= ExampleMatcher.new(description)
95
-
96
- examples.each do |example|
97
- return true if example.matches?(matcher, specified_examples)
98
- end
99
- return false
100
- end
101
-
102
- def shared?
103
- @description[:shared]
104
- end
105
-
106
- def retain_examples_matching!(specified_examples)
107
- return if specified_examples.index(description)
108
- matcher = ExampleMatcher.new(description)
109
- examples.reject! do |example|
110
- !example.matches?(matcher, specified_examples)
111
- end
112
- end
113
-
114
- def methods
115
- my_methods = super
116
- my_methods |= @eval_module.methods
117
- my_methods
118
- end
119
-
120
- # Includes modules in the Behaviour (the <tt>describe</tt> block).
121
- def include(*args)
122
- @eval_module.include(*args)
123
- end
124
-
125
- def behaviour_type #:nodoc:
126
- @description[:behaviour_type]
127
- end
128
-
129
- # Sets the #number on each Example and returns the next number
130
- def set_sequence_numbers(number, reverse) #:nodoc:
131
- exs = reverse ? examples.reverse : examples
132
- exs.each do |example|
133
- example.number = number
134
- number += 1
135
- end
136
- number
137
- end
138
-
139
- protected
140
-
141
- # Messages that this class does not understand
142
- # are passed directly to the @eval_module.
143
- def method_missing(sym, *args, &block)
144
- @eval_module.send(sym, *args, &block)
145
- end
146
-
147
- def prepare_execution_context_class
148
- plugin_mock_framework
149
- weave_in_included_modules
150
- define_predicate_matchers #this is in behaviour_eval
151
- execution_context_class
152
- end
153
-
154
- def weave_in_included_modules
155
- mods = [@eval_module]
156
- mods << included_modules.dup
157
- mods << Spec::Runner.configuration.modules_for(behaviour_type)
158
- execution_context_class.class_eval do
159
- # WARNING - the following can be executed in the context of any
160
- # class, and should never pass more than one module to include
161
- # even though we redefine include in this class. This is NOT
162
- # tested anywhere, hence this comment.
163
- mods.flatten.each {|mod| include mod}
164
- end
165
- end
166
-
167
- def execution_context(example)
168
- execution_context_class.new(example)
169
- end
170
-
171
- def run_before_all(reporter, dry_run)
172
- errors = []
173
- unless dry_run
174
- begin
175
- @before_and_after_all_context_instance = execution_context(nil)
176
- @before_and_after_all_context_instance.instance_eval(&before_all_proc(behaviour_type))
177
- rescue Exception => e
178
- errors << e
179
- location = "before(:all)"
180
- # The easiest is to report this as an example failure. We don't have an Example
181
- # at this point, so we'll just create a placeholder.
182
- reporter.example_finished(Example.new(location), e, location) if reporter
183
- end
184
- end
185
- errors
186
- end
187
-
188
- def run_after_all(reporter, dry_run)
189
- unless dry_run
190
- begin
191
- @before_and_after_all_context_instance ||= execution_context(nil)
192
- @before_and_after_all_context_instance.instance_eval(&after_all_proc(behaviour_type))
193
- rescue Exception => e
194
- location = "after(:all)"
195
- reporter.example_finished(Example.new(location), e, location) if reporter
196
- end
197
- end
198
- end
199
-
200
- def plugin_mock_framework
201
- case mock_framework = Spec::Runner.configuration.mock_framework
202
- when Module
203
- include mock_framework
204
- else
205
- require Spec::Runner.configuration.mock_framework
206
- include Spec::Plugins::MockFramework
207
- end
208
- end
209
-
210
- def description
211
- @description.to_s
212
- end
213
-
214
- def described_type
215
- @description.described_type
216
- end
217
-
218
- end
219
- end
220
- end