rspec 1.0.8 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
data/CHANGES CHANGED
@@ -1,3 +1,123 @@
1
+ == Version 1.1.0
2
+
3
+ The "tell me a story and go nest yourself" release.
4
+
5
+ * Applied patch from Mike Vincent to handle generators rails > 2.0.1. Closes LH[#181]
6
+ * Formatter.pending signature changed so it gets passed an ExampleGroup instance instead of the name ( LH[#180])
7
+ * Fixed LH[#180] Spec::Rails::Example::ModelExampleGroup and friends show up in rspec/rails output
8
+ * Spec::Rails no longer loads ActiveRecord extensions if it's disablet in config/boot.rb
9
+ * Applied LH[#178] small annoyances running specs with warnings enabled (Patch from Mikko Lehtonen)
10
+ * Tighter integration with Rails fixtures. Take advantage of fixture caching to get performance improvements (Thanks to Pat Maddox, Nick Kallen, Jonathan Barnes, and Curtis)
11
+
12
+ == Version 1.1.0-RC1
13
+
14
+ Textmate Bundle users - this release adds a new RSpec bundle that highlights describe, it, before and after and
15
+ provides navigation to descriptions and examples (rather than classes and methods). When you first install this,
16
+ it is going to try to hijack all of your .rb files. All you need to do is open a .rb file that does not end with
17
+ 'spec.rb' and change the bundle selection from RSpec to Ruby. TextMate will do the right thing from then on.
18
+
19
+ Shortcuts for tab-activated snippets all follow the TextMate convention of 2 or 3 letters of the first word, followed by the first letter of each subsequent word. So "should have_at_least" would be triggered by shhal.
20
+
21
+ We reduced the scope for running spec directories, files, a single file or individual spec in TextMate to source.ruby.rspec. This allowed us to restore the standard Ruby shortcuts:
22
+
23
+ CMD-R runs all the specs in one file
24
+ CMD-SHIFT-R runs an individual spec
25
+ CMD-OPT-R runs any files or directories selected in the TextMate drawer
26
+
27
+ rspec_on_rails users - don't forget to run script/generate rspec
28
+
29
+ * Added shared_examples_for method, which you can (should) use instead of describe Foo, :shared => true
30
+ * Applied LH[#168] Fix describe Object, "description contains a # in it" (Patch from Martin Emde)
31
+ * Applied LH[#15] Reverse loading of ActionView::Base helper modules (Patch from Mark Van Holstyn)
32
+ * Applied LH[#149] Update contribute page to point towards lighthouse (Patch from Josh Knowles)
33
+ * Applied LH[#142] verify_rcov fails with latest rcov (Patch from Kyle Hargraves)
34
+ * Applied LH[#10] Allow stubs to yield and return values (Patch from Pat Maddox)
35
+ * Fixed LH[#139] version.rb in trunk missing svn last changed number
36
+ * Applied LH[#14] Adding support for by_at_least/by_at_most in Change matcher (Patch from Saimon Moore)
37
+ * Applied LH[#12] Fix for TM when switching to alternate file (Patch from Trevor Squires)
38
+ * Applied LH[#133] ExampleMatcher should match against before(:all) (Patch from Bob Cotton)
39
+ * Applied LH[#134] Only load spec inside spec_helper.rb (Patch from Mark Van Holstyn)
40
+ * RSpec now bails immediately if there are examples with identical names.
41
+ * Applied LH[#132] Plain Text stories should support Given and Given: (Patch from Jarkko Laine)
42
+ * Applied LH[#16] Have SimpleMatchers expose their description for specdocs (Patch from Bryan Helmkamp)
43
+ * Stories now support --colour
44
+ * Changed the DSL modules to Example (i.e. Spec::Example instead of Spec::DSL)
45
+ * Applied [#15608] Story problem if parenthesis used in Given, When, Then or And (Patch from Sinclair Bain)
46
+ * Applied [#15659] GivenScenario fails when it is a RailsStory (Patch from Nathan Sutton)
47
+ * Fixed [#15639] rcov exclusion configuration. (Spec::Rails projects can configure rcov with spec/rcov.opts)
48
+ * The rdoc formatter (--format rdoc) is gone. It was buggy and noone was using it.
49
+ * Changed Spec::DSL::Behaviour to Spec::DSL::ExampleGroup
50
+ * Changed Spec::DSL::SharedBehaviour to Spec::DSL::SharedExampleGroup
51
+ * Applied [#14023] Small optimization for heavily proxied objects. (Patch from Ian Leitch)
52
+ * Applied [#13943] ProfileFormatter (Top 10 slowest examples) (Patch from Ian Leitch)
53
+ * Fixed [#15232] heckle is not working correctly in trunk (as of r2801)
54
+ * Applied [#14399] Show pending reasons in HTML report (Patch from Bryan Helmkamp)
55
+ * Discovered fixed: [#10263] mock "leak" when setting an expectation in a block passed to mock#should_receive
56
+ * Fixed [#14671] Spec::DSL::ExampleRunner gives "NO NAME because of --dry-run" for every example for 'rake spec:doc'
57
+ * Fixed [#14543] rspec_scaffold broken with Rails 2.0
58
+ * Removed Patch [#10577] Rails with Oracle breaks 0.9.2 - was no longer necessary since we moved describe to the Main object (instead of Object)
59
+ * Fixed [#14527] specs run twice on rails 1.2.4 and rspec/rspec_on_rails trunk
60
+ * Applied [#14043] Change output ordering to show pending before errors (Patch from Mike Mangino)
61
+ * Applied [#14095] Don't have ./script/generate rspec create previous_failures.txt (Patch from Bryan Helmkamp)
62
+ * Applied [#14254] Improved error handling for Object#should and Object#should_not (Patch from Antti Tarvainen)
63
+ * Applied [#14186] Remove dead code from message_expecation.rb (Patch from Antti Tarvainen)
64
+ * Applied [#14183] Tiny improvement on mock_spec.rb (Patch from Antti Tarvainen)
65
+ * Applied [#14208] Fix to Mock#method_missing raising NameErrors instead of MockExpectationErrors (Patch from Antti Tarvainen)
66
+ * Applied [#14255] Fixed examples in mock_spec.rb and shared_behaviour_spec.rb (Patch from Antti Tarvainen)
67
+ * Applied [#14362] partially mocking objects that define == can blow up (Patch from Pat Maddox)
68
+ * test_ methods with an arity of 0 defined in a describe block or Example object will be run as an Example, providing a seamless transition from Test::Unit
69
+ * Removed BehaviourRunner
70
+ * Fixed [#13969] Spec Failures on Trunk w/ Autotest
71
+ * Applied [#14156] False positives with should_not (Patch from Antti Tarvainen)
72
+ * Applied [#14170] route_for and params_from internal specs fixed (Patch from Antti Tarvainen)
73
+ * Fixed [#14166] Cannot build trunk
74
+ * Applied [#14142] Fix for bug #11602: Nested #have_tag specifications fails on the wrong line number (Patch from Antti Tarvainen)
75
+ * Removed warn_if_no_files argument and feature
76
+ * Steps (Given/When/Then) with no blocks are treated as pending
77
+ * Applied [#13913] Scenario should treat no code block as pending (Patch from Evan Light)
78
+ * Fixed [#13370] Weird mock expectation error (Patch from Mike Mangino)
79
+ * Applied [#13952] Fix for performance regression introduced in r2096 (Patch from Ian Leitch)
80
+ * Applied [#13881] Dynamically include Helpers that are included on ActionView::Base (Patch from Brandon Keepers)
81
+ * Applied [#13833] ActionView::Helpers::JavaScriptMacrosHelper removed after 1.2.3 (Patch from Yurii Rashkovskii)
82
+ * Applied [#13814] RSpec on Rails w/ fixture-scenarios (Patch from Shintaro Kakutani)
83
+ * Add ability to define Example subclass instead of using describe
84
+ * Applied Patch from James Edward Gray II to improve syntax highlighting in TextMate
85
+ * Fixed [#13579] NoMethodError not raised for missing helper methods
86
+ * Fixed [#13713] form helper method 'select' can not be called when calling custom helper methods from specs
87
+ * Example subclasses Test::Unit::TestCase
88
+ * Added stub_everything method to create a stub that will return itself for any message it doesn't understand
89
+ * Added stories directory with stories/all.rb and stories/helper.rb when you script/generate rspec
90
+ * Applied [#13554] Add "And" so you can say Given... And... When... Then... And...
91
+ * Applied [#11254] RSpec syntax coloring and function pop-up integration in TextMate (Patch from Wincent Colaiuta)
92
+ * Applied [#13143] ActionView::Helpers::RecordIdentificationHelper should be included if present (Patch from Jay Levitt)
93
+ * Applied [#13567] patch to allow stubs to yield consecutive values (Patch from Rupert Voelcker)
94
+ * Applied [#13559] reverse version of route_for (Patch from Rupert Voelcker)
95
+ * Added [#13532] /lib specs should get base EvalContext
96
+ * Applied [#13451] Add a null_object option to mock_model (Patch from James Deville)
97
+ * Applied [#11919] Making non-implemented specs easy in textmate (Patch from Scott Taylor)
98
+ * Applied [#13274] ThrowSymbol recognized a NameError triggered by Kernel#method_missing as a thrown Symbol
99
+ * Applied [#12722] the alternate file command does not work in rails views due to scope (Patch from Carl Porth)
100
+ * Behaviour is now a Module that is used by Example class methods and SharedBehaviour
101
+ * Added ExampleDefinition
102
+ * Added story runner framework based on rbehave [#12628]
103
+ * Applied [#13336] Helper directory incorrect for rake stats in statsetup task (Patch from Curtis Miller)
104
+ * Applied [#13339] Add the ability for spec_parser to parse describes with :behaviour_type set (Patch from Will Leinweber and Dav Yaginuma)
105
+ * Fixed [#13271] incorrect behaviour with expect_render and stub_render
106
+ * Applied [#13129] Fix failing specs in spec_distributed (Patch from Bob Cotton)
107
+ * Applied [#13118] Rinda support for Spec::Distributed (Patch from Bob Cotton)
108
+ * Removed BehaviourEval
109
+ * Removed Behaviour#inherit
110
+ * Moved implementation of install_dependencies to example_rails_app
111
+ * Renamed RSPEC_DEPS to VENDOR_DEPS
112
+ * Added Example#not_implemented?
113
+ * You can now stub!(:msg).with(specific args)
114
+ * describe("A", Hash, "with one element") will generate description "A Hash with one element" (Tip from Ola Bini)
115
+ * Applied [#13016] [DOC] Point out that view specs render, well, a view (Patch from Jay Levitt)
116
+ * Applied [#13078] Develop rspec with autotest (Patch from Scott Taylor)
117
+ * Fixed [#13065] Named routes throw a NoMethodError in Helper specs (Patches from James Deville and Mike Mangino)
118
+ * Added (back) the verbose attribute in Spec::Rake::SpecTask
119
+ * Changed documentation to point at the new http svn URL, which is more accessible.
120
+
1
121
  == Version 1.0.8
2
122
 
3
123
  Another bugfix release - this time to resolve the version mismatch
@@ -31,7 +151,7 @@ able to use the passed Example instance as if it were a String.
31
151
  * Applied [#12935] Remove requirement that mocha must be installed as a gem when used as mocking framework. (Patch from Ryan Kinderman).
32
152
  * Fixed [#12893] RSpec's Autotest should work with rspec's trunk
33
153
  * Fixed [#12865] Partial mock error when object has an @options instance var
34
- * Applied [#12701] Allow checking of content captured with content_for in view specs (Patch from Jens Kr�mer)
154
+ * Applied [#12701] Allow checking of content captured with content_for in view specs (Patch from Jens Kr�mer)
35
155
  * Applied [#12817] Cannot include same shared behaviour when required with absolute paths (Patch from Ian Leitch)
36
156
  * Applied [#12719] rspec_on_rails should not include pagination helper (Patch from Matthijs Langenberg)
37
157
  * Fixed [#12714] helper spec not finding rails core helpers
@@ -56,7 +176,7 @@ able to use the passed Example instance as if it were a String.
56
176
  * Fixed [#12079] auto-generated example name incomplete: should have 1 error on ....]
57
177
  * Applied [#12066] Docfix for mocks/mocks.page (Patch from Kyle Hargraves)
58
178
  * Fixed [#11891] script/generate rspec_controller fails to create appropriate views (from templates) on edge rails
59
- * Applied [#11921] Adds the correct controller_name from derived_controller_name() to the ViewExampleController (Patch from Eloy Duran)
179
+ * Applied [#11921] Adds the correct controller_name from derived_controller_name() to the ViewExampleGroupController (Patch from Eloy Duran)
60
180
  * Fixed [#11903] config.include with behaviour_type 'hash' does not work
61
181
  * Examples without blocks and pending is now reported with a P instead of a *
62
182
  * Pending blocks that now pass are rendered blue
data/README CHANGED
@@ -1,11 +1,13 @@
1
1
  == RSpec
2
2
 
3
- RSpec is a Behaviour Definition Framework intended for use in Behaviour
4
- Driven Development. RSpec plays the same role that a unit testing framework
5
- would play in a Test Driven Development environment, but does so using
6
- words and structures that better support BDD.
3
+ RSpec is a Behaviour Driven Development framework with tools to express User Stories
4
+ with Executable Scenarios and Executable Examples at the code level.
7
5
 
8
- RSpec ships with four modules:
6
+ RSpec ships with several modules:
7
+
8
+ Spec::Story provides a framework for expressing User Stories
9
+
10
+ Spec::Example provides a framework for expressing code Examples
9
11
 
10
12
  Spec::Matchers provides Expression Matchers for use with Spec::Expectations
11
13
  and Spec::Mocks.
@@ -18,9 +20,6 @@ can do things like:
18
20
  Spec::Mocks supports creating Mock Objects, Stubs, and adding Mock/Stub
19
21
  behaviour to your existing objects.
20
22
 
21
- Spec::Runner provides a very small but powerful DSL for writing executable
22
- examples of how your code should work.
23
-
24
23
  == Installation
25
24
 
26
25
  The simplest approach is to install the gem:
@@ -60,7 +59,6 @@ Once those are all installed, you should be able to run the suite with the follo
60
59
  * cd ..
61
60
  * rake pre_commit
62
61
 
63
-
64
62
  Note that RSpec itself - once built - doesn't have any dependencies outside the Ruby core
65
63
  and stdlib - with a few exceptions:
66
64
 
@@ -69,3 +67,6 @@ and stdlib - with a few exceptions:
69
67
  * The Spec::Rake::SpecTask needs RCov if RCov is enabled in the task.
70
68
 
71
69
  See http://rspec.rubyforge.org for further documentation.
70
+
71
+ == Contributing
72
+
data/Rakefile CHANGED
@@ -4,6 +4,7 @@ require 'rake/gempackagetask'
4
4
  require 'rake/contrib/rubyforgepublisher'
5
5
  require 'rake/clean'
6
6
  require 'rake/rdoctask'
7
+ require 'rake/testtask'
7
8
  require 'spec/version'
8
9
  dir = File.dirname(__FILE__)
9
10
  $LOAD_PATH.unshift(File.expand_path("#{dir}/../pre_commit/lib"))
@@ -11,7 +12,6 @@ require "pre_commit"
11
12
 
12
13
  # Some of the tasks are in separate files since they are also part of the website documentation
13
14
  load File.dirname(__FILE__) + '/rake_tasks/examples.rake'
14
- load File.dirname(__FILE__) + '/rake_tasks/examples_specdoc.rake'
15
15
  load File.dirname(__FILE__) + '/rake_tasks/examples_with_rcov.rake'
16
16
  load File.dirname(__FILE__) + '/rake_tasks/failing_examples_with_html.rake'
17
17
  load File.dirname(__FILE__) + '/rake_tasks/verify_rcov.rake'
@@ -24,42 +24,36 @@ PKG_FILES = FileList[
24
24
  'lib/**/*.rb',
25
25
  'spec/**/*.rb',
26
26
  'examples/**/*',
27
- 'plugins/**/*'
27
+ 'plugins/**/*',
28
+ 'stories/**/*'
28
29
  ]
29
- FileUtils.touch(File.dirname(__FILE__) + '/previous_failures.txt')
30
30
 
31
31
  task :default => [:verify_rcov]
32
+ task :verify_rcov => [:spec, :stories]
32
33
 
33
34
  desc "Run all specs"
34
35
  Spec::Rake::SpecTask.new do |t|
35
- t.spec_files = FileList[
36
- 'spec/**/*_spec.rb',
37
- '../RSpec.tmbundle/Support/spec/*_spec.rb'
38
- # TODO: get these in too - need to fix coverage
39
- # '../spec_ui/spec/**/*_spec.rb'
40
- ]
36
+ t.spec_files = FileList['spec/**/*_spec.rb']
41
37
  t.spec_opts = ['--options', 'spec.opts']
42
- t.rcov = true
43
- t.rcov_dir = '../doc/output/coverage'
44
- t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples']
38
+ unless ENV['NO_RCOV']
39
+ t.rcov = true
40
+ t.rcov_dir = '../doc/output/coverage'
41
+ t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples,\/var\/lib\/gems,\/Library\/Ruby,\.autotest']
42
+ end
45
43
  end
46
44
 
47
- desc "Run all translated specs"
48
- Spec::Rake::SpecTask.new('translated_specs') do |t|
49
- t.spec_files = FileList['translated_specs/**/*_spec.rb'].exclude( # These translate, but have other quirks
50
- 'translated_specs/spec/translator_spec.rb',
51
- 'translated_specs/spec/runner/formatter/html_formatter_spec.rb',
52
- 'translated_specs/spec/runner/option_parser_spec.rb'
53
- )
54
- t.spec_opts = ['--options', 'spec.opts']
55
- t.rcov = true
56
- t.rcov_dir = '../doc/output/coverage'
57
- t.rcov_opts = ['--exclude', 'spec\/spec,bin\/spec,examples']
45
+ desc "Run all stories"
46
+ task :stories do
47
+ html = 'story_server/prototype/rspec_stories.html'
48
+ ruby "stories/all.rb --colour --format plain --format html:#{html}"
49
+ unless IO.read(html) =~ /<span class="param">/m
50
+ raise 'highlighted parameters are broken in story HTML'
51
+ end
58
52
  end
59
53
 
60
54
  desc "Run all specs and store html output in doc/output/report.html"
61
55
  Spec::Rake::SpecTask.new('spec_html') do |t|
62
- t.spec_files = FileList['spec/**/*_spec.rb', 'vendor/RSpec.tmbundle/Support/spec/*_spec.rb']
56
+ t.spec_files = FileList['spec/**/*_spec.rb', '../../RSpec.tmbundle/Support/spec/*_spec.rb']
63
57
  t.spec_opts = ['--format html:../doc/output/report.html','--backtrace']
64
58
  end
65
59
 
@@ -68,21 +62,11 @@ Spec::Rake::SpecTask.new('failing_examples') do |t|
68
62
  t.spec_files = FileList['failing_examples/**/*_spec.rb']
69
63
  end
70
64
 
71
- desc 'Generate HTML documentation for website'
72
- task :webgen do
73
- core.webgen
74
- end
75
-
76
65
  desc 'Generate RDoc'
77
66
  rd = Rake::RDocTask.new do |rdoc|
78
67
  rdoc.rdoc_dir = '../doc/output/rdoc'
79
68
  rdoc.options << '--title' << 'RSpec' << '--line-numbers' << '--inline-source' << '--main' << 'README'
80
- rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE', 'EXAMPLES.rd', 'UPGRADE', 'lib/**/*.rb')
81
- end
82
-
83
- desc "Generate EXAMPLES.rb"
84
- task :rdoc do
85
- core.rdoc
69
+ rdoc.rdoc_files.include('README', 'CHANGES', 'MIT-LICENSE', 'UPGRADE', 'lib/**/*.rb')
86
70
  end
87
71
 
88
72
  spec = Gem::Specification.new do |s|
@@ -110,6 +94,7 @@ spec = Gem::Specification.new do |s|
110
94
  s.author = "RSpec Development Team"
111
95
  s.email = "rspec-devel@rubyforge.org"
112
96
  s.homepage = "http://rspec.rubyforge.org"
97
+ s.platform = Gem::Platform::RUBY
113
98
  s.rubyforge_project = "rspec"
114
99
  end
115
100
 
@@ -177,9 +162,7 @@ task(:pre_commit) {core.pre_commit}
177
162
  desc "Build the website, but do not publish it"
178
163
  task(:website) {core.website}
179
164
 
180
- task :rdoc_rails do
181
- core.rdoc_rails
182
- end
165
+ task(:rdoc_rails) {core.rdoc_rails}
183
166
 
184
167
  task :verify_user do
185
168
  raise "RUBYFORGE_USER environment variable not set!" unless ENV['RUBYFORGE_USER']
@@ -231,24 +214,14 @@ task :package_tmbundle do
231
214
  end
232
215
  task :pkg => :package_tmbundle
233
216
 
234
- desc "Package the Spec::Ui gem"
235
- task :package_spec_ui do
236
- Dir.chdir '../spec_ui' do
237
- `rake clobber gem`
238
- end
239
- end
240
- task :pkg => :package_spec_ui
241
-
242
217
  desc "Publish gem+tgz+zip on RubyForge. You must make sure lib/version.rb is aligned with the CHANGELOG file"
243
218
  task :publish_packages => [:verify_user, :package] do
244
- require File.dirname(__FILE__) + '/../spec_ui/lib/spec/ui/version'
245
219
  release_files = FileList[
246
220
  "pkg/#{PKG_FILE_NAME}.gem",
247
221
  "pkg/#{PKG_FILE_NAME}.tgz",
248
222
  "pkg/rspec_on_rails-#{PKG_VERSION}.tgz",
249
223
  "pkg/#{PKG_FILE_NAME}.zip",
250
- "pkg/RSpec-#{PKG_VERSION}.tmbundle.tgz",
251
- "../spec_ui/pkg/spec_ui-#{Spec::Ui::VERSION::STRING}.gem"
224
+ "pkg/RSpec-#{PKG_VERSION}.tmbundle.tgz"
252
225
  ]
253
226
  unless Spec::VERSION::RELEASE_CANDIDATE
254
227
  require 'meta_project'
data/TODO ADDED
@@ -0,0 +1,2 @@
1
+ === Before releasing 1.1.0:
2
+
data/bin/spec CHANGED
@@ -1,3 +1,3 @@
1
1
  $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
2
2
  require 'spec'
3
- ::Spec::Runner::CommandLine.run(ARGV, STDERR, STDOUT, true, true)
3
+ exit ::Spec::Runner::CommandLine.run(rspec_options)
@@ -1,8 +1,8 @@
1
- #!/usr/bin/env ruby
2
- raise "\n\nUsage: spec_translator from_dir to_dir\n\n" if ARGV.size != 2
3
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
4
- require 'spec/translator'
5
- t = ::Spec::Translator.new
6
- from = ARGV[0]
7
- to = ARGV[1]
8
- t.translate(from, to)
1
+ #!/usr/bin/env ruby
2
+ raise "\n\nUsage: spec_translator from_dir to_dir\n\n" if ARGV.size != 2
3
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
4
+ require 'spec/translator'
5
+ t = ::Spec::Translator.new
6
+ from = ARGV[0]
7
+ to = ARGV[1]
8
+ t.translate(from, to)
@@ -1,3 +1,4 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
1
2
  $global = 0
2
3
 
3
4
  describe "State created in before(:all)" do
@@ -1,3 +1,4 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
1
2
  require 'spec/runner/formatter/progress_bar_formatter'
2
3
 
3
4
  # Example of a formatter with custom bactrace printing. Run me with:
@@ -1,3 +1,4 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
1
2
  class FileAccessor
2
3
  def open_and_handle_with(pathname, processor)
3
4
  pathname.open do |io|
@@ -1,3 +1,4 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
1
2
  # greeter.rb
2
3
  #
3
4
  # Based on http://glu.ttono.us/articles/2006/12/19/tormenting-your-tests-with-heckle
@@ -1,3 +1,4 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
1
2
  context "A legacy spec" do
2
3
  setup do
3
4
  end
@@ -0,0 +1,28 @@
1
+ class MultiThreadedExampleGroupRunner < Spec::Runner::ExampleGroupRunner
2
+ def initialize(options, arg)
3
+ super(options)
4
+ # configure these
5
+ @thread_count = 4
6
+ @thread_wait = 0
7
+ end
8
+
9
+ def run
10
+ @threads = []
11
+ q = Queue.new
12
+ example_groups.each { |b| q << b}
13
+ success = true
14
+ @thread_count.times do
15
+ @threads << Thread.new(q) do |queue|
16
+ while not queue.empty?
17
+ example_group = queue.pop
18
+ success &= example_group.suite.run(nil)
19
+ end
20
+ end
21
+ sleep @thread_wait
22
+ end
23
+ @threads.each {|t| t.join}
24
+ success
25
+ end
26
+ end
27
+
28
+ MultiThreadedBehaviourRunner = MultiThreadedExampleGroupRunner
@@ -0,0 +1,36 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+ require File.dirname(__FILE__) + '/stack'
3
+
4
+ class StackExamples < Spec::ExampleGroup
5
+ describe(Stack)
6
+ before(:each) do
7
+ @stack = Stack.new
8
+ end
9
+ end
10
+
11
+ class EmptyStackExamples < StackExamples
12
+ describe("when empty")
13
+ it "should be empty" do
14
+ @stack.should be_empty
15
+ end
16
+ end
17
+
18
+ class AlmostFullStackExamples < StackExamples
19
+ describe("when almost full")
20
+ before(:each) do
21
+ (1..9).each {|n| @stack.push n}
22
+ end
23
+ it "should be full" do
24
+ @stack.should_not be_full
25
+ end
26
+ end
27
+
28
+ class FullStackExamples < StackExamples
29
+ describe("when full")
30
+ before(:each) do
31
+ (1..10).each {|n| @stack.push n}
32
+ end
33
+ it "should be full" do
34
+ @stack.should be_full
35
+ end
36
+ end