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,67 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Mocks
5
+ describe "TwiceCounts" do
6
+ before(:each) do
7
+ @mock = mock("test mock")
8
+ end
9
+
10
+ it "twice should fail when call count is higher than expected" do
11
+ @mock.should_receive(:random_call).twice
12
+ @mock.random_call
13
+ @mock.random_call
14
+ @mock.random_call
15
+ lambda do
16
+ @mock.rspec_verify
17
+ end.should raise_error(MockExpectationError)
18
+ end
19
+
20
+ it "twice should fail when call count is lower than expected" do
21
+ @mock.should_receive(:random_call).twice
22
+ @mock.random_call
23
+ lambda do
24
+ @mock.rspec_verify
25
+ end.should raise_error(MockExpectationError)
26
+ end
27
+
28
+ it "twice should fail when called twice with wrong args on the first call" do
29
+ @mock.should_receive(:random_call).twice.with("1", 1)
30
+ lambda do
31
+ @mock.random_call(1, "1")
32
+ end.should raise_error(MockExpectationError)
33
+ @mock.rspec_reset
34
+ end
35
+
36
+ it "twice should fail when called twice with wrong args on the second call" do
37
+ @mock.should_receive(:random_call).twice.with("1", 1)
38
+ @mock.random_call("1", 1)
39
+ lambda do
40
+ @mock.random_call(1, "1")
41
+ end.should raise_error(MockExpectationError)
42
+ @mock.rspec_reset
43
+ end
44
+
45
+ it "twice should pass when called twice" do
46
+ @mock.should_receive(:random_call).twice
47
+ @mock.random_call
48
+ @mock.random_call
49
+ @mock.rspec_verify
50
+ end
51
+
52
+ it "twice should pass when called twice with specified args" do
53
+ @mock.should_receive(:random_call).twice.with("1", 1)
54
+ @mock.random_call("1", 1)
55
+ @mock.random_call("1", 1)
56
+ @mock.rspec_verify
57
+ end
58
+
59
+ it "twice should pass when called twice with unspecified args" do
60
+ @mock.should_receive(:random_call).twice
61
+ @mock.random_call("1")
62
+ @mock.random_call(1)
63
+ @mock.rspec_verify
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,22 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+ require File.dirname(__FILE__) + '/../../ruby_forker'
3
+
4
+ describe "The bin/spec script" do
5
+ include RubyForker
6
+
7
+ it "should have no warnings" do
8
+ pending "Hangs on JRuby" if PLATFORM =~ /java/
9
+ spec_path = "#{File.dirname(__FILE__)}/../../../bin/spec"
10
+
11
+ output = ruby "-w #{spec_path} --help 2>&1"
12
+ output.should_not =~ /warning/n
13
+ end
14
+
15
+ it "should show the help w/ no args" do
16
+ pending "Hangs on JRuby" if PLATFORM =~ /java/
17
+ spec_path = "#{File.dirname(__FILE__)}/../../../bin/spec"
18
+
19
+ output = ruby "-w #{spec_path} 2>&1"
20
+ output.should =~ /^Usage: spec/
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe ClassAndArgumentsParser, ".parse" do
6
+
7
+ it "should use a single : to separate class names from arguments" do
8
+ ClassAndArgumentsParser.parse('Foo').should == ['Foo', nil]
9
+ ClassAndArgumentsParser.parse('Foo:arg').should == ['Foo', 'arg']
10
+ ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg').should == ['Foo::Bar::Zap', 'arg']
11
+ ClassAndArgumentsParser.parse('Foo:arg1,arg2').should == ['Foo', 'arg1,arg2']
12
+ ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg1,arg2').should == ['Foo::Bar::Zap', 'arg1,arg2']
13
+ ClassAndArgumentsParser.parse('Foo::Bar::Zap:drb://foo,drb://bar').should == ['Foo::Bar::Zap', 'drb://foo,drb://bar']
14
+ end
15
+
16
+ it "should raise an error when passed an empty string" do
17
+ lambda do
18
+ ClassAndArgumentsParser.parse('')
19
+ end.should raise_error("Couldn't parse \"\"")
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,141 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe CommandLine, ".run" do
6
+ with_sandboxed_options do
7
+ attr_reader :err, :out
8
+ before do
9
+ @err = options.error_stream
10
+ @out = options.output_stream
11
+ end
12
+
13
+ it "should run directory" do
14
+ file = File.dirname(__FILE__) + '/../../../examples/pure'
15
+ run_with(OptionParser.parse([file,"-p","**/*.rb"], @err, @out))
16
+
17
+ @out.rewind
18
+ @out.read.should =~ /\d+ examples, 0 failures, 3 pending/n
19
+ end
20
+
21
+ it "should run file" do
22
+ file = File.dirname(__FILE__) + '/../../../failing_examples/predicate_example.rb'
23
+ run_with(OptionParser.parse([file], @err, @out))
24
+
25
+ @out.rewind
26
+ @out.read.should =~ /2 examples, 1 failure/n
27
+ end
28
+
29
+ it "should raise when file does not exist" do
30
+ file = File.dirname(__FILE__) + '/doesntexist'
31
+
32
+ lambda {
33
+ Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
34
+ }.should raise_error
35
+ end
36
+
37
+ it "should return true when in --generate-options mode" do
38
+ # NOTE - this used to say /dev/null but jruby hangs on that for some reason
39
+ Spec::Runner::CommandLine.run(
40
+ OptionParser.parse(['--generate-options', '/tmp/foo'], @err, @out)
41
+ ).should be_true
42
+ end
43
+
44
+ it "should dump even if Interrupt exception is occurred" do
45
+ example_group = Class.new(::Spec::Example::ExampleGroup) do
46
+ describe("example_group")
47
+ it "no error" do
48
+ end
49
+
50
+ it "should interrupt" do
51
+ raise Interrupt, "I'm interrupting"
52
+ end
53
+ end
54
+
55
+ options = ::Spec::Runner::Options.new(@err, @out)
56
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
57
+ options.reporter.should_receive(:dump)
58
+ options.add_example_group(example_group)
59
+
60
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
61
+ end
62
+
63
+ it "should heckle when options have heckle_runner" do
64
+ example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
65
+ it "no error" do
66
+ end
67
+ end
68
+ options = ::Spec::Runner::Options.new(@err, @out)
69
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
70
+ options.add_example_group example_group
71
+
72
+ heckle_runner = mock("heckle_runner")
73
+ heckle_runner.should_receive(:heckle_with)
74
+ $rspec_mocks.__send__(:mocks).delete(heckle_runner)
75
+
76
+ options.heckle_runner = heckle_runner
77
+ options.add_example_group(example_group)
78
+
79
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
80
+ heckle_runner.rspec_verify
81
+ end
82
+
83
+ it "should run examples backwards if options.reverse is true" do
84
+ options = ::Spec::Runner::Options.new(@err, @out)
85
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
86
+ options.reverse = true
87
+
88
+ b1 = Class.new(Spec::Example::ExampleGroup)
89
+ b2 = Class.new(Spec::Example::ExampleGroup)
90
+
91
+ b2.should_receive(:run).ordered
92
+ b1.should_receive(:run).ordered
93
+
94
+ options.add_example_group(b1)
95
+ options.add_example_group(b2)
96
+
97
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
98
+ end
99
+
100
+ it "should pass its ExampleGroup to the reporter" do
101
+ example_group = describe("example_group") do
102
+ it "should" do
103
+ end
104
+ end
105
+ options = ::Spec::Runner::Options.new(@err, @out)
106
+ options.add_example_group(example_group)
107
+
108
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
109
+ options.reporter.should_receive(:add_example_group).with(example_group)
110
+
111
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
112
+ end
113
+
114
+ it "runs only selected Examples when options.examples is set" do
115
+ options = ::Spec::Runner::Options.new(@err, @out)
116
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
117
+
118
+ options.examples << "example group expected example"
119
+ expected_example_was_run = false
120
+ unexpected_example_was_run = false
121
+ example_group = describe("example group") do
122
+ it "expected example" do
123
+ expected_example_was_run = true
124
+ end
125
+ it "unexpected example" do
126
+ unexpected_example_was_run = true
127
+ end
128
+ end
129
+
130
+ options.reporter.should_receive(:add_example_group).with(example_group)
131
+
132
+ options.add_example_group example_group
133
+ run_with(options)
134
+
135
+ expected_example_was_run.should be_true
136
+ unexpected_example_was_run.should be_false
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,97 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe DrbCommandLine, "without running local server" do
6
+ unless Config::CONFIG['ruby_install_name'] == 'jruby'
7
+ it "should print error when there is no running local server" do
8
+ err = StringIO.new
9
+ out = StringIO.new
10
+ DrbCommandLine.run(OptionParser.parse(['--version'], err, out))
11
+
12
+ err.rewind
13
+ err.read.should =~ /No server is running/
14
+ end
15
+ end
16
+ end
17
+
18
+ describe "with local server" do
19
+
20
+ class CommandLineForSpec
21
+ def self.run(argv, stderr, stdout)
22
+ orig_options = Spec::Runner.options
23
+ tmp_options = OptionParser.parse(argv, stderr, stdout)
24
+ Spec::Runner.use tmp_options
25
+ Spec::Runner::CommandLine.run(tmp_options)
26
+ ensure
27
+ Spec::Runner.use orig_options
28
+ end
29
+ end
30
+
31
+ unless Config::CONFIG['ruby_install_name'] == 'jruby'
32
+ before(:all) do
33
+ DRb.start_service("druby://127.0.0.1:8989", CommandLineForSpec)
34
+ @@drb_example_file_counter = 0
35
+ end
36
+
37
+ before(:each) do
38
+ create_dummy_spec_file
39
+ @@drb_example_file_counter = @@drb_example_file_counter + 1
40
+ end
41
+
42
+ after(:each) do
43
+ File.delete(@dummy_spec_filename)
44
+ end
45
+
46
+ after(:all) do
47
+ DRb.stop_service
48
+ end
49
+
50
+ it "should run against local server" do
51
+ out = run_spec_via_druby(['--version'])
52
+ out.should =~ /rspec \d+\.\d+\.\d+.*/n
53
+ end
54
+
55
+ it "should output green colorized text when running with --colour option" do
56
+ out = run_spec_via_druby(["--colour", @dummy_spec_filename])
57
+ out.should =~ /\e\[32m/n
58
+ end
59
+
60
+ it "should output red colorized text when running with -c option" do
61
+ out = run_spec_via_druby(["-c", @dummy_spec_filename])
62
+ out.should =~ /\e\[31m/n
63
+ end
64
+
65
+ def create_dummy_spec_file
66
+ @dummy_spec_filename = File.expand_path(File.dirname(__FILE__)) + "/_dummy_spec#{@@drb_example_file_counter}.rb"
67
+ File.open(@dummy_spec_filename, 'w') do |f|
68
+ f.write %{
69
+ describe "DUMMY CONTEXT for 'DrbCommandLine with -c option'" do
70
+ it "should be output with green bar" do
71
+ true.should be_true
72
+ end
73
+
74
+ it "should be output with red bar" do
75
+ violated("I want to see a red bar!")
76
+ end
77
+ end
78
+ }
79
+ end
80
+ end
81
+
82
+ def run_spec_via_druby(argv)
83
+ err, out = StringIO.new, StringIO.new
84
+ out.instance_eval do
85
+ def tty?; true end
86
+ end
87
+ options = ::Spec::Runner::Options.new(err, out)
88
+ options.argv = argv
89
+ Spec::Runner::DrbCommandLine.run(options)
90
+ out.rewind; out.read
91
+ end
92
+ end
93
+
94
+ end
95
+
96
+ end
97
+ end
File without changes
@@ -0,0 +1,2 @@
1
+ Sir, if you were my husband, I would poison your drink.
2
+ Madam, if you were my wife, I would drink it.
@@ -0,0 +1,3 @@
1
+ heckler_spec.rb
2
+ command_line_spec.rb
3
+ reporter_spec.rb
@@ -0,0 +1,112 @@
1
+ require File.dirname(__FILE__) + "/../../../spec_helper"
2
+
3
+ module Spec
4
+ module Runner
5
+ module Formatter
6
+ describe BaseFormatter do
7
+ before :each do
8
+ @options, @where = nil, nil
9
+ @formatter = BaseFormatter.new(@options, @where)
10
+ end
11
+
12
+ class HaveInterfaceMatcher
13
+ def initialize(method)
14
+ @method = method
15
+ end
16
+
17
+ attr_reader :object
18
+ attr_reader :method
19
+
20
+ def matches?(object)
21
+ @object = object
22
+ object.respond_to?(@method)
23
+ end
24
+
25
+ def with(arity)
26
+ WithArity.new(self, @method, arity)
27
+ end
28
+
29
+ class WithArity
30
+ def initialize(matcher, method, arity)
31
+ @have_matcher = matcher
32
+ @method = method
33
+ @arity = arity
34
+ end
35
+
36
+ def matches?(an_object)
37
+ @have_matcher.matches?(an_object) && real_arity == @arity
38
+ end
39
+
40
+ def failure_message
41
+ "#{@have_matcher} should have method :#{@method} with #{argument_arity}, but it had #{real_arity}"
42
+ end
43
+
44
+ def arguments
45
+ self
46
+ end
47
+
48
+ alias_method :argument, :arguments
49
+
50
+ private
51
+
52
+ def real_arity
53
+ @have_matcher.object.method(@method).arity
54
+ end
55
+
56
+ def argument_arity
57
+ if @arity == 1
58
+ "1 argument"
59
+ else
60
+ "#{@arity} arguments"
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ def have_interface_for(method)
67
+ HaveInterfaceMatcher.new(method)
68
+ end
69
+
70
+ it "should have start as an interface with one argument"do
71
+ @formatter.should have_interface_for(:start).with(1).argument
72
+ end
73
+
74
+ it "should have add_example_group as an interface with one argument" do
75
+ @formatter.should have_interface_for(:add_example_group).with(1).argument
76
+ end
77
+
78
+ it "should have example_started as an interface with one argument" do
79
+ @formatter.should have_interface_for(:example_started).with(1).argument
80
+ end
81
+
82
+ it "should have example_failed as an interface with three arguments" do
83
+ @formatter.should have_interface_for(:example_failed).with(3).arguments
84
+ end
85
+
86
+ it "should have example_pending as an interface with three arguments" do
87
+ @formatter.should have_interface_for(:example_pending).with(3).arguments
88
+ end
89
+
90
+ it "should have start_dump as an interface with zero arguments" do
91
+ @formatter.should have_interface_for(:start_dump).with(0).arguments
92
+ end
93
+
94
+ it "should have dump_failure as an interface with two arguments" do
95
+ @formatter.should have_interface_for(:dump_failure).with(2).arguments
96
+ end
97
+
98
+ it "should have dump_summary as an interface with two arguments" do
99
+ @formatter.should have_interface_for(:dump_failure).with(2).arguments
100
+ end
101
+
102
+ it "should have dump_pending as an interface with zero arguments" do
103
+ @formatter.should have_interface_for(:dump_pending).with(0).arguments
104
+ end
105
+
106
+ it "should have close as an interface with zero arguments" do
107
+ @formatter.should have_interface_for(:close).with(0).arguments
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end