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,64 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ describe "should include(expected)" do
4
+ it "should pass if target includes expected" do
5
+ [1,2,3].should include(3)
6
+ "abc".should include("a")
7
+ end
8
+
9
+ it "should fail if target does not include expected" do
10
+ lambda {
11
+ [1,2,3].should include(4)
12
+ }.should fail_with("expected [1, 2, 3] to include 4")
13
+ lambda {
14
+ "abc".should include("d")
15
+ }.should fail_with("expected \"abc\" to include \"d\"")
16
+ end
17
+ end
18
+
19
+ describe "should include(with, multiple, args)" do
20
+ it "should pass if target includes all items" do
21
+ [1,2,3].should include(1,2,3)
22
+ end
23
+
24
+ it "should fail if target does not include any one of the items" do
25
+ lambda {
26
+ [1,2,3].should include(1,2,4)
27
+ }.should fail_with("expected [1, 2, 3] to include 1, 2 and 4")
28
+ end
29
+ end
30
+
31
+ describe "should_not include(expected)" do
32
+ it "should pass if target does not include expected" do
33
+ [1,2,3].should_not include(4)
34
+ "abc".should_not include("d")
35
+ end
36
+
37
+ it "should fail if target includes expected" do
38
+ lambda {
39
+ [1,2,3].should_not include(3)
40
+ }.should fail_with("expected [1, 2, 3] not to include 3")
41
+ lambda {
42
+ "abc".should_not include("c")
43
+ }.should fail_with("expected \"abc\" not to include \"c\"")
44
+ end
45
+ end
46
+
47
+ describe "should include(:key => value)" do
48
+ it "should pass if target is a Hash and includes the key/value pair" do
49
+ {:key => 'value'}.should include(:key => 'value')
50
+ end
51
+ it "should pass if target is a Hash and includes the key/value pair among others" do
52
+ {:key => 'value', :other => 'different'}.should include(:key => 'value')
53
+ end
54
+ it "should fail if target is a Hash and has a different value for key" do
55
+ lambda {
56
+ {:key => 'different'}.should include(:key => 'value')
57
+ }.should fail_with(%Q|expected {:key=>"different"} to include {:key=>"value"}|)
58
+ end
59
+ it "should fail if target is a Hash and has a different key" do
60
+ lambda {
61
+ {:other => 'value'}.should include(:key => 'value')
62
+ }.should fail_with(%Q|expected {:other=>"value"} to include {:key=>"value"}|)
63
+ end
64
+ end
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ describe "should match(expected)" do
4
+ it "should pass when target (String) matches expected (Regexp)" do
5
+ "string".should match(/tri/)
6
+ end
7
+
8
+ it "should fail when target (String) does not match expected (Regexp)" do
9
+ lambda {
10
+ "string".should match(/rings/)
11
+ }.should fail
12
+ end
13
+
14
+ it "should provide message, expected and actual on failure" do
15
+ matcher = match(/rings/)
16
+ matcher.matches?("string")
17
+ matcher.failure_message.should == ["expected \"string\" to match /rings/", /rings/, "string"]
18
+ end
19
+ end
20
+
21
+ describe "should_not match(expected)" do
22
+ it "should pass when target (String) matches does not match (Regexp)" do
23
+ "string".should_not match(/rings/)
24
+ end
25
+
26
+ it "should fail when target (String) matches expected (Regexp)" do
27
+ lambda {
28
+ "string".should_not match(/tri/)
29
+ }.should fail
30
+ end
31
+
32
+ it "should provide message, expected and actual on failure" do
33
+ matcher = match(/tri/)
34
+ matcher.matches?("string")
35
+ matcher.negative_failure_message.should == ["expected \"string\" not to match /tri/", /tri/, "string"]
36
+ end
37
+ end
@@ -0,0 +1,78 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Matchers
5
+ context %Q{The Spec::Matchers module gets included in the execution context of every spec.
6
+ This module should provide the following methods, each of which returns a Matcher object.} do
7
+ it "be_true" do
8
+ be_true.should be_an_instance_of(Be)
9
+ end
10
+ it "be_false" do
11
+ be_false.should be_an_instance_of(Be)
12
+ end
13
+ it "be_nil" do
14
+ be_nil.should be_an_instance_of(Be)
15
+ end
16
+ it "be_arbitrary_predicate" do
17
+ be_arbitrary_predicate.should be_an_instance_of(Be)
18
+ end
19
+ it "be_close" do
20
+ be_close(1,2).should be_an_instance_of(BeClose)
21
+ end
22
+ it "change" do
23
+ change("target", :message).should be_an_instance_of(Change)
24
+ end
25
+ it "eql" do
26
+ eql(:expected).should be_an_instance_of(Eql)
27
+ end
28
+ it "equal" do
29
+ equal(:expected).should be_an_instance_of(Equal)
30
+ end
31
+ it "have" do
32
+ have(0).should be_an_instance_of(Have)
33
+ end
34
+ it "have_exactly" do
35
+ have_exactly(0).should be_an_instance_of(Have)
36
+ end
37
+ it "have_at_least" do
38
+ have_at_least(0).should be_an_instance_of(Have)
39
+ end
40
+ it "have_at_most" do
41
+ have_at_most(0).should be_an_instance_of(Have)
42
+ end
43
+ it "include" do
44
+ include(:value).should be_an_instance_of(Include)
45
+ end
46
+ it "match" do
47
+ match(:value).should be_an_instance_of(Match)
48
+ end
49
+ it "raise_error" do
50
+ raise_error.should be_an_instance_of(RaiseError)
51
+ raise_error(NoMethodError).should be_an_instance_of(RaiseError)
52
+ raise_error(NoMethodError, "message").should be_an_instance_of(RaiseError)
53
+ end
54
+ it "satisfy" do
55
+ satisfy{}.should be_an_instance_of(Satisfy)
56
+ end
57
+ it "throw_symbol" do
58
+ throw_symbol.should be_an_instance_of(ThrowSymbol)
59
+ throw_symbol(:sym).should be_an_instance_of(ThrowSymbol)
60
+ end
61
+ it "respond_to" do
62
+ respond_to(:sym).should be_an_instance_of(RespondTo)
63
+ end
64
+ end
65
+
66
+ describe "Spec::Matchers#method_missing" do
67
+ it "should convert be_xyz to Be(:be_xyz)" do
68
+ Be.should_receive(:new).with(:be_whatever)
69
+ be_whatever
70
+ end
71
+
72
+ it "should convert have_xyz to Has(:have_xyz)" do
73
+ Has.should_receive(:new).with(:have_whatever)
74
+ have_whatever
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,24 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ describe "The anything() mock argument constraint matcher" do
4
+ specify { anything.should == Object.new }
5
+ specify { anything.should == Class }
6
+ specify { anything.should == 1 }
7
+ specify { anything.should == "a string" }
8
+ specify { anything.should == :a_symbol }
9
+ end
10
+
11
+ describe "The boolean() mock argument constraint matcher" do
12
+ specify { boolean.should == true }
13
+ specify { boolean.should == false }
14
+ specify { boolean.should_not == Object.new }
15
+ specify { boolean.should_not == Class }
16
+ specify { boolean.should_not == 1 }
17
+ specify { boolean.should_not == "a string" }
18
+ specify { boolean.should_not == :a_symbol }
19
+ end
20
+
21
+ describe "The an_instance_of() mock argument constraint matcher" do
22
+ # NOTE - this is implemented as a predicate_matcher - see example_group_methods.rb
23
+ specify { an_instance_of(String).should == "string" }
24
+ end
@@ -0,0 +1,191 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ require 'spec/expectations/differs/default'
4
+
5
+ describe "should ==" do
6
+
7
+ it "should delegate message to target" do
8
+ subject = "apple"
9
+ subject.should_receive(:==).with("apple").and_return(true)
10
+ subject.should == "apple"
11
+ end
12
+
13
+ it "should return true on success" do
14
+ subject = "apple"
15
+ (subject.should == "apple").should be_true
16
+ end
17
+
18
+ it "should fail when target.==(actual) returns false" do
19
+ subject = "apple"
20
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ==)], "orange", "apple")
21
+ subject.should == "orange"
22
+ end
23
+
24
+ end
25
+
26
+ describe "should_not ==" do
27
+
28
+ it "should delegate message to target" do
29
+ subject = "orange"
30
+ subject.should_receive(:==).with("apple").and_return(false)
31
+ subject.should_not == "apple"
32
+ end
33
+
34
+ it "should return true on success" do
35
+ subject = "apple"
36
+ (subject.should_not == "orange").should be_true
37
+ end
38
+
39
+ it "should fail when target.==(actual) returns false" do
40
+ subject = "apple"
41
+ Spec::Expectations.should_receive(:fail_with).with(%[expected not: == "apple",\n got: "apple"], "apple", "apple")
42
+ subject.should_not == "apple"
43
+ end
44
+
45
+ end
46
+
47
+ describe "should ===" do
48
+
49
+ it "should delegate message to target" do
50
+ subject = "apple"
51
+ subject.should_receive(:===).with("apple").and_return(true)
52
+ subject.should === "apple"
53
+ end
54
+
55
+ it "should fail when target.===(actual) returns false" do
56
+ subject = "apple"
57
+ subject.should_receive(:===).with("orange").and_return(false)
58
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: "orange",\n got: "apple" (using ===)], "orange", "apple")
59
+ subject.should === "orange"
60
+ end
61
+
62
+ end
63
+
64
+ describe "should_not ===" do
65
+
66
+ it "should delegate message to target" do
67
+ subject = "orange"
68
+ subject.should_receive(:===).with("apple").and_return(false)
69
+ subject.should_not === "apple"
70
+ end
71
+
72
+ it "should fail when target.===(actual) returns false" do
73
+ subject = "apple"
74
+ subject.should_receive(:===).with("apple").and_return(true)
75
+ Spec::Expectations.should_receive(:fail_with).with(%[expected not: === "apple",\n got: "apple"], "apple", "apple")
76
+ subject.should_not === "apple"
77
+ end
78
+
79
+ end
80
+
81
+ describe "should =~" do
82
+
83
+ it "should delegate message to target" do
84
+ subject = "foo"
85
+ subject.should_receive(:=~).with(/oo/).and_return(true)
86
+ subject.should =~ /oo/
87
+ end
88
+
89
+ it "should fail when target.=~(actual) returns false" do
90
+ subject = "fu"
91
+ subject.should_receive(:=~).with(/oo/).and_return(false)
92
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: /oo/,\n got: "fu" (using =~)], /oo/, "fu")
93
+ subject.should =~ /oo/
94
+ end
95
+
96
+ end
97
+
98
+ describe "should_not =~" do
99
+
100
+ it "should delegate message to target" do
101
+ subject = "fu"
102
+ subject.should_receive(:=~).with(/oo/).and_return(false)
103
+ subject.should_not =~ /oo/
104
+ end
105
+
106
+ it "should fail when target.=~(actual) returns false" do
107
+ subject = "foo"
108
+ subject.should_receive(:=~).with(/oo/).and_return(true)
109
+ Spec::Expectations.should_receive(:fail_with).with(%[expected not: =~ /oo/,\n got: "foo"], /oo/, "foo")
110
+ subject.should_not =~ /oo/
111
+ end
112
+
113
+ end
114
+
115
+ describe "should >" do
116
+
117
+ it "should pass if > passes" do
118
+ 4.should > 3
119
+ end
120
+
121
+ it "should fail if > fails" do
122
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: > 5,\n got: 4], 5, 4)
123
+ 4.should > 5
124
+ end
125
+
126
+ end
127
+
128
+ describe "should >=" do
129
+
130
+ it "should pass if >= passes" do
131
+ 4.should > 3
132
+ 4.should >= 4
133
+ end
134
+
135
+ it "should fail if > fails" do
136
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: >= 5,\n got: 4], 5, 4)
137
+ 4.should >= 5
138
+ end
139
+
140
+ end
141
+
142
+ describe "should <" do
143
+
144
+ it "should pass if < passes" do
145
+ 4.should < 5
146
+ end
147
+
148
+ it "should fail if > fails" do
149
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: < 3,\n got: 4], 3, 4)
150
+ 4.should < 3
151
+ end
152
+
153
+ end
154
+
155
+ describe "should <=" do
156
+
157
+ it "should pass if <= passes" do
158
+ 4.should <= 5
159
+ 4.should <= 4
160
+ end
161
+
162
+ it "should fail if > fails" do
163
+ Spec::Expectations.should_receive(:fail_with).with(%[expected: <= 3,\n got: 4], 3, 4)
164
+ 4.should <= 3
165
+ end
166
+
167
+ end
168
+
169
+ describe Spec::Matchers::PositiveOperatorMatcher do
170
+
171
+ it "should work when the target has implemented #send" do
172
+ o = Object.new
173
+ def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
174
+ lambda {
175
+ o.should == o
176
+ }.should_not raise_error
177
+ end
178
+
179
+ end
180
+
181
+ describe Spec::Matchers::NegativeOperatorMatcher do
182
+
183
+ it "should work when the target has implemented #send" do
184
+ o = Object.new
185
+ def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
186
+ lambda {
187
+ o.should_not == :foo
188
+ }.should_not raise_error
189
+ end
190
+
191
+ end
@@ -0,0 +1,315 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ describe "should raise_error" do
4
+ it "should pass if anything is raised" do
5
+ lambda {raise}.should raise_error
6
+ end
7
+
8
+ it "should fail if nothing is raised" do
9
+ lambda {
10
+ lambda {}.should raise_error
11
+ }.should fail_with("expected Exception but nothing was raised")
12
+ end
13
+ end
14
+
15
+ describe "should_not raise_error" do
16
+ it "should pass if nothing is raised" do
17
+ lambda {}.should_not raise_error
18
+ end
19
+
20
+ it "should fail if anything is raised" do
21
+ lambda {
22
+ lambda {raise}.should_not raise_error
23
+ }.should fail_with("expected no Exception, got RuntimeError")
24
+ end
25
+ end
26
+
27
+ describe "should raise_error(message)" do
28
+ it "should pass if RuntimeError is raised with the right message" do
29
+ lambda {raise 'blah'}.should raise_error('blah')
30
+ end
31
+ it "should pass if RuntimeError is raised with a matching message" do
32
+ lambda {raise 'blah'}.should raise_error(/blah/)
33
+ end
34
+ it "should pass if any other error is raised with the right message" do
35
+ lambda {raise NameError.new('blah')}.should raise_error('blah')
36
+ end
37
+ it "should fail if RuntimeError error is raised with the wrong message" do
38
+ lambda do
39
+ lambda {raise 'blarg'}.should raise_error('blah')
40
+ end.should fail_with("expected Exception with \"blah\", got #<RuntimeError: blarg>")
41
+ end
42
+ it "should fail if any other error is raised with the wrong message" do
43
+ lambda do
44
+ lambda {raise NameError.new('blarg')}.should raise_error('blah')
45
+ end.should fail_with("expected Exception with \"blah\", got #<NameError: blarg>")
46
+ end
47
+ end
48
+
49
+ describe "should_not raise_error(message)" do
50
+ it "should pass if RuntimeError error is raised with the different message" do
51
+ lambda {raise 'blarg'}.should_not raise_error('blah')
52
+ end
53
+ it "should pass if any other error is raised with the wrong message" do
54
+ lambda {raise NameError.new('blarg')}.should_not raise_error('blah')
55
+ end
56
+ it "should fail if RuntimeError is raised with message" do
57
+ lambda do
58
+ lambda {raise 'blah'}.should_not raise_error('blah')
59
+ end.should fail_with(%Q|expected no Exception with "blah", got #<RuntimeError: blah>|)
60
+ end
61
+ it "should fail if any other error is raised with message" do
62
+ lambda do
63
+ lambda {raise NameError.new('blah')}.should_not raise_error('blah')
64
+ end.should fail_with(%Q|expected no Exception with "blah", got #<NameError: blah>|)
65
+ end
66
+ end
67
+
68
+ describe "should raise_error(NamedError)" do
69
+ it "should pass if named error is raised" do
70
+ lambda { non_existent_method }.should raise_error(NameError)
71
+ end
72
+
73
+ it "should fail if nothing is raised" do
74
+ lambda {
75
+ lambda { }.should raise_error(NameError)
76
+ }.should fail_with("expected NameError but nothing was raised")
77
+ end
78
+
79
+ it "should fail if another error is raised (NameError)" do
80
+ lambda {
81
+ lambda { raise }.should raise_error(NameError)
82
+ }.should fail_with("expected NameError, got RuntimeError")
83
+ end
84
+
85
+ it "should fail if another error is raised (NameError)" do
86
+ lambda {
87
+ lambda { load "non/existent/file" }.should raise_error(NameError)
88
+ }.should fail_with(/expected NameError, got #<LoadError/)
89
+ end
90
+ end
91
+
92
+ describe "should_not raise_error(NamedError)" do
93
+ it "should pass if nothing is raised" do
94
+ lambda { }.should_not raise_error(NameError)
95
+ end
96
+
97
+ it "should pass if another error is raised" do
98
+ lambda { raise }.should_not raise_error(NameError)
99
+ end
100
+
101
+ it "should fail if named error is raised" do
102
+ lambda {
103
+ lambda { non_existent_method }.should_not raise_error(NameError)
104
+ }.should fail_with(/expected no NameError, got #<NameError: undefined/)
105
+ end
106
+ end
107
+
108
+ describe "should raise_error(NamedError, error_message) with String" do
109
+ it "should pass if named error is raised with same message" do
110
+ lambda { raise "example message" }.should raise_error(RuntimeError, "example message")
111
+ end
112
+
113
+ it "should fail if nothing is raised" do
114
+ lambda {
115
+ lambda {}.should raise_error(RuntimeError, "example message")
116
+ }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
117
+ end
118
+
119
+ it "should fail if incorrect error is raised" do
120
+ lambda {
121
+ lambda { raise }.should raise_error(NameError, "example message")
122
+ }.should fail_with("expected NameError with \"example message\", got RuntimeError")
123
+ end
124
+
125
+ it "should fail if correct error is raised with incorrect message" do
126
+ lambda {
127
+ lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, "example message")
128
+ }.should fail_with(/expected RuntimeError with \"example message\", got #<RuntimeError: not the example message/)
129
+ end
130
+ end
131
+
132
+ describe "should raise_error(NamedError, error_message) { |err| ... }" do
133
+ it "should yield exception if named error is raised with same message" do
134
+ ran = false
135
+
136
+ lambda {
137
+ raise "example message"
138
+ }.should raise_error(RuntimeError, "example message") { |err|
139
+ ran = true
140
+ err.class.should == RuntimeError
141
+ err.message.should == "example message"
142
+ }
143
+
144
+ ran.should == true
145
+ end
146
+
147
+ it "yielded block should be able to fail on it's own right" do
148
+ ran, passed = false, false
149
+
150
+ lambda {
151
+ lambda {
152
+ raise "example message"
153
+ }.should raise_error(RuntimeError, "example message") { |err|
154
+ ran = true
155
+ 5.should == 4
156
+ passed = true
157
+ }
158
+ }.should fail_with(/expected: 4/m)
159
+
160
+ ran.should == true
161
+ passed.should == false
162
+ end
163
+
164
+ it "should NOT yield exception if no error was thrown" do
165
+ ran = false
166
+
167
+ lambda {
168
+ lambda {}.should raise_error(RuntimeError, "example message") { |err|
169
+ ran = true
170
+ }
171
+ }.should fail_with("expected RuntimeError with \"example message\" but nothing was raised")
172
+
173
+ ran.should == false
174
+ end
175
+
176
+ it "should not yield exception if error class is not matched" do
177
+ ran = false
178
+
179
+ lambda {
180
+ lambda {
181
+ raise "example message"
182
+ }.should raise_error(SyntaxError, "example message") { |err|
183
+ ran = true
184
+ }
185
+ }.should fail_with("expected SyntaxError with \"example message\", got #<RuntimeError: example message>")
186
+
187
+ ran.should == false
188
+ end
189
+
190
+ it "should NOT yield exception if error message is not matched" do
191
+ ran = false
192
+
193
+ lambda {
194
+ lambda {
195
+ raise "example message"
196
+ }.should raise_error(RuntimeError, "different message") { |err|
197
+ ran = true
198
+ }
199
+ }.should fail_with("expected RuntimeError with \"different message\", got #<RuntimeError: example message>")
200
+
201
+ ran.should == false
202
+ end
203
+ end
204
+
205
+ describe "should_not raise_error(NamedError, error_message) { |err| ... }" do
206
+ it "should pass if nothing is raised" do
207
+ ran = false
208
+
209
+ lambda {}.should_not raise_error(RuntimeError, "example message") { |err|
210
+ ran = true
211
+ }
212
+
213
+ ran.should == false
214
+ end
215
+
216
+ it "should pass if a different error is raised" do
217
+ ran = false
218
+
219
+ lambda { raise }.should_not raise_error(NameError, "example message") { |err|
220
+ ran = true
221
+ }
222
+
223
+ ran.should == false
224
+ end
225
+
226
+ it "should pass if same error is raised with different message" do
227
+ ran = false
228
+
229
+ lambda {
230
+ raise RuntimeError.new("not the example message")
231
+ }.should_not raise_error(RuntimeError, "example message") { |err|
232
+ ran = true
233
+ }
234
+
235
+ ran.should == false
236
+ end
237
+
238
+ it "should fail if named error is raised with same message" do
239
+ ran = false
240
+
241
+ lambda {
242
+ lambda {
243
+ raise "example message"
244
+ }.should_not raise_error(RuntimeError, "example message") { |err|
245
+ ran = true
246
+ }
247
+ }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
248
+
249
+ ran.should == false
250
+ end
251
+ end
252
+
253
+ describe "should_not raise_error(NamedError, error_message) with String" do
254
+ it "should pass if nothing is raised" do
255
+ lambda {}.should_not raise_error(RuntimeError, "example message")
256
+ end
257
+
258
+ it "should pass if a different error is raised" do
259
+ lambda { raise }.should_not raise_error(NameError, "example message")
260
+ end
261
+
262
+ it "should pass if same error is raised with different message" do
263
+ lambda { raise RuntimeError.new("not the example message") }.should_not raise_error(RuntimeError, "example message")
264
+ end
265
+
266
+ it "should fail if named error is raised with same message" do
267
+ lambda {
268
+ lambda { raise "example message" }.should_not raise_error(RuntimeError, "example message")
269
+ }.should fail_with("expected no RuntimeError with \"example message\", got #<RuntimeError: example message>")
270
+ end
271
+ end
272
+
273
+ describe "should raise_error(NamedError, error_message) with Regexp" do
274
+ it "should pass if named error is raised with matching message" do
275
+ lambda { raise "example message" }.should raise_error(RuntimeError, /ample mess/)
276
+ end
277
+
278
+ it "should fail if nothing is raised" do
279
+ lambda {
280
+ lambda {}.should raise_error(RuntimeError, /ample mess/)
281
+ }.should fail_with("expected RuntimeError with message matching /ample mess/ but nothing was raised")
282
+ end
283
+
284
+ it "should fail if incorrect error is raised" do
285
+ lambda {
286
+ lambda { raise }.should raise_error(NameError, /ample mess/)
287
+ }.should fail_with("expected NameError with message matching /ample mess/, got RuntimeError")
288
+ end
289
+
290
+ it "should fail if correct error is raised with incorrect message" do
291
+ lambda {
292
+ lambda { raise RuntimeError.new("not the example message") }.should raise_error(RuntimeError, /less than ample mess/)
293
+ }.should fail_with("expected RuntimeError with message matching /less than ample mess/, got #<RuntimeError: not the example message>")
294
+ end
295
+ end
296
+
297
+ describe "should_not raise_error(NamedError, error_message) with Regexp" do
298
+ it "should pass if nothing is raised" do
299
+ lambda {}.should_not raise_error(RuntimeError, /ample mess/)
300
+ end
301
+
302
+ it "should pass if a different error is raised" do
303
+ lambda { raise }.should_not raise_error(NameError, /ample mess/)
304
+ end
305
+
306
+ it "should pass if same error is raised with non-matching message" do
307
+ lambda { raise RuntimeError.new("non matching message") }.should_not raise_error(RuntimeError, /ample mess/)
308
+ end
309
+
310
+ it "should fail if named error is raised with matching message" do
311
+ lambda {
312
+ lambda { raise "example message" }.should_not raise_error(RuntimeError, /ample mess/)
313
+ }.should fail_with("expected no RuntimeError with message matching /ample mess/, got #<RuntimeError: example message>")
314
+ end
315
+ end