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,96 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Example
5
+ module ExampleMatcherSpecHelper
6
+ class MatchDescription
7
+ def initialize(description)
8
+ @description = description
9
+ end
10
+
11
+ def matches?(matcher)
12
+ matcher.matches?(@description)
13
+ end
14
+
15
+ def failure_message
16
+ "expected matcher.matches?(#{@description.inspect}) to return true, got false"
17
+ end
18
+
19
+ def negative_failure_message
20
+ "expected matcher.matches?(#{@description.inspect}) to return false, got true"
21
+ end
22
+ end
23
+ def match_description(description)
24
+ MatchDescription.new(description)
25
+ end
26
+ end
27
+
28
+ describe ExampleMatcher, "#matches?" do
29
+ include ExampleMatcherSpecHelper
30
+
31
+ it "should match correct example_group and example" do
32
+ matcher = ExampleMatcher.new("example_group", "example")
33
+ matcher.should match_description("example_group example")
34
+ end
35
+
36
+ it "should not match wrong example" do
37
+ matcher = ExampleMatcher.new("example_group", "other example")
38
+ matcher.should_not match_description("example_group example")
39
+ end
40
+
41
+ it "should not match wrong example_group" do
42
+ matcher = ExampleMatcher.new("other example_group", "example")
43
+ matcher.should_not match_description("example_group example")
44
+ end
45
+
46
+ it "should match example only" do
47
+ matcher = ExampleMatcher.new("example_group", "example")
48
+ matcher.should match_description("example")
49
+ end
50
+
51
+ it "should match example_group only" do
52
+ matcher = ExampleMatcher.new("example_group", "example")
53
+ matcher.should match_description("example_group")
54
+ end
55
+
56
+ it "should match example_group ending with before(:all)" do
57
+ matcher = ExampleMatcher.new("example_group", "example")
58
+ matcher.should match_description("example_group before(:all)")
59
+ end
60
+
61
+ it "should escape regexp chars" do
62
+ matcher = ExampleMatcher.new("(con|text)", "[example]")
63
+ matcher.should_not match_description("con p")
64
+ end
65
+
66
+ it "should match when example_group is modularized" do
67
+ matcher = ExampleMatcher.new("MyModule::MyClass", "example")
68
+ matcher.should match_description("MyClass example")
69
+ end
70
+ end
71
+
72
+ describe ExampleMatcher, "#matches? normal case" do
73
+ it "matches when passed in example matches" do
74
+ matcher = ExampleMatcher.new("Foo", "bar")
75
+ matcher.matches?(["no match", "Foo bar"]).should == true
76
+ end
77
+
78
+ it "does not match when no passed in examples match" do
79
+ matcher = ExampleMatcher.new("Foo", "bar")
80
+ matcher.matches?(["no match1", "no match2"]).should == false
81
+ end
82
+ end
83
+
84
+ describe ExampleMatcher, "#matches? where description has '::' in it" do
85
+ it "matches when passed in example matches" do
86
+ matcher = ExampleMatcher.new("Foo::Bar", "baz")
87
+ matcher.matches?(["no match", "Foo::Bar baz"]).should == true
88
+ end
89
+
90
+ it "does not match when no passed in examples match" do
91
+ matcher = ExampleMatcher.new("Foo::Bar", "baz")
92
+ matcher.matches?(["no match1", "no match2"]).should == false
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,169 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ module Spec
4
+ module Example
5
+ module ModuleThatIsReopened
6
+ end
7
+
8
+ module ExampleMethods
9
+ include ModuleThatIsReopened
10
+ end
11
+
12
+ module ModuleThatIsReopened
13
+ def module_that_is_reopened_method
14
+ end
15
+ end
16
+
17
+ describe ExampleMethods do
18
+ describe "with an included module that is reopened" do
19
+ it "should have repoened methods" do
20
+ method(:module_that_is_reopened_method).should_not be_nil
21
+ end
22
+ end
23
+
24
+ describe "lifecycle" do
25
+ with_sandboxed_options do
26
+ before do
27
+ @options.formatters << mock("formatter", :null_object => true)
28
+ @options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
29
+ @reporter = FakeReporter.new(@options)
30
+ @options.reporter = @reporter
31
+
32
+ ExampleGroup.before_all_parts.should == []
33
+ ExampleGroup.before_each_parts.should == []
34
+ ExampleGroup.after_each_parts.should == []
35
+ ExampleGroup.after_all_parts.should == []
36
+ def ExampleGroup.count
37
+ @count ||= 0
38
+ @count = @count + 1
39
+ @count
40
+ end
41
+ end
42
+
43
+ after do
44
+ ExampleGroup.instance_variable_set("@before_all_parts", [])
45
+ ExampleGroup.instance_variable_set("@before_each_parts", [])
46
+ ExampleGroup.instance_variable_set("@after_each_parts", [])
47
+ ExampleGroup.instance_variable_set("@after_all_parts", [])
48
+ end
49
+
50
+ it "should pass before and after callbacks to all ExampleGroup subclasses" do
51
+ ExampleGroup.before(:suite) do
52
+ ExampleGroup.count.should == 1
53
+ end
54
+
55
+ ExampleGroup.before(:all) do
56
+ ExampleGroup.count.should == 2
57
+ end
58
+
59
+ ExampleGroup.before(:each) do
60
+ ExampleGroup.count.should == 3
61
+ end
62
+
63
+ ExampleGroup.after(:each) do
64
+ ExampleGroup.count.should == 4
65
+ end
66
+
67
+ ExampleGroup.after(:all) do
68
+ ExampleGroup.count.should == 5
69
+ end
70
+
71
+ ExampleGroup.after(:suite) do
72
+ ExampleGroup.count.should == 6
73
+ end
74
+
75
+ Class.new(ExampleGroup) do
76
+ it "should use ExampleMethods callbacks" do end
77
+ end
78
+ @options.run_examples
79
+ ExampleGroup.count.should == 7
80
+ end
81
+
82
+ describe "eval_block" do
83
+ before(:each) do
84
+ @example_group = Class.new(ExampleGroup)
85
+ end
86
+
87
+ describe "with a given description" do
88
+ it "should provide the given description" do
89
+ @example = @example_group.it("given description") { 2.should == 2 }
90
+ @example.eval_block
91
+ @example.description.should == "given description"
92
+ end
93
+ end
94
+
95
+ describe "with no given description" do
96
+ it "should provide the generated description" do
97
+ @example = @example_group.it { 2.should == 2 }
98
+ @example.eval_block
99
+ @example.description.should == "should == 2"
100
+ end
101
+ end
102
+
103
+ describe "with no implementation" do
104
+ it "should raise an NotYetImplementedError" do
105
+ lambda {
106
+ @example = @example_group.it
107
+ @example.eval_block
108
+ }.should raise_error(Spec::Example::NotYetImplementedError, "Not Yet Implemented")
109
+ end
110
+
111
+ def extract_error(&blk)
112
+ begin
113
+ blk.call
114
+ rescue Exception => e
115
+ return e
116
+ end
117
+
118
+ nil
119
+ end
120
+
121
+ it "should use the proper file and line number for the NotYetImplementedError" do
122
+ file = __FILE__
123
+ line_number = __LINE__ + 3
124
+
125
+ error = extract_error do
126
+ @example = @example_group.it
127
+ @example.eval_block
128
+ end
129
+
130
+ error.pending_caller.should == "#{file}:#{line_number}"
131
+ end
132
+ end
133
+ end
134
+ end
135
+ end
136
+
137
+ describe "#implementation_backtrace" do
138
+ it "returns the backtrace of where the implementation was defined" do
139
+ example_group = Class.new(ExampleGroup) do
140
+ it "should use ExampleMethods callbacks" do
141
+ end
142
+ end
143
+ example = example_group.examples.first
144
+ example.implementation_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-4}")
145
+ end
146
+ end
147
+
148
+ describe "#__full_description" do
149
+ it "should return the full description of the ExampleGroup and Example" do
150
+ example_group = Class.new(ExampleGroup).describe("An ExampleGroup") do
151
+ it "should do something" do
152
+ end
153
+ end
154
+ example = example_group.examples.first
155
+ example.__full_description.should == "An ExampleGroup should do something"
156
+ end
157
+ end
158
+ end
159
+
160
+ describe "#options" do
161
+ it "should expose the options hash" do
162
+ example_group = Class.new(ExampleGroup)
163
+ example = example_group.example "name", :this => 'that' do; end
164
+ example.options[:this].should == 'that'
165
+ end
166
+ end
167
+
168
+ end
169
+ end
@@ -0,0 +1,194 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Example
5
+ # describe "Spec::Example::ExampleRunner", "#run", :shared => true do
6
+ # before(:each) do
7
+ # @options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new)
8
+ # @reporter = ::Spec::Runner::Reporter.new(@options)
9
+ # @options.reporter = @reporter
10
+ # @example_group_class = Class.new(ExampleGroup) do
11
+ # plugin_mock_framework
12
+ # describe("Some Examples")
13
+ # end
14
+ # end
15
+ #
16
+ # def create_runner(example_definition)
17
+ # example = @example_group_class.new(example_definition)
18
+ # runner = ExampleGroup.new(@options, example)
19
+ # runner.stub!(:verify_mocks)
20
+ # runner.stub!(:teardown_mocks)
21
+ # runner
22
+ # end
23
+ # end
24
+ #
25
+ # describe ExampleRunner, "#run with blank passing example" do
26
+ # it_should_behave_like "Spec::Example::ExampleRunner#run"
27
+ #
28
+ # before do
29
+ # @e = @example_group_class.it("example") {}
30
+ # @runner = create_runner(@e)
31
+ # end
32
+ #
33
+ # it "should send reporter example_started" do
34
+ # @reporter.should_receive(:example_started).with(equal(@e))
35
+ # @runner.run
36
+ # end
37
+ #
38
+ # it "should report its name for dry run" do
39
+ # @options.dry_run = true
40
+ # @reporter.should_receive(:example_finished).with(equal(@e), nil)
41
+ # @runner.run
42
+ # end
43
+ #
44
+ # it "should report success" do
45
+ # @reporter.should_receive(:example_finished).with(equal(@e), nil)
46
+ # @runner.run
47
+ # end
48
+ # end
49
+ #
50
+ # describe ExampleRunner, "#run with a failing example" do
51
+ # predicate_matchers[:is_a] = [:is_a?]
52
+ # it_should_behave_like "Spec::Example::ExampleRunner#run"
53
+ #
54
+ # before do
55
+ # @e = @example_group_class.it("example") do
56
+ # (2+2).should == 5
57
+ # end
58
+ # @runner = create_runner(@e)
59
+ # end
60
+ #
61
+ # it "should report failure due to failure" do
62
+ # @reporter.should_receive(:example_finished).with(
63
+ # equal(@e),
64
+ # is_a(Spec::Expectations::ExpectationNotMetError)
65
+ # )
66
+ # @runner.run
67
+ # end
68
+ # end
69
+ #
70
+ # describe ExampleRunner, "#run with a erroring example" do
71
+ # it_should_behave_like "Spec::Example::ExampleRunner#run"
72
+ #
73
+ # before do
74
+ # @error = error = NonStandardError.new("in body")
75
+ # @example_definition = @example_group_class.it("example") do
76
+ # raise(error)
77
+ # end
78
+ # @runner = create_runner(@example_definition)
79
+ # end
80
+ #
81
+ # it "should report failure due to error" do
82
+ # @reporter.should_receive(:example_finished).with(
83
+ # equal(@example_definition),
84
+ # @error
85
+ # )
86
+ # @runner.run
87
+ # end
88
+ #
89
+ # it "should run after_each block" do
90
+ # @example_group_class.after(:each) do
91
+ # raise("in after_each")
92
+ # end
93
+ # @reporter.should_receive(:example_finished) do |example_definition, error|
94
+ # example_definition.should equal(@example_definition)
95
+ # error.message.should eql("in body")
96
+ # end
97
+ # @runner.run
98
+ # end
99
+ # end
100
+ #
101
+ # describe ExampleRunner, "#run where after_each fails" do
102
+ # it_should_behave_like "Spec::Example::ExampleRunner#run"
103
+ #
104
+ # before do
105
+ # @example_ran = example_ran = false
106
+ # @example_definition = @example_group_class.it("should not run") do
107
+ # example_ran = true
108
+ # end
109
+ # @runner = create_runner(@example_definition)
110
+ # @example_group_class.after(:each) { raise(NonStandardError.new("in after_each")) }
111
+ # end
112
+ #
113
+ # it "should report failure location when in after_each" do
114
+ # @reporter.should_receive(:example_finished) do |example_definition, error|
115
+ # example_definition.should equal(@example_definition)
116
+ # error.message.should eql("in after_each")
117
+ # end
118
+ # @runner.run
119
+ # end
120
+ # end
121
+ #
122
+ # describe ExampleRunner, "#run with use cases" do
123
+ # predicate_matchers[:is_a] = [:is_a?]
124
+ # it_should_behave_like "Spec::Example::ExampleRunner#run"
125
+ #
126
+ # it "should report NO NAME when told to use generated description with --dry-run" do
127
+ # @options.dry_run = true
128
+ # example_definition = @example_group_class.it() do
129
+ # 5.should == 5
130
+ # end
131
+ # runner = create_runner(example_definition)
132
+ #
133
+ # @reporter.should_receive(:example_finished) do |example_definition, error|
134
+ # example_definition.description.should == "NO NAME (Because of --dry-run)"
135
+ # end
136
+ # runner.run
137
+ # end
138
+ #
139
+ # it "should report given name if present with --dry-run" do
140
+ # @options.dry_run = true
141
+ # example_definition = @example_group_class.it("example name") do
142
+ # 5.should == 5
143
+ # end
144
+ # runner = create_runner(example_definition)
145
+ #
146
+ # @reporter.should_receive(:example_finished) do |example_definition, error|
147
+ # example_definition.description.should == "example name"
148
+ # end
149
+ # runner.run
150
+ # end
151
+ #
152
+ # it "should report NO NAME when told to use generated description with no expectations" do
153
+ # example_definition = @example_group_class.it() {}
154
+ # runner = create_runner(example_definition)
155
+ # @reporter.should_receive(:example_finished) do |example, error|
156
+ # example.description.should == "NO NAME (Because there were no expectations)"
157
+ # end
158
+ # runner.run
159
+ # end
160
+ #
161
+ # it "should report NO NAME when told to use generated description and matcher fails" do
162
+ # example_definition = @example_group_class.it() do
163
+ # 5.should "" # Has no matches? method..
164
+ # end
165
+ # runner = create_runner(example_definition)
166
+ #
167
+ # @reporter.should_receive(:example_finished) do |example, error|
168
+ # example_definition.description.should == "NO NAME (Because of Error raised in matcher)"
169
+ # end
170
+ # runner.run
171
+ # end
172
+ #
173
+ # it "should report generated description when told to and it is available" do
174
+ # example_definition = @example_group_class.it() {
175
+ # 5.should == 5
176
+ # }
177
+ # runner = create_runner(example_definition)
178
+ #
179
+ # @reporter.should_receive(:example_finished) do |example_definition, error|
180
+ # example_definition.description.should == "should == 5"
181
+ # end
182
+ # runner.run
183
+ # end
184
+ #
185
+ # it "should unregister description_generated callback (lest a memory leak should build up)" do
186
+ # example_definition = @example_group_class.it("something")
187
+ # runner = create_runner(example_definition)
188
+ #
189
+ # Spec::Matchers.should_receive(:example_finished)
190
+ # runner.run
191
+ # end
192
+ # end
193
+ end
194
+ end