dchelimsky-rspec 1.1.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 (404) hide show
  1. data/History.txt +1192 -0
  2. data/License.txt +22 -0
  3. data/Manifest.txt +403 -0
  4. data/README.txt +39 -0
  5. data/Rakefile +90 -0
  6. data/TODO.txt +10 -0
  7. data/bin/autospec +4 -0
  8. data/bin/spec +4 -0
  9. data/examples/pure/autogenerated_docstrings_example.rb +19 -0
  10. data/examples/pure/before_and_after_example.rb +40 -0
  11. data/examples/pure/behave_as_example.rb +45 -0
  12. data/examples/pure/custom_expectation_matchers.rb +54 -0
  13. data/examples/pure/custom_formatter.rb +12 -0
  14. data/examples/pure/dynamic_spec.rb +9 -0
  15. data/examples/pure/file_accessor.rb +19 -0
  16. data/examples/pure/file_accessor_spec.rb +38 -0
  17. data/examples/pure/greeter_spec.rb +31 -0
  18. data/examples/pure/helper_method_example.rb +14 -0
  19. data/examples/pure/io_processor.rb +8 -0
  20. data/examples/pure/io_processor_spec.rb +21 -0
  21. data/examples/pure/legacy_spec.rb +11 -0
  22. data/examples/pure/mocking_example.rb +27 -0
  23. data/examples/pure/multi_threaded_behaviour_runner.rb +28 -0
  24. data/examples/pure/nested_classes_example.rb +36 -0
  25. data/examples/pure/partial_mock_example.rb +29 -0
  26. data/examples/pure/pending_example.rb +20 -0
  27. data/examples/pure/predicate_example.rb +27 -0
  28. data/examples/pure/priority.txt +1 -0
  29. data/examples/pure/shared_example_group_example.rb +81 -0
  30. data/examples/pure/shared_stack_examples.rb +38 -0
  31. data/examples/pure/spec_helper.rb +3 -0
  32. data/examples/pure/stack.rb +36 -0
  33. data/examples/pure/stack_spec.rb +63 -0
  34. data/examples/pure/stack_spec_with_nested_example_groups.rb +67 -0
  35. data/examples/pure/stubbing_example.rb +69 -0
  36. data/examples/pure/yielding_example.rb +33 -0
  37. data/examples/stories/adder.rb +13 -0
  38. data/examples/stories/addition +34 -0
  39. data/examples/stories/addition.rb +9 -0
  40. data/examples/stories/calculator.rb +65 -0
  41. data/examples/stories/game-of-life/.loadpath +5 -0
  42. data/examples/stories/game-of-life/README.txt +21 -0
  43. data/examples/stories/game-of-life/behaviour/everything.rb +6 -0
  44. data/examples/stories/game-of-life/behaviour/examples/examples.rb +3 -0
  45. data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
  46. data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
  47. data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
  48. data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
  49. data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
  50. data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
  51. data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
  52. data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
  53. data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
  54. data/examples/stories/game-of-life/behaviour/stories/helper.rb +6 -0
  55. data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +26 -0
  56. data/examples/stories/game-of-life/behaviour/stories/steps.rb +5 -0
  57. data/examples/stories/game-of-life/behaviour/stories/stories.rb +3 -0
  58. data/examples/stories/game-of-life/behaviour/stories/stories.txt +22 -0
  59. data/examples/stories/game-of-life/life/game.rb +23 -0
  60. data/examples/stories/game-of-life/life/grid.rb +43 -0
  61. data/examples/stories/game-of-life/life.rb +3 -0
  62. data/examples/stories/helper.rb +9 -0
  63. data/examples/stories/steps/addition_steps.rb +18 -0
  64. data/failing_examples/README.txt +7 -0
  65. data/failing_examples/diffing_spec.rb +36 -0
  66. data/failing_examples/failing_autogenerated_docstrings_example.rb +19 -0
  67. data/failing_examples/failure_in_setup.rb +10 -0
  68. data/failing_examples/failure_in_teardown.rb +10 -0
  69. data/failing_examples/mocking_example.rb +40 -0
  70. data/failing_examples/mocking_with_flexmock.rb +26 -0
  71. data/failing_examples/mocking_with_mocha.rb +25 -0
  72. data/failing_examples/mocking_with_rr.rb +27 -0
  73. data/failing_examples/partial_mock_example.rb +20 -0
  74. data/failing_examples/predicate_example.rb +29 -0
  75. data/failing_examples/raising_example.rb +47 -0
  76. data/failing_examples/spec_helper.rb +3 -0
  77. data/failing_examples/syntax_error_example.rb +7 -0
  78. data/failing_examples/team_spec.rb +44 -0
  79. data/failing_examples/timeout_behaviour.rb +7 -0
  80. data/init.rb +9 -0
  81. data/lib/autotest/discover.rb +3 -0
  82. data/lib/autotest/rspec.rb +46 -0
  83. data/lib/spec/adapters/ruby_engine/mri.rb +8 -0
  84. data/lib/spec/adapters/ruby_engine/rubinius.rb +8 -0
  85. data/lib/spec/adapters/ruby_engine.rb +26 -0
  86. data/lib/spec/adapters.rb +1 -0
  87. data/lib/spec/example/before_and_after_hooks.rb +93 -0
  88. data/lib/spec/example/configuration.rb +167 -0
  89. data/lib/spec/example/errors.rb +30 -0
  90. data/lib/spec/example/example_group.rb +25 -0
  91. data/lib/spec/example/example_group_factory.rb +81 -0
  92. data/lib/spec/example/example_group_methods.rb +368 -0
  93. data/lib/spec/example/example_matcher.rb +44 -0
  94. data/lib/spec/example/example_methods.rb +105 -0
  95. data/lib/spec/example/module_reopening_fix.rb +21 -0
  96. data/lib/spec/example/pending.rb +18 -0
  97. data/lib/spec/example/shared_example_group.rb +52 -0
  98. data/lib/spec/example.rb +12 -0
  99. data/lib/spec/expectations/differs/default.rb +66 -0
  100. data/lib/spec/expectations/errors.rb +12 -0
  101. data/lib/spec/expectations/extensions/object.rb +63 -0
  102. data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  103. data/lib/spec/expectations/extensions.rb +2 -0
  104. data/lib/spec/expectations/handler.rb +52 -0
  105. data/lib/spec/expectations.rb +56 -0
  106. data/lib/spec/extensions/class.rb +24 -0
  107. data/lib/spec/extensions/main.rb +87 -0
  108. data/lib/spec/extensions/metaclass.rb +7 -0
  109. data/lib/spec/extensions/object.rb +6 -0
  110. data/lib/spec/extensions.rb +4 -0
  111. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  112. data/lib/spec/interop/test/unit/testcase.rb +71 -0
  113. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  114. data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  115. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  116. data/lib/spec/interop/test.rb +12 -0
  117. data/lib/spec/matchers/be.rb +221 -0
  118. data/lib/spec/matchers/be_close.rb +37 -0
  119. data/lib/spec/matchers/change.rb +148 -0
  120. data/lib/spec/matchers/eql.rb +43 -0
  121. data/lib/spec/matchers/equal.rb +43 -0
  122. data/lib/spec/matchers/exist.rb +22 -0
  123. data/lib/spec/matchers/has.rb +34 -0
  124. data/lib/spec/matchers/have.rb +150 -0
  125. data/lib/spec/matchers/include.rb +77 -0
  126. data/lib/spec/matchers/match.rb +41 -0
  127. data/lib/spec/matchers/operator_matcher.rb +79 -0
  128. data/lib/spec/matchers/raise_error.rb +132 -0
  129. data/lib/spec/matchers/respond_to.rb +46 -0
  130. data/lib/spec/matchers/satisfy.rb +47 -0
  131. data/lib/spec/matchers/simple_matcher.rb +132 -0
  132. data/lib/spec/matchers/throw_symbol.rb +74 -0
  133. data/lib/spec/matchers.rb +162 -0
  134. data/lib/spec/mocks/argument_constraints.rb +165 -0
  135. data/lib/spec/mocks/argument_expectation.rb +49 -0
  136. data/lib/spec/mocks/error_generator.rb +84 -0
  137. data/lib/spec/mocks/errors.rb +10 -0
  138. data/lib/spec/mocks/extensions/object.rb +3 -0
  139. data/lib/spec/mocks/extensions.rb +1 -0
  140. data/lib/spec/mocks/framework.rb +15 -0
  141. data/lib/spec/mocks/message_expectation.rb +331 -0
  142. data/lib/spec/mocks/methods.rb +51 -0
  143. data/lib/spec/mocks/mock.rb +56 -0
  144. data/lib/spec/mocks/order_group.rb +29 -0
  145. data/lib/spec/mocks/proxy.rb +224 -0
  146. data/lib/spec/mocks/space.rb +28 -0
  147. data/lib/spec/mocks/spec_methods.rb +46 -0
  148. data/lib/spec/mocks.rb +200 -0
  149. data/lib/spec/rake/spectask.rb +227 -0
  150. data/lib/spec/rake/verify_rcov.rb +52 -0
  151. data/lib/spec/runner/backtrace_tweaker.rb +56 -0
  152. data/lib/spec/runner/class_and_arguments_parser.rb +16 -0
  153. data/lib/spec/runner/command_line.rb +17 -0
  154. data/lib/spec/runner/drb_command_line.rb +20 -0
  155. data/lib/spec/runner/example_group_runner.rb +59 -0
  156. data/lib/spec/runner/formatter/base_formatter.rb +79 -0
  157. data/lib/spec/runner/formatter/base_text_formatter.rb +126 -0
  158. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
  159. data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  160. data/lib/spec/runner/formatter/html_formatter.rb +337 -0
  161. data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
  162. data/lib/spec/runner/formatter/profile_formatter.rb +51 -0
  163. data/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
  164. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  165. data/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
  166. data/lib/spec/runner/formatter/story/html_formatter.rb +174 -0
  167. data/lib/spec/runner/formatter/story/plain_text_formatter.rb +194 -0
  168. data/lib/spec/runner/formatter/story/progress_bar_formatter.rb +42 -0
  169. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  170. data/lib/spec/runner/heckle_runner.rb +72 -0
  171. data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  172. data/lib/spec/runner/option_parser.rb +205 -0
  173. data/lib/spec/runner/options.rb +320 -0
  174. data/lib/spec/runner/reporter.rb +167 -0
  175. data/lib/spec/runner/spec_parser.rb +71 -0
  176. data/lib/spec/runner.rb +213 -0
  177. data/lib/spec/story/extensions/main.rb +86 -0
  178. data/lib/spec/story/extensions/regexp.rb +9 -0
  179. data/lib/spec/story/extensions/string.rb +9 -0
  180. data/lib/spec/story/extensions.rb +3 -0
  181. data/lib/spec/story/given_scenario.rb +14 -0
  182. data/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
  183. data/lib/spec/story/runner/scenario_collector.rb +18 -0
  184. data/lib/spec/story/runner/scenario_runner.rb +54 -0
  185. data/lib/spec/story/runner/story_mediator.rb +137 -0
  186. data/lib/spec/story/runner/story_parser.rb +247 -0
  187. data/lib/spec/story/runner/story_runner.rb +70 -0
  188. data/lib/spec/story/runner.rb +59 -0
  189. data/lib/spec/story/scenario.rb +14 -0
  190. data/lib/spec/story/step.rb +70 -0
  191. data/lib/spec/story/step_group.rb +89 -0
  192. data/lib/spec/story/step_mother.rb +38 -0
  193. data/lib/spec/story/story.rb +39 -0
  194. data/lib/spec/story/world.rb +128 -0
  195. data/lib/spec/story.rb +10 -0
  196. data/lib/spec/version.rb +13 -0
  197. data/lib/spec.rb +32 -0
  198. data/plugins/mock_frameworks/flexmock.rb +23 -0
  199. data/plugins/mock_frameworks/mocha.rb +19 -0
  200. data/plugins/mock_frameworks/rr.rb +21 -0
  201. data/plugins/mock_frameworks/rspec.rb +20 -0
  202. data/rake_tasks/examples.rake +7 -0
  203. data/rake_tasks/examples_with_rcov.rake +9 -0
  204. data/rake_tasks/failing_examples_with_html.rake +9 -0
  205. data/rake_tasks/verify_rcov.rake +7 -0
  206. data/rspec.gemspec +42 -0
  207. data/spec/README.jruby +15 -0
  208. data/spec/autotest/autotest_helper.rb +6 -0
  209. data/spec/autotest/autotest_matchers.rb +47 -0
  210. data/spec/autotest/discover_spec.rb +19 -0
  211. data/spec/autotest/rspec_spec.rb +150 -0
  212. data/spec/rspec_suite.rb +6 -0
  213. data/spec/ruby_forker.rb +13 -0
  214. data/spec/spec/adapters/ruby_engine_spec.rb +16 -0
  215. data/spec/spec/example/configuration_spec.rb +296 -0
  216. data/spec/spec/example/example_group_class_definition_spec.rb +48 -0
  217. data/spec/spec/example/example_group_factory_spec.rb +165 -0
  218. data/spec/spec/example/example_group_methods_spec.rb +584 -0
  219. data/spec/spec/example/example_group_spec.rb +683 -0
  220. data/spec/spec/example/example_matcher_spec.rb +96 -0
  221. data/spec/spec/example/example_methods_spec.rb +169 -0
  222. data/spec/spec/example/example_runner_spec.rb +194 -0
  223. data/spec/spec/example/nested_example_group_spec.rb +71 -0
  224. data/spec/spec/example/pending_module_spec.rb +145 -0
  225. data/spec/spec/example/predicate_matcher_spec.rb +21 -0
  226. data/spec/spec/example/shared_example_group_spec.rb +281 -0
  227. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  228. data/spec/spec/expectations/differs/default_spec.rb +127 -0
  229. data/spec/spec/expectations/extensions/object_spec.rb +95 -0
  230. data/spec/spec/expectations/fail_with_spec.rb +71 -0
  231. data/spec/spec/extensions/main_spec.rb +71 -0
  232. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  233. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  234. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  235. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  236. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  237. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  238. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  239. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  240. data/spec/spec/interop/test/unit/spec_spec.rb +52 -0
  241. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
  242. data/spec/spec/interop/test/unit/testcase_spec.rb +49 -0
  243. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  244. data/spec/spec/matchers/be_close_spec.rb +39 -0
  245. data/spec/spec/matchers/be_spec.rb +248 -0
  246. data/spec/spec/matchers/change_spec.rb +329 -0
  247. data/spec/spec/matchers/description_generation_spec.rb +153 -0
  248. data/spec/spec/matchers/eql_spec.rb +28 -0
  249. data/spec/spec/matchers/equal_spec.rb +28 -0
  250. data/spec/spec/matchers/exist_spec.rb +57 -0
  251. data/spec/spec/matchers/handler_spec.rb +150 -0
  252. data/spec/spec/matchers/has_spec.rb +63 -0
  253. data/spec/spec/matchers/have_spec.rb +394 -0
  254. data/spec/spec/matchers/include_spec.rb +64 -0
  255. data/spec/spec/matchers/match_spec.rb +37 -0
  256. data/spec/spec/matchers/matcher_methods_spec.rb +78 -0
  257. data/spec/spec/matchers/mock_constraint_matchers_spec.rb +24 -0
  258. data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
  259. data/spec/spec/matchers/raise_error_spec.rb +315 -0
  260. data/spec/spec/matchers/respond_to_spec.rb +54 -0
  261. data/spec/spec/matchers/satisfy_spec.rb +36 -0
  262. data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
  263. data/spec/spec/matchers/throw_symbol_spec.rb +54 -0
  264. data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
  265. data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  266. data/spec/spec/mocks/at_least_spec.rb +97 -0
  267. data/spec/spec/mocks/at_most_spec.rb +93 -0
  268. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  269. data/spec/spec/mocks/bug_report_10263_spec.rb +24 -0
  270. data/spec/spec/mocks/bug_report_11545_spec.rb +33 -0
  271. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  272. data/spec/spec/mocks/bug_report_496.rb +17 -0
  273. data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  274. data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  275. data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  276. data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  277. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +95 -0
  278. data/spec/spec/mocks/hash_including_matcher_spec.rb +53 -0
  279. data/spec/spec/mocks/mock_ordering_spec.rb +84 -0
  280. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  281. data/spec/spec/mocks/mock_spec.rb +555 -0
  282. data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  283. data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  284. data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
  285. data/spec/spec/mocks/once_counts_spec.rb +53 -0
  286. data/spec/spec/mocks/options_hash_spec.rb +35 -0
  287. data/spec/spec/mocks/partial_mock_spec.rb +149 -0
  288. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  289. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +130 -0
  290. data/spec/spec/mocks/precise_counts_spec.rb +52 -0
  291. data/spec/spec/mocks/record_messages_spec.rb +26 -0
  292. data/spec/spec/mocks/stub_spec.rb +188 -0
  293. data/spec/spec/mocks/twice_counts_spec.rb +67 -0
  294. data/spec/spec/package/bin_spec_spec.rb +22 -0
  295. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  296. data/spec/spec/runner/command_line_spec.rb +141 -0
  297. data/spec/spec/runner/drb_command_line_spec.rb +97 -0
  298. data/spec/spec/runner/empty_file.txt +0 -0
  299. data/spec/spec/runner/examples.txt +2 -0
  300. data/spec/spec/runner/failed.txt +3 -0
  301. data/spec/spec/runner/formatter/base_formatter_spec.rb +112 -0
  302. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  303. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  304. data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
  305. data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
  306. data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
  307. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
  308. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +370 -0
  309. data/spec/spec/runner/formatter/html_formatter_spec.rb +61 -0
  310. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +318 -0
  311. data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
  312. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +155 -0
  313. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  314. data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
  315. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
  316. data/spec/spec/runner/formatter/story/html_formatter_spec.rb +135 -0
  317. data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +600 -0
  318. data/spec/spec/runner/formatter/story/progress_bar_formatter_spec.rb +82 -0
  319. data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
  320. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +370 -0
  321. data/spec/spec/runner/heckle_runner_spec.rb +78 -0
  322. data/spec/spec/runner/heckler_spec.rb +13 -0
  323. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
  324. data/spec/spec/runner/option_parser_spec.rb +421 -0
  325. data/spec/spec/runner/options_spec.rb +450 -0
  326. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  327. data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
  328. data/spec/spec/runner/output_one_time_spec.rb +16 -0
  329. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +62 -0
  330. data/spec/spec/runner/reporter_spec.rb +238 -0
  331. data/spec/spec/runner/resources/a_bar.rb +0 -0
  332. data/spec/spec/runner/resources/a_foo.rb +0 -0
  333. data/spec/spec/runner/resources/a_spec.rb +1 -0
  334. data/spec/spec/runner/spec.opts +2 -0
  335. data/spec/spec/runner/spec_drb.opts +1 -0
  336. data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
  337. data/spec/spec/runner/spec_parser_spec.rb +85 -0
  338. data/spec/spec/runner/spec_spaced.opts +2 -0
  339. data/spec/spec/runner_spec.rb +11 -0
  340. data/spec/spec/spec_classes.rb +133 -0
  341. data/spec/spec/story/builders.rb +46 -0
  342. data/spec/spec/story/extensions/main_spec.rb +161 -0
  343. data/spec/spec/story/extensions_spec.rb +14 -0
  344. data/spec/spec/story/given_scenario_spec.rb +27 -0
  345. data/spec/spec/story/runner/plain_text_story_runner_spec.rb +90 -0
  346. data/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
  347. data/spec/spec/story/runner/scenario_runner_spec.rb +214 -0
  348. data/spec/spec/story/runner/story_mediator_spec.rb +143 -0
  349. data/spec/spec/story/runner/story_parser_spec.rb +401 -0
  350. data/spec/spec/story/runner/story_runner_spec.rb +294 -0
  351. data/spec/spec/story/runner_spec.rb +93 -0
  352. data/spec/spec/story/scenario_spec.rb +18 -0
  353. data/spec/spec/story/step_group_spec.rb +157 -0
  354. data/spec/spec/story/step_mother_spec.rb +84 -0
  355. data/spec/spec/story/step_spec.rb +272 -0
  356. data/spec/spec/story/story_helper.rb +2 -0
  357. data/spec/spec/story/story_spec.rb +84 -0
  358. data/spec/spec/story/world_spec.rb +423 -0
  359. data/spec/spec.opts +6 -0
  360. data/spec/spec_helper.rb +77 -0
  361. data/stories/all.rb +5 -0
  362. data/stories/configuration/before_blocks.story +21 -0
  363. data/stories/configuration/stories.rb +7 -0
  364. data/stories/example_groups/autogenerated_docstrings +45 -0
  365. data/stories/example_groups/example_group_with_should_methods +17 -0
  366. data/stories/example_groups/nested_groups +17 -0
  367. data/stories/example_groups/output +25 -0
  368. data/stories/example_groups/stories.rb +7 -0
  369. data/stories/helper.rb +6 -0
  370. data/stories/interop/examples_and_tests_together +30 -0
  371. data/stories/interop/stories.rb +7 -0
  372. data/stories/interop/test_case_with_should_methods +17 -0
  373. data/stories/mock_framework_integration/stories.rb +7 -0
  374. data/stories/mock_framework_integration/use_flexmock.story +9 -0
  375. data/stories/pending_stories/README +3 -0
  376. data/stories/resources/helpers/cmdline.rb +9 -0
  377. data/stories/resources/helpers/story_helper.rb +16 -0
  378. data/stories/resources/matchers/smart_match.rb +37 -0
  379. data/stories/resources/spec/before_blocks_example.rb +32 -0
  380. data/stories/resources/spec/example_group_with_should_methods.rb +12 -0
  381. data/stories/resources/spec/simple_spec.rb +8 -0
  382. data/stories/resources/spec/spec_with_flexmock.rb +18 -0
  383. data/stories/resources/steps/running_rspec.rb +50 -0
  384. data/stories/resources/stories/failing_story.rb +15 -0
  385. data/stories/resources/test/spec_and_test_together.rb +57 -0
  386. data/stories/resources/test/test_case_with_should_methods.rb +30 -0
  387. data/stories/stories/multiline_steps.story +23 -0
  388. data/stories/stories/steps/multiline_steps.rb +13 -0
  389. data/stories/stories/stories.rb +6 -0
  390. data/story_server/prototype/javascripts/builder.js +136 -0
  391. data/story_server/prototype/javascripts/controls.js +972 -0
  392. data/story_server/prototype/javascripts/dragdrop.js +976 -0
  393. data/story_server/prototype/javascripts/effects.js +1117 -0
  394. data/story_server/prototype/javascripts/prototype.js +4140 -0
  395. data/story_server/prototype/javascripts/rspec.js +149 -0
  396. data/story_server/prototype/javascripts/scriptaculous.js +58 -0
  397. data/story_server/prototype/javascripts/slider.js +276 -0
  398. data/story_server/prototype/javascripts/sound.js +55 -0
  399. data/story_server/prototype/javascripts/unittest.js +568 -0
  400. data/story_server/prototype/lib/server.rb +24 -0
  401. data/story_server/prototype/stories.html +176 -0
  402. data/story_server/prototype/stylesheets/rspec.css +136 -0
  403. data/story_server/prototype/stylesheets/test.css +90 -0
  404. metadata +495 -0
@@ -0,0 +1,167 @@
1
+ module Spec
2
+ module Runner
3
+ class Reporter
4
+ attr_reader :options, :example_groups
5
+
6
+ def initialize(options)
7
+ @options = options
8
+ @options.reporter = self
9
+ clear
10
+ end
11
+
12
+ def add_example_group(example_group)
13
+ formatters.each do |f|
14
+ f.add_example_group(example_group)
15
+ end
16
+ example_groups << example_group
17
+ end
18
+
19
+ def example_started(example)
20
+ formatters.each{|f| f.example_started(example)}
21
+ end
22
+
23
+ def example_finished(example, error=nil)
24
+ @examples << example
25
+
26
+ if error.nil?
27
+ example_passed(example)
28
+ elsif Spec::Example::ExamplePendingError === error
29
+ example_pending(example, error.pending_caller, error.message)
30
+ else
31
+ example_failed(example, error)
32
+ end
33
+ end
34
+
35
+ def failure(example, error)
36
+ backtrace_tweaker.tweak_backtrace(error)
37
+ failure = Failure.new(example, error)
38
+ @failures << failure
39
+ formatters.each do |f|
40
+ f.example_failed(example, @failures.length, failure)
41
+ end
42
+ end
43
+ alias_method :example_failed, :failure
44
+
45
+ def start(number_of_examples)
46
+ clear
47
+ @start_time = Time.new
48
+ formatters.each{|f| f.start(number_of_examples)}
49
+ end
50
+
51
+ def end
52
+ @end_time = Time.new
53
+ end
54
+
55
+ # Dumps the summary and returns the total number of failures
56
+ def dump
57
+ formatters.each{|f| f.start_dump}
58
+ dump_pending
59
+ dump_failures
60
+ formatters.each do |f|
61
+ f.dump_summary(duration, @examples.length, @failures.length, @pending_count)
62
+ f.close
63
+ end
64
+ @failures.length
65
+ end
66
+
67
+ private
68
+
69
+ def formatters
70
+ @options.formatters
71
+ end
72
+
73
+ def backtrace_tweaker
74
+ @options.backtrace_tweaker
75
+ end
76
+
77
+ def clear
78
+ @example_groups = []
79
+ @failures = []
80
+ @pending_count = 0
81
+ @examples = []
82
+ @start_time = nil
83
+ @end_time = nil
84
+ end
85
+
86
+ def dump_failures
87
+ return if @failures.empty?
88
+ @failures.inject(1) do |index, failure|
89
+ formatters.each{|f| f.dump_failure(index, failure)}
90
+ index + 1
91
+ end
92
+ end
93
+
94
+ def dump_pending
95
+ formatters.each{|f| f.dump_pending}
96
+ end
97
+
98
+ def duration
99
+ return @end_time - @start_time unless (@end_time.nil? or @start_time.nil?)
100
+ return "0.0"
101
+ end
102
+
103
+ def example_passed(example)
104
+ formatters.each{|f| f.example_passed(example)}
105
+ end
106
+
107
+ EXAMPLE_PENDING_DEPRECATION_WARNING = <<-WARNING
108
+ DEPRECATION NOTICE: RSpec's formatters have changed example_pending
109
+ to accept three arguments instead of just two. Please see the rdoc
110
+ for Spec::Runner::Formatter::BaseFormatter#example_pending
111
+ for more information.
112
+
113
+ Please update any custom formatters to accept the third argument
114
+ to example_pending. Support for example_pending with two arguments
115
+ and this warning message will be removed after the RSpec 1.1.5 release.
116
+ WARNING
117
+
118
+ def example_pending(example, pending_caller, message="Not Yet Implemented")
119
+ @pending_count += 1
120
+ formatters.each do |formatter|
121
+ if formatter_uses_deprecated_example_pending_method?(formatter)
122
+ Kernel.warn EXAMPLE_PENDING_DEPRECATION_WARNING
123
+ formatter.example_pending(example, message)
124
+ else
125
+ formatter.example_pending(example, message, pending_caller)
126
+ end
127
+ end
128
+ end
129
+
130
+ def formatter_uses_deprecated_example_pending_method?(formatter)
131
+ formatter.method(:example_pending).arity == 2
132
+ end
133
+
134
+ class Failure
135
+ attr_reader :example, :exception
136
+
137
+ def initialize(example, exception)
138
+ @example = example
139
+ @exception = exception
140
+ end
141
+
142
+ def header
143
+ if expectation_not_met?
144
+ "'#{example_name}' FAILED"
145
+ elsif pending_fixed?
146
+ "'#{example_name}' FIXED"
147
+ else
148
+ "#{@exception.class.name} in '#{example_name}'"
149
+ end
150
+ end
151
+
152
+ def pending_fixed?
153
+ @exception.is_a?(Spec::Example::PendingExampleFixedError)
154
+ end
155
+
156
+ def expectation_not_met?
157
+ @exception.is_a?(Spec::Expectations::ExpectationNotMetError)
158
+ end
159
+
160
+ protected
161
+ def example_name
162
+ @example.__full_description
163
+ end
164
+ end
165
+ end
166
+ end
167
+ end
@@ -0,0 +1,71 @@
1
+ module Spec
2
+ module Runner
3
+ # Parses a spec file and finds the nearest example for a given line number.
4
+ class SpecParser
5
+ attr_reader :best_match
6
+
7
+ def initialize
8
+ @best_match = {}
9
+ end
10
+
11
+ def spec_name_for(file, line_number)
12
+ best_match.clear
13
+ file = File.expand_path(file)
14
+ Spec::Runner.options.example_groups.each do |example_group|
15
+ consider_example_groups_for_best_match example_group, file, line_number
16
+
17
+ example_group.examples.each do |example|
18
+ consider_example_for_best_match example, example_group, file, line_number
19
+ end
20
+ end
21
+ if best_match[:example_group]
22
+ if best_match[:example]
23
+ "#{best_match[:example_group].description} #{best_match[:example].description}"
24
+ else
25
+ best_match[:example_group].description
26
+ end
27
+ else
28
+ nil
29
+ end
30
+ end
31
+
32
+ protected
33
+
34
+ def consider_example_groups_for_best_match(example_group, file, line_number)
35
+ parsed_backtrace = parse_backtrace(example_group.registration_backtrace)
36
+ parsed_backtrace.each do |example_file, example_line|
37
+ if is_best_match?(file, line_number, example_file, example_line)
38
+ best_match.clear
39
+ best_match[:example_group] = example_group
40
+ best_match[:line] = example_line
41
+ end
42
+ end
43
+ end
44
+
45
+ def consider_example_for_best_match(example, example_group, file, line_number)
46
+ parsed_backtrace = parse_backtrace(example.implementation_backtrace)
47
+ parsed_backtrace.each do |example_file, example_line|
48
+ if is_best_match?(file, line_number, example_file, example_line)
49
+ best_match.clear
50
+ best_match[:example_group] = example_group
51
+ best_match[:example] = example
52
+ best_match[:line] = example_line
53
+ end
54
+ end
55
+ end
56
+
57
+ def is_best_match?(file, line_number, example_file, example_line)
58
+ file == File.expand_path(example_file) &&
59
+ example_line <= line_number &&
60
+ example_line > best_match[:line].to_i
61
+ end
62
+
63
+ def parse_backtrace(backtrace)
64
+ backtrace.collect do |trace_line|
65
+ split_line = trace_line.split(':')
66
+ [split_line[0], Integer(split_line[1])]
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,213 @@
1
+ require 'spec/runner/options'
2
+ require 'spec/runner/option_parser'
3
+ require 'spec/runner/example_group_runner'
4
+ require 'spec/runner/command_line'
5
+ require 'spec/runner/drb_command_line'
6
+ require 'spec/runner/backtrace_tweaker'
7
+ require 'spec/runner/reporter'
8
+ require 'spec/runner/spec_parser'
9
+ require 'spec/runner/class_and_arguments_parser'
10
+
11
+ module Spec
12
+ # == ExampleGroups and Examples
13
+ #
14
+ # Rather than expressing examples in classes, RSpec uses a custom DSLL (DSL light) to
15
+ # describe groups of examples.
16
+ #
17
+ # A ExampleGroup is the equivalent of a fixture in xUnit-speak. It is a metaphor for the context
18
+ # in which you will run your executable example - a set of known objects in a known starting state.
19
+ # We begin be describing
20
+ #
21
+ # describe Account do
22
+ #
23
+ # before do
24
+ # @account = Account.new
25
+ # end
26
+ #
27
+ # it "should have a balance of $0" do
28
+ # @account.balance.should == Money.new(0, :dollars)
29
+ # end
30
+ #
31
+ # end
32
+ #
33
+ # We use the before block to set up the Example (given), and then the #it method to
34
+ # hold the example code that expresses the event (when) and the expected outcome (then).
35
+ #
36
+ # == Helper Methods
37
+ #
38
+ # A primary goal of RSpec is to keep the examples clear. We therefore prefer
39
+ # less indirection than you might see in xUnit examples and in well factored, DRY production code. We feel
40
+ # that duplication is OK if removing it makes it harder to understand an example without
41
+ # having to look elsewhere to understand its context.
42
+ #
43
+ # That said, RSpec does support some level of encapsulating common code in helper
44
+ # methods that can exist within a context or within an included module.
45
+ #
46
+ # == Setup and Teardown
47
+ #
48
+ # You can use before and after within a Example. Both methods take an optional
49
+ # scope argument so you can run the block before :each example or before :all examples
50
+ #
51
+ # describe "..." do
52
+ # before :all do
53
+ # ...
54
+ # end
55
+ #
56
+ # before :each do
57
+ # ...
58
+ # end
59
+ #
60
+ # it "should do something" do
61
+ # ...
62
+ # end
63
+ #
64
+ # it "should do something else" do
65
+ # ...
66
+ # end
67
+ #
68
+ # after :each do
69
+ # ...
70
+ # end
71
+ #
72
+ # after :all do
73
+ # ...
74
+ # end
75
+ #
76
+ # end
77
+ #
78
+ # The <tt>before :each</tt> block will run before each of the examples, once for each example. Likewise,
79
+ # the <tt>after :each</tt> block will run after each of the examples.
80
+ #
81
+ # It is also possible to specify a <tt>before :all</tt> and <tt>after :all</tt>
82
+ # block that will run only once for each behaviour, respectively before the first <code>before :each</code>
83
+ # and after the last <code>after :each</code>. The use of these is generally discouraged, because it
84
+ # introduces dependencies between the examples. Still, it might prove useful for very expensive operations
85
+ # if you know what you are doing.
86
+ #
87
+ # == Local helper methods
88
+ #
89
+ # You can include local helper methods by simply expressing them within a context:
90
+ #
91
+ # describe "..." do
92
+ #
93
+ # it "..." do
94
+ # helper_method
95
+ # end
96
+ #
97
+ # def helper_method
98
+ # ...
99
+ # end
100
+ #
101
+ # end
102
+ #
103
+ # == Included helper methods
104
+ #
105
+ # You can include helper methods in multiple contexts by expressing them within
106
+ # a module, and then including that module in your context:
107
+ #
108
+ # module AccountExampleHelperMethods
109
+ # def helper_method
110
+ # ...
111
+ # end
112
+ # end
113
+ #
114
+ # describe "A new account" do
115
+ # include AccountExampleHelperMethods
116
+ # before do
117
+ # @account = Account.new
118
+ # end
119
+ #
120
+ # it "should have a balance of $0" do
121
+ # helper_method
122
+ # @account.balance.should eql(Money.new(0, :dollars))
123
+ # end
124
+ # end
125
+ #
126
+ # == Shared Example Groups
127
+ #
128
+ # You can define a shared Example Group, that may be used on other groups
129
+ #
130
+ # share_examples_for "All Editions" do
131
+ # it "all editions behaviour" ...
132
+ # end
133
+ #
134
+ # describe SmallEdition do
135
+ # it_should_behave_like "All Editions"
136
+ #
137
+ # it "should do small edition stuff" do
138
+ # ...
139
+ # end
140
+ # end
141
+ #
142
+ # You can also assign the shared group to a module and include that
143
+ #
144
+ # share_as :AllEditions do
145
+ # it "should do all editions stuff" ...
146
+ # end
147
+ #
148
+ # describe SmallEdition do
149
+ # it_should_behave_like AllEditions
150
+ #
151
+ # it "should do small edition stuff" do
152
+ # ...
153
+ # end
154
+ # end
155
+ #
156
+ # And, for those of you who prefer to use something more like Ruby, you
157
+ # can just include the module directly
158
+ #
159
+ # describe SmallEdition do
160
+ # include AllEditions
161
+ #
162
+ # it "should do small edition stuff" do
163
+ # ...
164
+ # end
165
+ # end
166
+ module Runner
167
+ class << self
168
+ def configuration # :nodoc:
169
+ @configuration ||= Spec::Example::Configuration.new
170
+ end
171
+
172
+ # Use this to configure various configurable aspects of
173
+ # RSpec:
174
+ #
175
+ # Spec::Runner.configure do |configuration|
176
+ # # Configure RSpec here
177
+ # end
178
+ #
179
+ # The yielded <tt>configuration</tt> object is a
180
+ # Spec::Example::Configuration instance. See its RDoc
181
+ # for details about what you can do with it.
182
+ #
183
+ def configure
184
+ yield configuration
185
+ end
186
+
187
+ def register_at_exit_hook # :nodoc:
188
+ unless @already_registered_at_exit_hook
189
+ at_exit do
190
+ unless $! || Spec.run? || Spec::Example::ExampleGroupFactory.all_registered?(options.example_groups)
191
+ success = Spec.run
192
+ exit success if Spec.exit?
193
+ end
194
+ end
195
+ @already_registered_at_exit_hook = true
196
+ end
197
+ end
198
+
199
+ def options # :nodoc:
200
+ @options ||= begin
201
+ parser = ::Spec::Runner::OptionParser.new($stderr, $stdout)
202
+ parser.order!(ARGV)
203
+ parser.options
204
+ end
205
+ end
206
+
207
+ def use options
208
+ @options = options
209
+ end
210
+
211
+ end
212
+ end
213
+ end