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,8 @@
1
+ dir = File.dirname(__FILE__)
2
+ require "#{dir}/../../spec_helper"
3
+
4
+ triggering_double_output = Spec::Runner.options
5
+ options = Spec::Runner::OptionParser.parse(
6
+ ["#{dir}/output_one_time_fixture.rb"], $stderr, $stdout
7
+ )
8
+ Spec::Runner::CommandLine.run(options)
@@ -0,0 +1,16 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe CommandLine do
6
+ it "should not output twice" do
7
+ dir = File.dirname(__FILE__)
8
+ Dir.chdir("#{dir}/../../..") do
9
+ output =`ruby #{dir}/output_one_time_fixture_runner.rb`
10
+ output.should include("1 example, 0 failures")
11
+ output.should_not include("0 examples, 0 failures")
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,62 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe "QuietBacktraceTweaker" do
6
+ before(:each) do
7
+ @error = RuntimeError.new
8
+ @tweaker = QuietBacktraceTweaker.new
9
+ end
10
+
11
+ it "should not barf on nil backtrace" do
12
+ lambda do
13
+ @tweaker.tweak_backtrace(@error)
14
+ end.should_not raise_error
15
+ end
16
+
17
+ it "should remove anything from textmate ruby bundle" do
18
+ @error.set_backtrace(["/Applications/TextMate.app/Contents/SharedSupport/Bundles/Ruby.tmbundle/Support/tmruby.rb:147"])
19
+ @tweaker.tweak_backtrace(@error)
20
+ @error.backtrace.should be_empty
21
+ end
22
+
23
+ it "should remove anything in lib spec dir" do
24
+ ["expectations", "mocks", "runner"].each do |child|
25
+ element="/lib/spec/#{child}/anything.rb"
26
+ @error.set_backtrace([element])
27
+ @tweaker.tweak_backtrace(@error)
28
+ unless (@error.backtrace.empty?)
29
+ raise("Should have tweaked away '#{element}'")
30
+ end
31
+ end
32
+ end
33
+
34
+ it "should remove mock_frameworks/rspec" do
35
+ element = "mock_frameworks/rspec"
36
+ @error.set_backtrace([element])
37
+ @tweaker.tweak_backtrace(@error)
38
+ unless (@error.backtrace.empty?)
39
+ raise("Should have tweaked away '#{element}'")
40
+ end
41
+ end
42
+
43
+ it "should remove bin spec" do
44
+ @error.set_backtrace(["bin/spec:"])
45
+ @tweaker.tweak_backtrace(@error)
46
+ @error.backtrace.should be_empty
47
+ end
48
+
49
+ it "should clean up double slashes" do
50
+ @error.set_backtrace(["/a//b/c//d.rb"])
51
+ @tweaker.tweak_backtrace(@error)
52
+ @error.backtrace.should include("/a/b/c/d.rb")
53
+ end
54
+
55
+ it "should gracefully handle backtraces with newlines" do
56
+ @error.set_backtrace(["we like\nbin/spec:\nnewlines"])
57
+ @tweaker.tweak_backtrace(@error)
58
+ @error.backtrace.should include("we like\nnewlines")
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,238 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe Reporter do
6
+ attr_reader :formatter_output, :options, :backtrace_tweaker, :formatter, :reporter, :example_group
7
+ before(:each) do
8
+ @formatter_output = StringIO.new
9
+ @options = Options.new(StringIO.new, StringIO.new)
10
+ @backtrace_tweaker = stub("backtrace tweaker", :tweak_backtrace => nil)
11
+ options.backtrace_tweaker = backtrace_tweaker
12
+ @formatter = ::Spec::Runner::Formatter::BaseTextFormatter.new(options, formatter_output)
13
+ options.formatters << formatter
14
+ @reporter = Reporter.new(options)
15
+ @example_group = create_example_group("example_group")
16
+ reporter.add_example_group example_group
17
+ end
18
+
19
+ def failure
20
+ Mocks::ArgumentConstraints::DuckTypeConstraint.new(:header, :exception)
21
+ end
22
+
23
+ def create_example_group(description_text)
24
+ example_group = Spec::Example::ExampleGroup.describe(description_text) do
25
+ it "should do something" do
26
+ end
27
+ end
28
+ example_group
29
+ end
30
+
31
+ it "should assign itself as the reporter to options" do
32
+ options.reporter.should equal(@reporter)
33
+ end
34
+
35
+ it "should tell formatter when example_group is added" do
36
+ formatter.should_receive(:add_example_group).with(example_group)
37
+ reporter.add_example_group(example_group)
38
+ end
39
+
40
+ it "should handle multiple example_groups with same name" do
41
+ formatter.should_receive(:add_example_group).exactly(3).times
42
+ formatter.should_receive(:example_started).exactly(3).times
43
+ formatter.should_receive(:example_passed).exactly(3).times
44
+ formatter.should_receive(:start_dump)
45
+ formatter.should_receive(:dump_pending)
46
+ formatter.should_receive(:close).with(no_args)
47
+ formatter.should_receive(:dump_summary).with(anything(), 3, 0, 0)
48
+ reporter.add_example_group(create_example_group("example_group"))
49
+ reporter.example_started("spec 1")
50
+ reporter.example_finished("spec 1")
51
+ reporter.add_example_group(create_example_group("example_group"))
52
+ reporter.example_started("spec 2")
53
+ reporter.example_finished("spec 2")
54
+ reporter.add_example_group(create_example_group("example_group"))
55
+ reporter.example_started("spec 3")
56
+ reporter.example_finished("spec 3")
57
+ reporter.dump
58
+ end
59
+
60
+ it "should handle multiple examples with the same name" do
61
+ error=RuntimeError.new
62
+ passing = ExampleGroup.new("example")
63
+ failing = ExampleGroup.new("example")
64
+
65
+ formatter.should_receive(:add_example_group).exactly(2).times
66
+ formatter.should_receive(:example_passed).with(passing).exactly(2).times
67
+ formatter.should_receive(:example_failed).with(failing, 1, failure)
68
+ formatter.should_receive(:example_failed).with(failing, 2, failure)
69
+ formatter.should_receive(:dump_failure).exactly(2).times
70
+ formatter.should_receive(:start_dump)
71
+ formatter.should_receive(:dump_pending)
72
+ formatter.should_receive(:close).with(no_args)
73
+ formatter.should_receive(:dump_summary).with(anything(), 4, 2, 0)
74
+ backtrace_tweaker.should_receive(:tweak_backtrace).twice
75
+
76
+ reporter.add_example_group(create_example_group("example_group"))
77
+ reporter.example_finished(passing)
78
+ reporter.example_finished(failing, error)
79
+
80
+ reporter.add_example_group(create_example_group("example_group"))
81
+ reporter.example_finished(passing)
82
+ reporter.example_finished(failing, error)
83
+ reporter.dump
84
+ end
85
+
86
+ it "should push stats to formatter even with no data" do
87
+ formatter.should_receive(:start_dump)
88
+ formatter.should_receive(:dump_pending)
89
+ formatter.should_receive(:dump_summary).with(anything(), 0, 0, 0)
90
+ formatter.should_receive(:close).with(no_args)
91
+ reporter.dump
92
+ end
93
+
94
+ it "should push time to formatter" do
95
+ formatter.should_receive(:start).with(5)
96
+ formatter.should_receive(:start_dump)
97
+ formatter.should_receive(:dump_pending)
98
+ formatter.should_receive(:close).with(no_args)
99
+ formatter.should_receive(:dump_summary) do |time, a, b|
100
+ time.to_s.should match(/[0-9].[0-9|e|-]+/)
101
+ end
102
+ reporter.start(5)
103
+ reporter.end
104
+ reporter.dump
105
+ end
106
+
107
+ describe Reporter, "reporting one passing example" do
108
+ it "should tell formatter example passed" do
109
+ formatter.should_receive(:example_passed)
110
+ reporter.example_finished("example")
111
+ end
112
+
113
+ it "should not delegate to backtrace tweaker" do
114
+ formatter.should_receive(:example_passed)
115
+ backtrace_tweaker.should_not_receive(:tweak_backtrace)
116
+ reporter.example_finished("example")
117
+ end
118
+
119
+ it "should account for passing example in stats" do
120
+ formatter.should_receive(:example_passed)
121
+ formatter.should_receive(:start_dump)
122
+ formatter.should_receive(:dump_pending)
123
+ formatter.should_receive(:dump_summary).with(anything(), 1, 0, 0)
124
+ formatter.should_receive(:close).with(no_args)
125
+ reporter.example_finished("example")
126
+ reporter.dump
127
+ end
128
+ end
129
+
130
+ describe Reporter, "reporting one failing example" do
131
+ it "should tell formatter that example failed" do
132
+ example = example_group.it("should do something") {}
133
+ formatter.should_receive(:example_failed)
134
+ reporter.example_finished(example, RuntimeError.new)
135
+ end
136
+
137
+ it "should delegate to backtrace tweaker" do
138
+ formatter.should_receive(:example_failed)
139
+ backtrace_tweaker.should_receive(:tweak_backtrace)
140
+ reporter.example_finished(ExampleGroup.new("example"), RuntimeError.new)
141
+ end
142
+
143
+ it "should account for failing example in stats" do
144
+ example = ExampleGroup.new("example")
145
+ formatter.should_receive(:example_failed).with(example, 1, failure)
146
+ formatter.should_receive(:start_dump)
147
+ formatter.should_receive(:dump_pending)
148
+ formatter.should_receive(:dump_failure).with(1, anything())
149
+ formatter.should_receive(:dump_summary).with(anything(), 1, 1, 0)
150
+ formatter.should_receive(:close).with(no_args)
151
+ reporter.example_finished(example, RuntimeError.new)
152
+ reporter.dump
153
+ end
154
+
155
+ end
156
+
157
+ describe Reporter, "reporting one pending example (ExamplePendingError)" do
158
+ before :each do
159
+ @pending_error = Spec::Example::ExamplePendingError.new("reason")
160
+ @pending_caller = @pending_error.pending_caller
161
+ end
162
+
163
+ it "should tell formatter example is pending" do
164
+ example = ExampleGroup.new("example")
165
+ formatter.should_receive(:example_pending).with(example, "reason", @pending_caller)
166
+ formatter.should_receive(:add_example_group).with(example_group)
167
+ reporter.add_example_group(example_group)
168
+ reporter.example_finished(example, @pending_error)
169
+ end
170
+
171
+ it "should account for pending example in stats" do
172
+ example = ExampleGroup.new("example")
173
+ formatter.should_receive(:example_pending).with(example, "reason", @pending_caller)
174
+ formatter.should_receive(:start_dump)
175
+ formatter.should_receive(:dump_pending)
176
+ formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
177
+ formatter.should_receive(:close).with(no_args)
178
+ formatter.should_receive(:add_example_group).with(example_group)
179
+ reporter.add_example_group(example_group)
180
+ reporter.example_finished(example, @pending_error)
181
+ reporter.dump
182
+ end
183
+
184
+ describe "to formatters which have example_pending's arity of 2 (which is now deprecated)" do
185
+ before :each do
186
+ Kernel.stub!(:warn).with(Spec::Runner::Reporter::EXAMPLE_PENDING_DEPRECATION_WARNING)
187
+
188
+ @deprecated_formatter = Class.new(@formatter.class) do
189
+ attr_reader :example_passed_to_method, :message_passed_to_method
190
+
191
+ def example_pending(example_passed_to_method, message_passed_to_method)
192
+ @example_passed_to_method = example_passed_to_method
193
+ @message_passed_to_method = message_passed_to_method
194
+ end
195
+ end.new(options, formatter_output)
196
+
197
+ options.formatters << @deprecated_formatter
198
+ end
199
+
200
+ it "should pass the correct example to the formatter" do
201
+ example = ExampleGroup.new("example")
202
+ reporter.add_example_group(example_group)
203
+ reporter.example_finished(example, @pending_error)
204
+
205
+ @deprecated_formatter.example_passed_to_method.should == example
206
+ end
207
+
208
+ it "should pass the correct pending error message to the formatter" do
209
+ example = ExampleGroup.new("example")
210
+ reporter.add_example_group(example_group)
211
+ reporter.example_finished(example, @pending_error)
212
+
213
+ @deprecated_formatter.message_passed_to_method.should == @pending_error.message
214
+ end
215
+
216
+ it "should raise a deprecation warning" do
217
+ Kernel.should_receive(:warn).with(Spec::Runner::Reporter::EXAMPLE_PENDING_DEPRECATION_WARNING)
218
+
219
+ example = ExampleGroup.new("example")
220
+ reporter.add_example_group(example_group)
221
+ reporter.example_finished(example, @pending_error)
222
+ end
223
+ end
224
+ end
225
+
226
+ describe Reporter, "reporting one pending example (PendingExampleFixedError)" do
227
+ it "should tell formatter pending example is fixed" do
228
+ formatter.should_receive(:example_failed) do |name, counter, failure|
229
+ failure.header.should == "'example_group should do something' FIXED"
230
+ end
231
+ formatter.should_receive(:add_example_group).with(example_group)
232
+ reporter.add_example_group(example_group)
233
+ reporter.example_finished(example_group.examples.first, Spec::Example::PendingExampleFixedError.new("reason"))
234
+ end
235
+ end
236
+ end
237
+ end
238
+ end
File without changes
File without changes
@@ -0,0 +1 @@
1
+ # Empty - used by ../options_spec.rb
@@ -0,0 +1,2 @@
1
+ --diff
2
+ --colour
@@ -0,0 +1 @@
1
+ --drb
@@ -0,0 +1,70 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ describe "c" do
4
+
5
+ it "1" do
6
+ end
7
+
8
+ it "2" do
9
+ end
10
+
11
+ end
12
+
13
+ describe "d" do
14
+
15
+ it "3" do
16
+ end
17
+
18
+ it "4" do
19
+ end
20
+
21
+ end
22
+
23
+ class SpecParserSubject
24
+ end
25
+
26
+ describe SpecParserSubject do
27
+
28
+ it "5" do
29
+ end
30
+
31
+ end
32
+
33
+ describe SpecParserSubject, "described" do
34
+
35
+ it "6" do
36
+ end
37
+
38
+ end
39
+
40
+ describe SpecParserSubject, "described", :something => :something_else do
41
+
42
+ it "7" do
43
+ end
44
+
45
+ end
46
+
47
+ describe "described", :something => :something_else do
48
+
49
+ it "8" do
50
+ end
51
+
52
+ end
53
+
54
+ describe "e" do
55
+
56
+ it "9" do
57
+ end
58
+
59
+ it "10" do
60
+ end
61
+
62
+ describe "f" do
63
+ it "11" do
64
+ end
65
+
66
+ it "12" do
67
+ end
68
+ end
69
+
70
+ end
@@ -0,0 +1,85 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ describe "SpecParser" do
4
+ attr_reader :parser, :file
5
+ before(:each) do
6
+ @original_rspec_options = Spec::Runner.options
7
+ Spec::Runner.use ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
8
+ @parser = Spec::Runner::SpecParser.new
9
+ @file = "#{File.dirname(__FILE__)}/spec_parser/spec_parser_fixture.rb"
10
+ load file
11
+ end
12
+
13
+ after(:each) do
14
+ Spec::Runner.use @original_rspec_options
15
+ end
16
+
17
+ it "should find spec name for 'specify' at same line" do
18
+ parser.spec_name_for(file, 5).should == "c 1"
19
+ end
20
+
21
+ it "should find spec name for 'specify' at end of spec line" do
22
+ parser.spec_name_for(file, 6).should == "c 1"
23
+ end
24
+
25
+ it "should find context for 'context' above all specs" do
26
+ parser.spec_name_for(file, 4).should == "c"
27
+ end
28
+
29
+ it "should find spec name for 'it' at same line" do
30
+ parser.spec_name_for(file, 15).should == "d 3"
31
+ end
32
+
33
+ it "should find spec name for 'it' at end of spec line" do
34
+ parser.spec_name_for(file, 16).should == "d 3"
35
+ end
36
+
37
+ it "should find context for 'describe' above all specs" do
38
+ parser.spec_name_for(file, 14).should == "d"
39
+ end
40
+
41
+ it "should find nearest example name between examples" do
42
+ parser.spec_name_for(file, 7).should == "c 1"
43
+ end
44
+
45
+ it "should find nothing outside a context" do
46
+ parser.spec_name_for(file, 2).should be_nil
47
+ end
48
+
49
+ it "should find context name for type" do
50
+ parser.spec_name_for(file, 26).should == "SpecParserSubject"
51
+ end
52
+
53
+ it "should find context and spec name for type" do
54
+ parser.spec_name_for(file, 28).should == "SpecParserSubject 5"
55
+ end
56
+
57
+ it "should find context and description for type" do
58
+ parser.spec_name_for(file, 33).should == "SpecParserSubject described"
59
+ end
60
+
61
+ it "should find context and description and example for type" do
62
+ parser.spec_name_for(file, 36).should == "SpecParserSubject described 6"
63
+ end
64
+
65
+ it "should find context and description for type with modifications" do
66
+ parser.spec_name_for(file, 40).should == "SpecParserSubject described"
67
+ end
68
+
69
+ it "should find context and described and example for type with modifications" do
70
+ parser.spec_name_for(file, 43).should == "SpecParserSubject described 7"
71
+ end
72
+
73
+ it "should find example group" do
74
+ parser.spec_name_for(file, 47).should == "described"
75
+ end
76
+
77
+ it "should find example" do
78
+ parser.spec_name_for(file, 50).should == "described 8"
79
+ end
80
+
81
+ it "should find nested example" do
82
+ parser.spec_name_for(file, 63).should == "e f 11"
83
+ end
84
+
85
+ end