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,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
2
 
3
3
  module Spec
4
- module DSL
4
+ module Example
5
5
  module ExampleMatcherSpecHelper
6
6
  class MatchDescription
7
7
  def initialize(description)
@@ -25,32 +25,37 @@ module Spec
25
25
  end
26
26
  end
27
27
 
28
- describe ExampleMatcher do
28
+ describe ExampleMatcher, "#matches?" do
29
29
  include ExampleMatcherSpecHelper
30
30
 
31
- it "should match correct behaviour and example" do
32
- matcher = ExampleMatcher.new("behaviour", "example")
33
- matcher.should match_description("behaviour example")
31
+ it "should match correct example_group and example" do
32
+ matcher = ExampleMatcher.new("example_group", "example")
33
+ matcher.should match_description("example_group example")
34
34
  end
35
35
 
36
36
  it "should not match wrong example" do
37
- matcher = ExampleMatcher.new("behaviour", "other example")
38
- matcher.should_not match_description("behaviour example")
37
+ matcher = ExampleMatcher.new("example_group", "other example")
38
+ matcher.should_not match_description("example_group example")
39
39
  end
40
40
 
41
- it "should not match wrong behaviour" do
42
- matcher = ExampleMatcher.new("other behaviour", "example")
43
- matcher.should_not match_description("behaviour example")
41
+ it "should not match wrong example_group" do
42
+ matcher = ExampleMatcher.new("other example_group", "example")
43
+ matcher.should_not match_description("example_group example")
44
44
  end
45
45
 
46
46
  it "should match example only" do
47
- matcher = ExampleMatcher.new("behaviour", "example")
47
+ matcher = ExampleMatcher.new("example_group", "example")
48
48
  matcher.should match_description("example")
49
49
  end
50
-
51
- it "should match behaviour only" do
52
- matcher = ExampleMatcher.new("behaviour", "example")
53
- matcher.should match_description("behaviour")
50
+
51
+ it "should match example_group only" do
52
+ matcher = ExampleMatcher.new("example_group", "example")
53
+ matcher.should match_description("example_group")
54
+ end
55
+
56
+ it "should match example_group ending with before(:all)" do
57
+ matcher = ExampleMatcher.new("example_group", "example")
58
+ matcher.should match_description("example_group before(:all)")
54
59
  end
55
60
 
56
61
  it "should escape regexp chars" do
@@ -58,13 +63,13 @@ module Spec
58
63
  matcher.should_not match_description("con p")
59
64
  end
60
65
 
61
- it "should match when behaviour is modularized" do
66
+ it "should match when example_group is modularized" do
62
67
  matcher = ExampleMatcher.new("MyModule::MyClass", "example")
63
68
  matcher.should match_description("MyClass example")
64
69
  end
65
70
  end
66
71
 
67
- describe ExampleMatcher, "normal case" do
72
+ describe ExampleMatcher, "#matches? normal case" do
68
73
  it "matches when passed in example matches" do
69
74
  matcher = ExampleMatcher.new("Foo", "bar")
70
75
  matcher.matches?(["no match", "Foo bar"]).should == true
@@ -76,7 +81,7 @@ module Spec
76
81
  end
77
82
  end
78
83
 
79
- describe ExampleMatcher, "where description has '::' in it" do
84
+ describe ExampleMatcher, "#matches? where description has '::' in it" do
80
85
  it "matches when passed in example matches" do
81
86
  matcher = ExampleMatcher.new("Foo::Bar", "baz")
82
87
  matcher.matches?(["no match", "Foo::Bar baz"]).should == true
@@ -0,0 +1,75 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ module Spec
4
+ module Example
5
+ module ModuleThatIsReopened
6
+ end
7
+
8
+ module ExampleMethods
9
+ include ModuleThatIsReopened
10
+ end
11
+
12
+ module ModuleThatIsReopened
13
+ def module_that_is_reopened_method
14
+ end
15
+ end
16
+
17
+ describe "ExampleMethods with an included module that is reopened" do
18
+ it "should have repoened methods" do
19
+ method(:module_that_is_reopened_method).should_not be_nil
20
+ end
21
+ end
22
+
23
+ describe ExampleMethods, "lifecycle" do
24
+ before do
25
+ @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
26
+ @options.formatters << mock("formatter", :null_object => true)
27
+ @options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
28
+ @reporter = FakeReporter.new(@options)
29
+ @options.reporter = @reporter
30
+
31
+ ExampleMethods.before_all_parts.should == []
32
+ ExampleMethods.before_each_parts.should == []
33
+ ExampleMethods.after_each_parts.should == []
34
+ ExampleMethods.after_all_parts.should == []
35
+ def ExampleMethods.count
36
+ @count ||= 0
37
+ @count = @count + 1
38
+ @count
39
+ end
40
+ end
41
+
42
+ after do
43
+ ExampleMethods.instance_variable_set("@before_all_parts", [])
44
+ ExampleMethods.instance_variable_set("@before_each_parts", [])
45
+ ExampleMethods.instance_variable_set("@after_each_parts", [])
46
+ ExampleMethods.instance_variable_set("@after_all_parts", [])
47
+ end
48
+
49
+ it "should pass before and after callbacks to all ExampleGroup subclasses" do
50
+ ExampleMethods.before(:all) do
51
+ ExampleMethods.count.should == 1
52
+ end
53
+
54
+ ExampleMethods.before(:each) do
55
+ ExampleMethods.count.should == 2
56
+ end
57
+
58
+ ExampleMethods.after(:each) do
59
+ ExampleMethods.count.should == 3
60
+ end
61
+
62
+ ExampleMethods.after(:all) do
63
+ ExampleMethods.count.should == 4
64
+ end
65
+
66
+ @example_group = Class.new(ExampleGroup) do
67
+ it "should use ExampleMethods callbacks" do
68
+ end
69
+ end
70
+ @example_group.run
71
+ ExampleMethods.count.should == 5
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,194 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Example
5
+ # describe "Spec::Example::ExampleRunner", "#run", :shared => true do
6
+ # before(:each) do
7
+ # @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
8
+ # @reporter = ::Spec::Runner::Reporter.new(@options)
9
+ # @options.reporter = @reporter
10
+ # @example_group_class = Class.new(ExampleGroup) do
11
+ # plugin_mock_framework
12
+ # describe("Some Examples")
13
+ # end
14
+ # end
15
+ #
16
+ # def create_runner(example_definition)
17
+ # example = @example_group_class.new(example_definition)
18
+ # runner = ExampleGroup.new(@options, example)
19
+ # runner.stub!(:verify_mocks)
20
+ # runner.stub!(:teardown_mocks)
21
+ # runner
22
+ # end
23
+ # end
24
+ #
25
+ # describe ExampleRunner, "#run with blank passing example" do
26
+ # it_should_behave_like "Spec::Example::ExampleRunner#run"
27
+ #
28
+ # before do
29
+ # @e = @example_group_class.it("example") {}
30
+ # @runner = create_runner(@e)
31
+ # end
32
+ #
33
+ # it "should send reporter example_started" do
34
+ # @reporter.should_receive(:example_started).with(equal(@e))
35
+ # @runner.run
36
+ # end
37
+ #
38
+ # it "should report its name for dry run" do
39
+ # @options.dry_run = true
40
+ # @reporter.should_receive(:example_finished).with(equal(@e), nil)
41
+ # @runner.run
42
+ # end
43
+ #
44
+ # it "should report success" do
45
+ # @reporter.should_receive(:example_finished).with(equal(@e), nil)
46
+ # @runner.run
47
+ # end
48
+ # end
49
+ #
50
+ # describe ExampleRunner, "#run with a failing example" do
51
+ # predicate_matchers[:is_a] = [:is_a?]
52
+ # it_should_behave_like "Spec::Example::ExampleRunner#run"
53
+ #
54
+ # before do
55
+ # @e = @example_group_class.it("example") do
56
+ # (2+2).should == 5
57
+ # end
58
+ # @runner = create_runner(@e)
59
+ # end
60
+ #
61
+ # it "should report failure due to failure" do
62
+ # @reporter.should_receive(:example_finished).with(
63
+ # equal(@e),
64
+ # is_a(Spec::Expectations::ExpectationNotMetError)
65
+ # )
66
+ # @runner.run
67
+ # end
68
+ # end
69
+ #
70
+ # describe ExampleRunner, "#run with a erroring example" do
71
+ # it_should_behave_like "Spec::Example::ExampleRunner#run"
72
+ #
73
+ # before do
74
+ # @error = error = NonStandardError.new("in body")
75
+ # @example_definition = @example_group_class.it("example") do
76
+ # raise(error)
77
+ # end
78
+ # @runner = create_runner(@example_definition)
79
+ # end
80
+ #
81
+ # it "should report failure due to error" do
82
+ # @reporter.should_receive(:example_finished).with(
83
+ # equal(@example_definition),
84
+ # @error
85
+ # )
86
+ # @runner.run
87
+ # end
88
+ #
89
+ # it "should run after_each block" do
90
+ # @example_group_class.after(:each) do
91
+ # raise("in after_each")
92
+ # end
93
+ # @reporter.should_receive(:example_finished) do |example_definition, error|
94
+ # example_definition.should equal(@example_definition)
95
+ # error.message.should eql("in body")
96
+ # end
97
+ # @runner.run
98
+ # end
99
+ # end
100
+ #
101
+ # describe ExampleRunner, "#run where after_each fails" do
102
+ # it_should_behave_like "Spec::Example::ExampleRunner#run"
103
+ #
104
+ # before do
105
+ # @example_ran = example_ran = false
106
+ # @example_definition = @example_group_class.it("should not run") do
107
+ # example_ran = true
108
+ # end
109
+ # @runner = create_runner(@example_definition)
110
+ # @example_group_class.after(:each) { raise(NonStandardError.new("in after_each")) }
111
+ # end
112
+ #
113
+ # it "should report failure location when in after_each" do
114
+ # @reporter.should_receive(:example_finished) do |example_definition, error|
115
+ # example_definition.should equal(@example_definition)
116
+ # error.message.should eql("in after_each")
117
+ # end
118
+ # @runner.run
119
+ # end
120
+ # end
121
+ #
122
+ # describe ExampleRunner, "#run with use cases" do
123
+ # predicate_matchers[:is_a] = [:is_a?]
124
+ # it_should_behave_like "Spec::Example::ExampleRunner#run"
125
+ #
126
+ # it "should report NO NAME when told to use generated description with --dry-run" do
127
+ # @options.dry_run = true
128
+ # example_definition = @example_group_class.it() do
129
+ # 5.should == 5
130
+ # end
131
+ # runner = create_runner(example_definition)
132
+ #
133
+ # @reporter.should_receive(:example_finished) do |example_definition, error|
134
+ # example_definition.description.should == "NO NAME (Because of --dry-run)"
135
+ # end
136
+ # runner.run
137
+ # end
138
+ #
139
+ # it "should report given name if present with --dry-run" do
140
+ # @options.dry_run = true
141
+ # example_definition = @example_group_class.it("example name") do
142
+ # 5.should == 5
143
+ # end
144
+ # runner = create_runner(example_definition)
145
+ #
146
+ # @reporter.should_receive(:example_finished) do |example_definition, error|
147
+ # example_definition.description.should == "example name"
148
+ # end
149
+ # runner.run
150
+ # end
151
+ #
152
+ # it "should report NO NAME when told to use generated description with no expectations" do
153
+ # example_definition = @example_group_class.it() {}
154
+ # runner = create_runner(example_definition)
155
+ # @reporter.should_receive(:example_finished) do |example, error|
156
+ # example.description.should == "NO NAME (Because there were no expectations)"
157
+ # end
158
+ # runner.run
159
+ # end
160
+ #
161
+ # it "should report NO NAME when told to use generated description and matcher fails" do
162
+ # example_definition = @example_group_class.it() do
163
+ # 5.should "" # Has no matches? method..
164
+ # end
165
+ # runner = create_runner(example_definition)
166
+ #
167
+ # @reporter.should_receive(:example_finished) do |example, error|
168
+ # example_definition.description.should == "NO NAME (Because of Error raised in matcher)"
169
+ # end
170
+ # runner.run
171
+ # end
172
+ #
173
+ # it "should report generated description when told to and it is available" do
174
+ # example_definition = @example_group_class.it() {
175
+ # 5.should == 5
176
+ # }
177
+ # runner = create_runner(example_definition)
178
+ #
179
+ # @reporter.should_receive(:example_finished) do |example_definition, error|
180
+ # example_definition.description.should == "should == 5"
181
+ # end
182
+ # runner.run
183
+ # end
184
+ #
185
+ # it "should unregister description_generated callback (lest a memory leak should build up)" do
186
+ # example_definition = @example_group_class.it("something")
187
+ # runner = create_runner(example_definition)
188
+ #
189
+ # Spec::Matchers.should_receive(:example_finished)
190
+ # runner.run
191
+ # end
192
+ # end
193
+ end
194
+ end
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ module Spec
4
+ module Example
5
+ # describe Example do
6
+ # before(:each) do
7
+ # @example = Example.new "example" do
8
+ # foo
9
+ # end
10
+ # end
11
+ #
12
+ # it "should tell you its docstring" do
13
+ # @example.description.should == "example"
14
+ # end
15
+ #
16
+ # it "should execute its block in the context provided" do
17
+ # context = Class.new do
18
+ # def foo
19
+ # "foo"
20
+ # end
21
+ # end.new
22
+ # @example.run_in(context).should == "foo"
23
+ # end
24
+ # end
25
+ #
26
+ # describe Example, "#description" do
27
+ # it "should default to NO NAME when not passed anything when there are no matchers" do
28
+ # example = Example.new {}
29
+ # example.run_in(Object.new)
30
+ # example.description.should == "NO NAME"
31
+ # end
32
+ #
33
+ # it "should default to NO NAME description (Because of --dry-run) when passed nil and there are no matchers" do
34
+ # example = Example.new(nil) {}
35
+ # example.run_in(Object.new)
36
+ # example.description.should == "NO NAME"
37
+ # end
38
+ #
39
+ # it "should allow description to be overridden" do
40
+ # example = Example.new("Test description")
41
+ # example.description.should == "Test description"
42
+ # end
43
+ #
44
+ # it "should use description generated from matcher when there is no passed in description" do
45
+ # example = Example.new(nil) do
46
+ # 1.should == 1
47
+ # end
48
+ # example.run_in(Object.new)
49
+ # example.description.should == "should == 1"
50
+ # end
51
+ # end
52
+ end
53
+ end
@@ -0,0 +1,59 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ module Spec
4
+ module Example
5
+ describe 'Nested Example Groups' do
6
+ parent = self
7
+
8
+ def count
9
+ @count ||= 0
10
+ @count = @count + 1
11
+ @count
12
+ end
13
+
14
+ before(:all) do
15
+ count.should == 1
16
+ end
17
+
18
+ before(:all) do
19
+ count.should == 2
20
+ end
21
+
22
+ before(:each) do
23
+ count.should == 3
24
+ end
25
+
26
+ before(:each) do
27
+ count.should == 4
28
+ end
29
+
30
+ it "should run before(:all), before(:each), example, after(:each), after(:all) in order" do
31
+ count.should == 5
32
+ end
33
+
34
+ after(:each) do
35
+ count.should == 7
36
+ end
37
+
38
+ after(:each) do
39
+ count.should == 6
40
+ end
41
+
42
+ after(:all) do
43
+ count.should == 9
44
+ end
45
+
46
+ after(:all) do
47
+ count.should == 8
48
+ end
49
+
50
+ describe 'nested example group' do
51
+ self.superclass.should == parent
52
+
53
+ it "should run all before and after callbacks" do
54
+ count.should == 5
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end