rspec 0.0.10

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 (388) hide show
  1. data/.autotest +3 -0
  2. data/.gitignore +7 -0
  3. data/History.txt +1104 -0
  4. data/MIT-LICENSE +20 -0
  5. data/Manifest.txt +387 -0
  6. data/README.txt +36 -0
  7. data/Rakefile +88 -0
  8. data/TODO +1 -0
  9. data/bin/autospec +3 -0
  10. data/bin/spec +4 -0
  11. data/bin/spec_translator +8 -0
  12. data/examples/pure/autogenerated_docstrings_example.rb +19 -0
  13. data/examples/pure/before_and_after_example.rb +40 -0
  14. data/examples/pure/behave_as_example.rb +45 -0
  15. data/examples/pure/custom_expectation_matchers.rb +54 -0
  16. data/examples/pure/custom_formatter.rb +12 -0
  17. data/examples/pure/dynamic_spec.rb +9 -0
  18. data/examples/pure/file_accessor.rb +19 -0
  19. data/examples/pure/file_accessor_spec.rb +38 -0
  20. data/examples/pure/greeter_spec.rb +31 -0
  21. data/examples/pure/helper_method_example.rb +14 -0
  22. data/examples/pure/io_processor.rb +8 -0
  23. data/examples/pure/io_processor_spec.rb +21 -0
  24. data/examples/pure/legacy_spec.rb +11 -0
  25. data/examples/pure/mocking_example.rb +27 -0
  26. data/examples/pure/multi_threaded_behaviour_runner.rb +28 -0
  27. data/examples/pure/nested_classes_example.rb +36 -0
  28. data/examples/pure/partial_mock_example.rb +29 -0
  29. data/examples/pure/pending_example.rb +20 -0
  30. data/examples/pure/predicate_example.rb +27 -0
  31. data/examples/pure/priority.txt +1 -0
  32. data/examples/pure/shared_example_group_example.rb +81 -0
  33. data/examples/pure/shared_stack_examples.rb +38 -0
  34. data/examples/pure/spec_helper.rb +3 -0
  35. data/examples/pure/stack.rb +36 -0
  36. data/examples/pure/stack_spec.rb +63 -0
  37. data/examples/pure/stack_spec_with_nested_example_groups.rb +67 -0
  38. data/examples/pure/stubbing_example.rb +69 -0
  39. data/examples/stories/adder.rb +13 -0
  40. data/examples/stories/addition +34 -0
  41. data/examples/stories/addition.rb +9 -0
  42. data/examples/stories/calculator.rb +65 -0
  43. data/examples/stories/game-of-life/.loadpath +5 -0
  44. data/examples/stories/game-of-life/README.txt +21 -0
  45. data/examples/stories/game-of-life/behaviour/everything.rb +6 -0
  46. data/examples/stories/game-of-life/behaviour/examples/examples.rb +3 -0
  47. data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
  48. data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
  49. data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
  50. data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
  51. data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
  52. data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
  53. data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
  54. data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
  55. data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
  56. data/examples/stories/game-of-life/behaviour/stories/helper.rb +6 -0
  57. data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +26 -0
  58. data/examples/stories/game-of-life/behaviour/stories/steps.rb +5 -0
  59. data/examples/stories/game-of-life/behaviour/stories/stories.rb +3 -0
  60. data/examples/stories/game-of-life/behaviour/stories/stories.txt +22 -0
  61. data/examples/stories/game-of-life/life.rb +3 -0
  62. data/examples/stories/game-of-life/life/game.rb +23 -0
  63. data/examples/stories/game-of-life/life/grid.rb +43 -0
  64. data/examples/stories/helper.rb +9 -0
  65. data/examples/stories/steps/addition_steps.rb +18 -0
  66. data/failing_examples/README.txt +7 -0
  67. data/failing_examples/diffing_spec.rb +36 -0
  68. data/failing_examples/failing_autogenerated_docstrings_example.rb +19 -0
  69. data/failing_examples/failure_in_setup.rb +10 -0
  70. data/failing_examples/failure_in_teardown.rb +10 -0
  71. data/failing_examples/mocking_example.rb +40 -0
  72. data/failing_examples/mocking_with_flexmock.rb +26 -0
  73. data/failing_examples/mocking_with_mocha.rb +25 -0
  74. data/failing_examples/mocking_with_rr.rb +27 -0
  75. data/failing_examples/partial_mock_example.rb +20 -0
  76. data/failing_examples/predicate_example.rb +29 -0
  77. data/failing_examples/raising_example.rb +47 -0
  78. data/failing_examples/spec_helper.rb +3 -0
  79. data/failing_examples/syntax_error_example.rb +7 -0
  80. data/failing_examples/team_spec.rb +44 -0
  81. data/failing_examples/timeout_behaviour.rb +7 -0
  82. data/init.rb +9 -0
  83. data/lib/autotest/discover.rb +3 -0
  84. data/lib/autotest/rspec.rb +72 -0
  85. data/lib/spec.rb +30 -0
  86. data/lib/spec/adapters.rb +1 -0
  87. data/lib/spec/adapters/ruby_engine.rb +26 -0
  88. data/lib/spec/adapters/ruby_engine/mri.rb +8 -0
  89. data/lib/spec/adapters/ruby_engine/rubinius.rb +8 -0
  90. data/lib/spec/example.rb +12 -0
  91. data/lib/spec/example/configuration.rb +158 -0
  92. data/lib/spec/example/errors.rb +9 -0
  93. data/lib/spec/example/example_group.rb +17 -0
  94. data/lib/spec/example/example_group_factory.rb +64 -0
  95. data/lib/spec/example/example_group_methods.rb +440 -0
  96. data/lib/spec/example/example_matcher.rb +44 -0
  97. data/lib/spec/example/example_methods.rb +112 -0
  98. data/lib/spec/example/module_inclusion_warnings.rb +38 -0
  99. data/lib/spec/example/module_reopening_fix.rb +21 -0
  100. data/lib/spec/example/pending.rb +18 -0
  101. data/lib/spec/example/shared_example_group.rb +58 -0
  102. data/lib/spec/expectations.rb +56 -0
  103. data/lib/spec/expectations/differs/default.rb +66 -0
  104. data/lib/spec/expectations/errors.rb +12 -0
  105. data/lib/spec/expectations/extensions.rb +2 -0
  106. data/lib/spec/expectations/extensions/object.rb +63 -0
  107. data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  108. data/lib/spec/expectations/handler.rb +62 -0
  109. data/lib/spec/extensions.rb +4 -0
  110. data/lib/spec/extensions/class.rb +24 -0
  111. data/lib/spec/extensions/main.rb +102 -0
  112. data/lib/spec/extensions/metaclass.rb +7 -0
  113. data/lib/spec/extensions/object.rb +6 -0
  114. data/lib/spec/interop/test.rb +12 -0
  115. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  116. data/lib/spec/interop/test/unit/testcase.rb +61 -0
  117. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  118. data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  119. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  120. data/lib/spec/matchers.rb +156 -0
  121. data/lib/spec/matchers/be.rb +224 -0
  122. data/lib/spec/matchers/be_close.rb +37 -0
  123. data/lib/spec/matchers/change.rb +148 -0
  124. data/lib/spec/matchers/eql.rb +43 -0
  125. data/lib/spec/matchers/equal.rb +43 -0
  126. data/lib/spec/matchers/exist.rb +17 -0
  127. data/lib/spec/matchers/has.rb +34 -0
  128. data/lib/spec/matchers/have.rb +149 -0
  129. data/lib/spec/matchers/include.rb +70 -0
  130. data/lib/spec/matchers/match.rb +41 -0
  131. data/lib/spec/matchers/operator_matcher.rb +73 -0
  132. data/lib/spec/matchers/raise_error.rb +132 -0
  133. data/lib/spec/matchers/respond_to.rb +45 -0
  134. data/lib/spec/matchers/satisfy.rb +47 -0
  135. data/lib/spec/matchers/simple_matcher.rb +132 -0
  136. data/lib/spec/matchers/throw_symbol.rb +74 -0
  137. data/lib/spec/mocks.rb +211 -0
  138. data/lib/spec/mocks/argument_constraint_matchers.rb +31 -0
  139. data/lib/spec/mocks/argument_expectation.rb +216 -0
  140. data/lib/spec/mocks/error_generator.rb +84 -0
  141. data/lib/spec/mocks/errors.rb +10 -0
  142. data/lib/spec/mocks/extensions.rb +1 -0
  143. data/lib/spec/mocks/extensions/object.rb +3 -0
  144. data/lib/spec/mocks/framework.rb +15 -0
  145. data/lib/spec/mocks/message_expectation.rb +290 -0
  146. data/lib/spec/mocks/methods.rb +39 -0
  147. data/lib/spec/mocks/mock.rb +56 -0
  148. data/lib/spec/mocks/order_group.rb +29 -0
  149. data/lib/spec/mocks/proxy.rb +184 -0
  150. data/lib/spec/mocks/space.rb +28 -0
  151. data/lib/spec/mocks/spec_methods.rb +38 -0
  152. data/lib/spec/rake/spectask.rb +227 -0
  153. data/lib/spec/rake/verify_rcov.rb +52 -0
  154. data/lib/spec/runner.rb +201 -0
  155. data/lib/spec/runner/backtrace_tweaker.rb +57 -0
  156. data/lib/spec/runner/class_and_arguments_parser.rb +16 -0
  157. data/lib/spec/runner/command_line.rb +28 -0
  158. data/lib/spec/runner/drb_command_line.rb +20 -0
  159. data/lib/spec/runner/example_group_runner.rb +59 -0
  160. data/lib/spec/runner/formatter/base_formatter.rb +77 -0
  161. data/lib/spec/runner/formatter/base_text_formatter.rb +130 -0
  162. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
  163. data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  164. data/lib/spec/runner/formatter/html_formatter.rb +337 -0
  165. data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
  166. data/lib/spec/runner/formatter/profile_formatter.rb +51 -0
  167. data/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
  168. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  169. data/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
  170. data/lib/spec/runner/formatter/story/html_formatter.rb +161 -0
  171. data/lib/spec/runner/formatter/story/plain_text_formatter.rb +188 -0
  172. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  173. data/lib/spec/runner/heckle_runner.rb +72 -0
  174. data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  175. data/lib/spec/runner/option_parser.rb +203 -0
  176. data/lib/spec/runner/options.rb +309 -0
  177. data/lib/spec/runner/reporter.rb +147 -0
  178. data/lib/spec/runner/spec_parser.rb +71 -0
  179. data/lib/spec/story.rb +10 -0
  180. data/lib/spec/story/extensions.rb +3 -0
  181. data/lib/spec/story/extensions/main.rb +86 -0
  182. data/lib/spec/story/extensions/regexp.rb +9 -0
  183. data/lib/spec/story/extensions/string.rb +9 -0
  184. data/lib/spec/story/given_scenario.rb +14 -0
  185. data/lib/spec/story/runner.rb +60 -0
  186. data/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
  187. data/lib/spec/story/runner/scenario_collector.rb +18 -0
  188. data/lib/spec/story/runner/scenario_runner.rb +54 -0
  189. data/lib/spec/story/runner/story_mediator.rb +137 -0
  190. data/lib/spec/story/runner/story_parser.rb +247 -0
  191. data/lib/spec/story/runner/story_runner.rb +70 -0
  192. data/lib/spec/story/scenario.rb +14 -0
  193. data/lib/spec/story/step.rb +70 -0
  194. data/lib/spec/story/step_group.rb +89 -0
  195. data/lib/spec/story/step_mother.rb +37 -0
  196. data/lib/spec/story/story.rb +39 -0
  197. data/lib/spec/story/world.rb +128 -0
  198. data/lib/spec/translator.rb +114 -0
  199. data/lib/spec/version.rb +13 -0
  200. data/plugins/mock_frameworks/flexmock.rb +23 -0
  201. data/plugins/mock_frameworks/mocha.rb +19 -0
  202. data/plugins/mock_frameworks/rr.rb +21 -0
  203. data/plugins/mock_frameworks/rspec.rb +20 -0
  204. data/rake_tasks/examples.rake +7 -0
  205. data/rake_tasks/examples_with_rcov.rake +9 -0
  206. data/rake_tasks/failing_examples_with_html.rake +9 -0
  207. data/rake_tasks/verify_rcov.rake +7 -0
  208. data/spec/README.jruby +15 -0
  209. data/spec/autotest/discover_spec.rb +19 -0
  210. data/spec/autotest/rspec_spec.rb +206 -0
  211. data/spec/autotest_helper.rb +6 -0
  212. data/spec/autotest_matchers.rb +47 -0
  213. data/spec/rspec_suite.rb +7 -0
  214. data/spec/ruby_forker.rb +13 -0
  215. data/spec/spec.opts +6 -0
  216. data/spec/spec/adapters/ruby_engine_spec.rb +16 -0
  217. data/spec/spec/example/configuration_spec.rb +282 -0
  218. data/spec/spec/example/example_group/described_module_spec.rb +20 -0
  219. data/spec/spec/example/example_group/warning_messages_spec.rb +76 -0
  220. data/spec/spec/example/example_group_class_definition_spec.rb +48 -0
  221. data/spec/spec/example/example_group_factory_spec.rb +144 -0
  222. data/spec/spec/example/example_group_methods_spec.rb +572 -0
  223. data/spec/spec/example/example_group_spec.rb +723 -0
  224. data/spec/spec/example/example_matcher_spec.rb +96 -0
  225. data/spec/spec/example/example_methods_spec.rb +126 -0
  226. data/spec/spec/example/example_runner_spec.rb +194 -0
  227. data/spec/spec/example/example_spec.rb +53 -0
  228. data/spec/spec/example/nested_example_group_spec.rb +71 -0
  229. data/spec/spec/example/pending_module_spec.rb +42 -0
  230. data/spec/spec/example/predicate_matcher_spec.rb +21 -0
  231. data/spec/spec/example/shared_example_group_spec.rb +265 -0
  232. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  233. data/spec/spec/expectations/differs/default_spec.rb +127 -0
  234. data/spec/spec/expectations/extensions/object_spec.rb +107 -0
  235. data/spec/spec/expectations/fail_with_spec.rb +71 -0
  236. data/spec/spec/extensions/main_spec.rb +76 -0
  237. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  238. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  239. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  240. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  241. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  242. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  243. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  244. data/spec/spec/interop/test/unit/spec_spec.rb +45 -0
  245. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
  246. data/spec/spec/interop/test/unit/testcase_spec.rb +45 -0
  247. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  248. data/spec/spec/matchers/be_close_spec.rb +39 -0
  249. data/spec/spec/matchers/be_spec.rb +248 -0
  250. data/spec/spec/matchers/change_spec.rb +317 -0
  251. data/spec/spec/matchers/description_generation_spec.rb +153 -0
  252. data/spec/spec/matchers/eql_spec.rb +28 -0
  253. data/spec/spec/matchers/equal_spec.rb +28 -0
  254. data/spec/spec/matchers/exist_spec.rb +57 -0
  255. data/spec/spec/matchers/handler_spec.rb +150 -0
  256. data/spec/spec/matchers/has_spec.rb +53 -0
  257. data/spec/spec/matchers/have_spec.rb +293 -0
  258. data/spec/spec/matchers/include_spec.rb +45 -0
  259. data/spec/spec/matchers/match_spec.rb +37 -0
  260. data/spec/spec/matchers/matcher_methods_spec.rb +78 -0
  261. data/spec/spec/matchers/mock_constraint_matchers_spec.rb +24 -0
  262. data/spec/spec/matchers/operator_matcher_spec.rb +168 -0
  263. data/spec/spec/matchers/raise_error_spec.rb +315 -0
  264. data/spec/spec/matchers/respond_to_spec.rb +54 -0
  265. data/spec/spec/matchers/satisfy_spec.rb +36 -0
  266. data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
  267. data/spec/spec/matchers/throw_symbol_spec.rb +54 -0
  268. data/spec/spec/mocks/any_number_of_times_spec.rb +29 -0
  269. data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  270. data/spec/spec/mocks/at_least_spec.rb +97 -0
  271. data/spec/spec/mocks/at_most_spec.rb +93 -0
  272. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  273. data/spec/spec/mocks/bug_report_10263_spec.rb +24 -0
  274. data/spec/spec/mocks/bug_report_11545_spec.rb +33 -0
  275. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  276. data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  277. data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  278. data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  279. data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  280. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +130 -0
  281. data/spec/spec/mocks/hash_including_matcher_spec.rb +32 -0
  282. data/spec/spec/mocks/mock_ordering_spec.rb +84 -0
  283. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  284. data/spec/spec/mocks/mock_spec.rb +494 -0
  285. data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  286. data/spec/spec/mocks/null_object_mock_spec.rb +40 -0
  287. data/spec/spec/mocks/once_counts_spec.rb +53 -0
  288. data/spec/spec/mocks/options_hash_spec.rb +45 -0
  289. data/spec/spec/mocks/partial_mock_spec.rb +142 -0
  290. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  291. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +175 -0
  292. data/spec/spec/mocks/precise_counts_spec.rb +52 -0
  293. data/spec/spec/mocks/record_messages_spec.rb +26 -0
  294. data/spec/spec/mocks/stub_spec.rb +181 -0
  295. data/spec/spec/mocks/twice_counts_spec.rb +67 -0
  296. data/spec/spec/package/bin_spec_spec.rb +14 -0
  297. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  298. data/spec/spec/runner/command_line_spec.rb +147 -0
  299. data/spec/spec/runner/drb_command_line_spec.rb +92 -0
  300. data/spec/spec/runner/empty_file.txt +0 -0
  301. data/spec/spec/runner/examples.txt +2 -0
  302. data/spec/spec/runner/execution_context_spec.rb +37 -0
  303. data/spec/spec/runner/failed.txt +3 -0
  304. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  305. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  306. data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
  307. data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
  308. data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
  309. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
  310. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +370 -0
  311. data/spec/spec/runner/formatter/html_formatter_spec.rb +63 -0
  312. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +333 -0
  313. data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
  314. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +137 -0
  315. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  316. data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
  317. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +158 -0
  318. data/spec/spec/runner/formatter/story/html_formatter_spec.rb +87 -0
  319. data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +548 -0
  320. data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
  321. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +370 -0
  322. data/spec/spec/runner/heckle_runner_spec.rb +78 -0
  323. data/spec/spec/runner/heckler_spec.rb +13 -0
  324. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
  325. data/spec/spec/runner/option_parser_spec.rb +394 -0
  326. data/spec/spec/runner/options_spec.rb +450 -0
  327. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  328. data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
  329. data/spec/spec/runner/output_one_time_spec.rb +16 -0
  330. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +56 -0
  331. data/spec/spec/runner/reporter_spec.rb +192 -0
  332. data/spec/spec/runner/resources/a_bar.rb +0 -0
  333. data/spec/spec/runner/resources/a_foo.rb +0 -0
  334. data/spec/spec/runner/resources/a_spec.rb +1 -0
  335. data/spec/spec/runner/spec.opts +2 -0
  336. data/spec/spec/runner/spec_drb.opts +1 -0
  337. data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
  338. data/spec/spec/runner/spec_parser_spec.rb +85 -0
  339. data/spec/spec/runner/spec_spaced.opts +2 -0
  340. data/spec/spec/runner_spec.rb +11 -0
  341. data/spec/spec/spec_classes.rb +133 -0
  342. data/spec/spec/story/builders.rb +46 -0
  343. data/spec/spec/story/extensions/main_spec.rb +161 -0
  344. data/spec/spec/story/extensions_spec.rb +14 -0
  345. data/spec/spec/story/given_scenario_spec.rb +27 -0
  346. data/spec/spec/story/runner/plain_text_story_runner_spec.rb +93 -0
  347. data/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
  348. data/spec/spec/story/runner/scenario_runner_spec.rb +214 -0
  349. data/spec/spec/story/runner/story_mediator_spec.rb +143 -0
  350. data/spec/spec/story/runner/story_parser_spec.rb +401 -0
  351. data/spec/spec/story/runner/story_runner_spec.rb +294 -0
  352. data/spec/spec/story/runner_spec.rb +93 -0
  353. data/spec/spec/story/scenario_spec.rb +20 -0
  354. data/spec/spec/story/step_group_spec.rb +157 -0
  355. data/spec/spec/story/step_mother_spec.rb +72 -0
  356. data/spec/spec/story/step_spec.rb +250 -0
  357. data/spec/spec/story/story_helper.rb +2 -0
  358. data/spec/spec/story/story_spec.rb +86 -0
  359. data/spec/spec/story/world_spec.rb +423 -0
  360. data/spec/spec/translator_spec.rb +265 -0
  361. data/spec/spec_helper.rb +103 -0
  362. data/stories/all.rb +5 -0
  363. data/stories/example_groups/autogenerated_docstrings +45 -0
  364. data/stories/example_groups/example_group_with_should_methods +17 -0
  365. data/stories/example_groups/nested_groups +17 -0
  366. data/stories/example_groups/output +25 -0
  367. data/stories/example_groups/stories.rb +7 -0
  368. data/stories/helper.rb +6 -0
  369. data/stories/interop/examples_and_tests_together +30 -0
  370. data/stories/interop/stories.rb +7 -0
  371. data/stories/interop/test_case_with_should_methods +17 -0
  372. data/stories/mock_framework_integration/stories.rb +7 -0
  373. data/stories/mock_framework_integration/use_flexmock.story +9 -0
  374. data/stories/pending_stories/README +3 -0
  375. data/stories/resources/helpers/cmdline.rb +9 -0
  376. data/stories/resources/helpers/story_helper.rb +16 -0
  377. data/stories/resources/matchers/smart_match.rb +37 -0
  378. data/stories/resources/spec/example_group_with_should_methods.rb +12 -0
  379. data/stories/resources/spec/simple_spec.rb +8 -0
  380. data/stories/resources/spec/spec_with_flexmock.rb +18 -0
  381. data/stories/resources/steps/running_rspec.rb +50 -0
  382. data/stories/resources/stories/failing_story.rb +15 -0
  383. data/stories/resources/test/spec_and_test_together.rb +57 -0
  384. data/stories/resources/test/test_case_with_should_methods.rb +30 -0
  385. data/stories/stories/multiline_steps.story +23 -0
  386. data/stories/stories/steps/multiline_steps.rb +13 -0
  387. data/stories/stories/stories.rb +6 -0
  388. metadata +461 -0
@@ -0,0 +1,114 @@
1
+ require 'fileutils'
2
+
3
+ module Spec
4
+ class Translator
5
+ def translate(from, to)
6
+ from = File.expand_path(from)
7
+ to = File.expand_path(to)
8
+ if File.directory?(from)
9
+ translate_dir(from, to)
10
+ elsif(from =~ /\.rb$/)
11
+ translate_file(from, to)
12
+ end
13
+ end
14
+
15
+ def translate_dir(from, to)
16
+ FileUtils.mkdir_p(to) unless File.directory?(to)
17
+ Dir["#{from}/*"].each do |sub_from|
18
+ path = sub_from[from.length+1..-1]
19
+ sub_to = File.join(to, path)
20
+ translate(sub_from, sub_to)
21
+ end
22
+ end
23
+
24
+ def translate_file(from, to)
25
+ translation = ""
26
+ File.open(from) do |io|
27
+ io.each_line do |line|
28
+ translation << translate_line(line)
29
+ end
30
+ end
31
+ File.open(to, "w") do |io|
32
+ io.write(translation)
33
+ end
34
+ end
35
+
36
+ def translate_line(line)
37
+ # Translate deprecated mock constraints
38
+ line.gsub!(/:any_args/, 'any_args')
39
+ line.gsub!(/:anything/, 'anything')
40
+ line.gsub!(/:boolean/, 'boolean')
41
+ line.gsub!(/:no_args/, 'no_args')
42
+ line.gsub!(/:numeric/, 'an_instance_of(Numeric)')
43
+ line.gsub!(/:string/, 'an_instance_of(String)')
44
+
45
+ return line if line =~ /(should_not|should)_receive/
46
+
47
+ line.gsub!(/(^\s*)context([\s*|\(]['|"|A-Z])/, '\1describe\2')
48
+ line.gsub!(/(^\s*)specify([\s*|\(]['|"|A-Z])/, '\1it\2')
49
+ line.gsub!(/(^\s*)context_setup(\s*[do|\{])/, '\1before(:all)\2')
50
+ line.gsub!(/(^\s*)context_teardown(\s*[do|\{])/, '\1after(:all)\2')
51
+ line.gsub!(/(^\s*)setup(\s*[do|\{])/, '\1before(:each)\2')
52
+ line.gsub!(/(^\s*)teardown(\s*[do|\{])/, '\1after(:each)\2')
53
+
54
+ if line =~ /(.*\.)(should_not|should)(?:_be)(?!_)(.*)/m
55
+ pre = $1
56
+ should = $2
57
+ post = $3
58
+ be_or_equal = post =~ /(<|>)/ ? "be" : "equal"
59
+
60
+ return "#{pre}#{should} #{be_or_equal}#{post}"
61
+ end
62
+
63
+ if line =~ /(.*\.)(should_not|should)_(?!not)\s*(.*)/m
64
+ pre = $1
65
+ should = $2
66
+ post = $3
67
+
68
+ post.gsub!(/^raise/, 'raise_error')
69
+ post.gsub!(/^throw/, 'throw_symbol')
70
+
71
+ unless standard_matcher?(post)
72
+ post = "be_#{post}"
73
+ end
74
+
75
+ # Add parenthesis
76
+ post.gsub!(/^(\w+)\s+([\w|\.|\,|\(.*\)|\'|\"|\:|@| ]+)(\})/, '\1(\2)\3') # inside a block
77
+ post.gsub!(/^(redirect_to)\s+(.*)/, '\1(\2)') # redirect_to, which often has http:
78
+ post.gsub!(/^(\w+)\s+([\w|\.|\,|\(.*\)|\{.*\}|\'|\"|\:|@| ]+)/, '\1(\2)')
79
+ post.gsub!(/(\s+\))/, ')')
80
+ post.gsub!(/\)\}/, ') }')
81
+ post.gsub!(/^(\w+)\s+(\/.*\/)/, '\1(\2)') #regexps
82
+ line = "#{pre}#{should} #{post}"
83
+ end
84
+
85
+ line
86
+ end
87
+
88
+ def standard_matcher?(matcher)
89
+ patterns = [
90
+ /^be/,
91
+ /^be_close/,
92
+ /^eql/,
93
+ /^equal/,
94
+ /^has/,
95
+ /^have/,
96
+ /^change/,
97
+ /^include/,
98
+ /^match/,
99
+ /^raise_error/,
100
+ /^respond_to/,
101
+ /^redirect_to/,
102
+ /^satisfy/,
103
+ /^throw_symbol/,
104
+ # Extra ones that we use in spec_helper
105
+ /^pass/,
106
+ /^fail/,
107
+ /^fail_with/,
108
+ ]
109
+ matched = patterns.detect{ |p| matcher =~ p }
110
+ !matched.nil?
111
+ end
112
+
113
+ end
114
+ end
@@ -0,0 +1,13 @@
1
+ module Spec
2
+ module VERSION
3
+ unless defined? MAJOR
4
+ MAJOR = 0
5
+ MINOR = 0
6
+ TINY = 10
7
+
8
+ STRING = [MAJOR, MINOR, TINY].join('.')
9
+
10
+ SUMMARY = "rspec version #{STRING}"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Created by Jim Weirich on 2007-04-10.
4
+ # Copyright (c) 2007. All rights reserved.
5
+
6
+ require 'flexmock/rspec'
7
+
8
+ module Spec
9
+ module Plugins
10
+ module MockFramework
11
+ include FlexMock::MockContainer
12
+ def setup_mocks_for_rspec
13
+ # No setup required
14
+ end
15
+ def verify_mocks_for_rspec
16
+ flexmock_verify
17
+ end
18
+ def teardown_mocks_for_rspec
19
+ flexmock_close
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ require 'mocha/standalone'
2
+ require 'mocha/object'
3
+
4
+ module Spec
5
+ module Plugins
6
+ module MockFramework
7
+ include Mocha::Standalone
8
+ def setup_mocks_for_rspec
9
+ mocha_setup
10
+ end
11
+ def verify_mocks_for_rspec
12
+ mocha_verify
13
+ end
14
+ def teardown_mocks_for_rspec
15
+ mocha_teardown
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ require 'rr'
2
+
3
+ patterns = ::Spec::Runner::QuietBacktraceTweaker::IGNORE_PATTERNS
4
+ patterns.push(RR::Errors::BACKTRACE_IDENTIFIER)
5
+
6
+ module Spec
7
+ module Plugins
8
+ module MockFramework
9
+ include RR::Extensions::InstanceMethods
10
+ def setup_mocks_for_rspec
11
+ RR::Space.instance.reset
12
+ end
13
+ def verify_mocks_for_rspec
14
+ RR::Space.instance.verify_doubles
15
+ end
16
+ def teardown_mocks_for_rspec
17
+ RR::Space.instance.reset
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "lib", "spec", "mocks"))
2
+ require 'spec/mocks/framework'
3
+ require 'spec/mocks/extensions'
4
+
5
+ module Spec
6
+ module Plugins
7
+ module MockFramework
8
+ include Spec::Mocks::ExampleMethods
9
+ def setup_mocks_for_rspec
10
+ $rspec_mocks ||= Spec::Mocks::Space.new
11
+ end
12
+ def verify_mocks_for_rspec
13
+ $rspec_mocks.verify_all
14
+ end
15
+ def teardown_mocks_for_rspec
16
+ $rspec_mocks.reset_all
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Run all examples"
5
+ Spec::Rake::SpecTask.new('examples') do |t|
6
+ t.spec_files = FileList['examples/**/*.rb']
7
+ end
@@ -0,0 +1,9 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Run all examples with RCov"
5
+ Spec::Rake::SpecTask.new('examples_with_rcov') do |t|
6
+ t.spec_files = FileList['examples/**/*.rb']
7
+ t.rcov = true
8
+ t.rcov_opts = ['--exclude', 'examples']
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Generate HTML report for failing examples"
5
+ Spec::Rake::SpecTask.new('failing_examples_with_html') do |t|
6
+ t.spec_files = FileList['failing_examples/**/*.rb']
7
+ t.spec_opts = ["--format", "html:../doc/output/documentation/tools/failing_examples.html", "--diff"]
8
+ t.fail_on_error = false
9
+ end
@@ -0,0 +1,7 @@
1
+ require 'rake'
2
+ require 'spec/rake/verify_rcov'
3
+
4
+ RCov::VerifyTask.new(:verify_rcov => :spec) do |t|
5
+ t.threshold = 100.0 # Make sure you have rcov 0.7 or higher!
6
+ t.index_html = '../doc/output/coverage/index.html'
7
+ end
@@ -0,0 +1,15 @@
1
+ = Running specs on JRuby =
2
+
3
+ svn co http://svn.codehaus.org/jruby/trunk jruby
4
+ cd jruby/jruby
5
+ ant clean
6
+ ant
7
+ # put JRuby's bin dir on your PATH
8
+ jruby -S gem install rake --no-ri --no-rdoc
9
+ jruby -S gem install diff-lcs
10
+ jruby -S gem install syntax
11
+ cd ../testsuites/rspec
12
+ mkdir target
13
+ jruby -S rake checkout_code
14
+ cd target/rspec
15
+ jruby bin/spec spec -c
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + "/../autotest_helper"
2
+
3
+ module DiscoveryHelper
4
+ def load_discovery
5
+ require File.dirname(__FILE__) + "/../../lib/autotest/discover"
6
+ end
7
+ end
8
+
9
+
10
+ class Autotest
11
+ describe Rspec, "discovery" do
12
+ include DiscoveryHelper
13
+
14
+ it "should add the rspec autotest plugin" do
15
+ Autotest.should_receive(:add_discovery).and_yield
16
+ load_discovery
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,206 @@
1
+ require File.dirname(__FILE__) + "/../autotest_helper"
2
+
3
+ class Autotest
4
+
5
+ module AutotestHelper
6
+ def rspec_output
7
+ <<-HERE
8
+ .............PPF
9
+
10
+ 1)
11
+ 'false should be false' FAILED
12
+ expected: true,
13
+ got: false (using ==)
14
+ ./spec/autotest/rspec_spec.rb:203:
15
+
16
+ Finished in 0.158674 seconds
17
+
18
+ 16 examples, 1 failure, 2 pending
19
+
20
+ Pending:
21
+ Autotest::Rspec handling failed results should return an array of failed examples and errors (TODO)
22
+ Autotest::Rspec tests/specs for a given file should find all the specs for a given file (TODO)
23
+ HERE
24
+ end
25
+
26
+ def common_setup
27
+ @proc = mock Proc
28
+ @kernel = mock Kernel
29
+ @kernel.stub!(:proc).and_return @proc
30
+
31
+ File.stub!(:exists).and_return true
32
+ @windows_alt_separator = "\\"
33
+ @posix_separator = '/'
34
+
35
+ @rspec_output = rspec_output
36
+ end
37
+ end
38
+
39
+ describe Rspec do
40
+ describe "selection of rspec command" do
41
+ include AutotestHelper
42
+
43
+ before(:each) do
44
+ common_setup
45
+ @rspec_autotest = Rspec.new
46
+ end
47
+
48
+ it "should try to find the spec command if it exists in ./bin and use it above everything else" do
49
+ File.stub!(:exists?).and_return true
50
+
51
+ spec_path = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
52
+ File.should_receive(:exists?).with(spec_path).and_return true
53
+ @rspec_autotest.spec_command.should == spec_path
54
+ end
55
+
56
+ it "should otherwise select the default spec command in gem_dir/bin/spec" do
57
+ @rspec_autotest.stub!(:spec_commands).and_return ["/foo/spec"]
58
+ Config::CONFIG.stub!(:[]).and_return "/foo"
59
+ File.should_receive(:exists?).with("/foo/spec").and_return(true)
60
+
61
+ @rspec_autotest.spec_command.should == "/foo/spec"
62
+ end
63
+
64
+ it "should raise an error if no spec command is found at all" do
65
+ File.stub!(:exists?).and_return false
66
+
67
+ lambda {
68
+ @rspec_autotest.spec_command
69
+ }.should raise_error(RspecCommandError, "No spec command could be found!")
70
+ end
71
+ end
72
+
73
+ describe "selection of rspec command (windows compatibility issues)" do
74
+ include AutotestHelper
75
+
76
+ before(:each) do
77
+ common_setup
78
+ end
79
+
80
+ it "should use the ALT_SEPARATOR if it is non-nil" do
81
+ @rspec_autotest = Rspec.new
82
+ spec_command = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
83
+ @rspec_autotest.stub!(:spec_commands).and_return [spec_command]
84
+ @rspec_autotest.spec_command(@windows_alt_separator).should == spec_command.gsub('/', @windows_alt_separator)
85
+ end
86
+
87
+ it "should not use the ALT_SEPATOR if it is nil" do
88
+ @windows_alt_separator = nil
89
+ @rspec_autotest = Rspec.new
90
+ spec_command = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
91
+ @rspec_autotest.stub!(:spec_commands).and_return [spec_command]
92
+ @rspec_autotest.spec_command.should == spec_command
93
+ end
94
+ end
95
+
96
+ describe "adding spec.opts --options" do
97
+ before(:each) do
98
+ @rspec_autotest = Rspec.new
99
+ end
100
+
101
+ it "should return the command line option to add spec.opts if the options file exists" do
102
+ File.stub!(:exist?).and_return true
103
+ @rspec_autotest.add_options_if_present.should == "-O spec/spec.opts "
104
+ end
105
+
106
+ it "should return an empty string if no spec.opts exists" do
107
+ File.stub!(:exist?).and_return false
108
+ Rspec.new.add_options_if_present.should == ""
109
+ end
110
+ end
111
+
112
+ describe "commands" do
113
+ before(:each) do
114
+ @rspec_autotest = Rspec.new
115
+ @rspec_autotest.stub!(:ruby).and_return "ruby"
116
+ @rspec_autotest.stub!(:add_options_if_present).and_return "-O spec/spec.opts"
117
+
118
+ @ruby = @rspec_autotest.ruby
119
+ @spec_command = @rspec_autotest.spec_command
120
+ @options = @rspec_autotest.add_options_if_present
121
+ @files_to_test = {
122
+ :spec => ["file_one", "file_two"]
123
+ }
124
+ # this is not the inner representation of Autotest!
125
+ @rspec_autotest.stub!(:files_to_test).and_return @files_to_test
126
+ @files_to_test.stub!(:keys).and_return @files_to_test[:spec]
127
+ @to_test = @files_to_test.keys.flatten.join ' '
128
+ end
129
+
130
+ it "should contain the various commands, ordered by preference" do
131
+ Rspec.new.spec_commands.should == [
132
+ File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec"),
133
+ "#{Config::CONFIG['bindir']}/spec"
134
+ ]
135
+ end
136
+
137
+ it "should make the apropriate test command" do
138
+ @rspec_autotest.make_test_cmd(@files_to_test).should == "#{@ruby} -S #{@spec_command} #{@options} #{@to_test}"
139
+ end
140
+ end
141
+
142
+ describe "mappings" do
143
+
144
+ before(:each) do
145
+ @lib_file = "lib/something.rb"
146
+ @spec_file = "spec/something_spec.rb"
147
+ @rspec_autotest = Rspec.new
148
+ @rspec_autotest.hook :initialize
149
+ end
150
+
151
+ it "should find the spec file for a given lib file" do
152
+ @rspec_autotest.should map_specs([@spec_file]).to(@lib_file)
153
+ end
154
+
155
+ it "should find the spec file if given a spec file" do
156
+ @rspec_autotest.should map_specs([@spec_file]).to(@spec_file)
157
+ end
158
+
159
+ it "should only find the file if the file is being tracked (in @file)" do
160
+ @rspec_autotest.should map_specs([]).to("lib/untracked_file")
161
+ end
162
+ end
163
+
164
+ describe "consolidating failures" do
165
+ include AutotestHelper
166
+
167
+ before(:each) do
168
+ common_setup
169
+ @rspec_autotest = Rspec.new
170
+
171
+ @spec_file = "spec/autotest/some_spec.rb"
172
+ @rspec_autotest.instance_variable_set("@files", {@spec_file => Time.now})
173
+ @rspec_autotest.stub!(:find_files_to_test).and_return true
174
+ end
175
+
176
+ it "should return no failures if no failures were given in the output" do
177
+ @rspec_autotest.consolidate_failures([[]]).should == {}
178
+ end
179
+
180
+ it "should return a hash with the spec filename => spec name for each failure or error" do
181
+ @rspec_autotest.stub!(:test_files_for).and_return "spec/autotest/some_spec.rb"
182
+ failures = [
183
+ [
184
+ "false should be false",
185
+ "expected: true,\n got: false (using ==)\n#{@spec_file}:203:"
186
+ ]
187
+ ]
188
+ @rspec_autotest.consolidate_failures(failures).should == {
189
+ @spec_file => ["false should be false"]
190
+ }
191
+ end
192
+
193
+ it "should not include the subject file" do
194
+ subject_file = "lib/autotest/some.rb"
195
+ @rspec_autotest.stub!(:test_files_for).and_return "spec/autotest/some_spec.rb"
196
+ failures = [
197
+ [
198
+ "false should be false",
199
+ "expected: true,\n got: false (using ==)\n#{subject_file}:143:\n#{@spec_file}:203:"
200
+ ]
201
+ ]
202
+ @rspec_autotest.consolidate_failures(failures).keys.should_not include(subject_file)
203
+ end
204
+ end
205
+ end
206
+ end