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
data/spec/spec.opts ADDED
@@ -0,0 +1,6 @@
1
+ --colour
2
+ --format
3
+ profile
4
+ --timeout
5
+ 20
6
+ --diff
@@ -0,0 +1,77 @@
1
+ require 'stringio'
2
+
3
+ dir = File.dirname(__FILE__)
4
+ lib_path = File.expand_path("#{dir}/../lib")
5
+ $LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
6
+ $_spec_spec = true # Prevents Kernel.exit in various places
7
+
8
+ require 'spec'
9
+ require 'spec/mocks'
10
+ require 'spec/story'
11
+ spec_classes_path = File.expand_path("#{dir}/../spec/spec/spec_classes")
12
+ require spec_classes_path unless $LOAD_PATH.include?(spec_classes_path)
13
+ require File.dirname(__FILE__) + '/../lib/spec/expectations/differs/default'
14
+
15
+ module Spec
16
+ module Example
17
+ class NonStandardError < Exception; end
18
+ end
19
+
20
+ module Matchers
21
+ def fail
22
+ raise_error(Spec::Expectations::ExpectationNotMetError)
23
+ end
24
+
25
+ def fail_with(message)
26
+ raise_error(Spec::Expectations::ExpectationNotMetError, message)
27
+ end
28
+
29
+ def exception_from(&block)
30
+ exception = nil
31
+ begin
32
+ yield
33
+ rescue StandardError => e
34
+ exception = e
35
+ end
36
+ exception
37
+ end
38
+
39
+ def run_with(options)
40
+ ::Spec::Runner::CommandLine.run(options)
41
+ end
42
+ end
43
+ end
44
+
45
+ def with_sandboxed_options
46
+ attr_reader :options
47
+
48
+ before(:each) do
49
+ @original_rspec_options = ::Spec::Runner.options
50
+ ::Spec::Runner.use(@options = ::Spec::Runner::Options.new(StringIO.new, StringIO.new))
51
+ end
52
+
53
+ after(:each) do
54
+ ::Spec::Runner.use(@original_rspec_options)
55
+ end
56
+
57
+ yield
58
+ end
59
+
60
+ def with_sandboxed_config
61
+ attr_reader :config
62
+
63
+ before(:each) do
64
+ @config = ::Spec::Example::Configuration.new
65
+ @original_configuration = ::Spec::Runner.configuration
66
+ spec_configuration = @config
67
+ ::Spec::Runner.instance_eval {@configuration = spec_configuration}
68
+ end
69
+
70
+ after(:each) do
71
+ original_configuration = @original_configuration
72
+ ::Spec::Runner.instance_eval {@configuration = original_configuration}
73
+ ::Spec::Example::ExampleGroupFactory.reset
74
+ end
75
+
76
+ yield
77
+ end
data/stories/all.rb ADDED
@@ -0,0 +1,5 @@
1
+ require File.join(File.dirname(__FILE__), *%w[helper])
2
+
3
+ %w[configuration example_groups interop mock_framework_integration stories].each do |dir|
4
+ require File.join(File.dirname(__FILE__), "#{dir}/stories")
5
+ end
@@ -0,0 +1,21 @@
1
+ Story: before suite
2
+ As a developer using rspec
3
+ I want to define before blocks in the global configuration
4
+ So that I can define global things globally
5
+
6
+ Scenario: running with ruby
7
+
8
+ Given the file ../resources/spec/before_blocks_example.rb
9
+
10
+ When I run it with the ruby interpreter
11
+
12
+ Then the stdout should match "3 examples, 0 failures"
13
+
14
+ Scenario: running with spec
15
+
16
+ Given the file ../resources/spec/before_blocks_example.rb
17
+
18
+ When I run it with the spec script
19
+
20
+ Then the stdout should match "3 examples, 0 failures"
21
+
@@ -0,0 +1,7 @@
1
+ require File.join(File.dirname(__FILE__), *%w[.. helper])
2
+
3
+ with_steps_for :running_rspec do
4
+ Dir["#{File.dirname(__FILE__)}/*"].each do |file|
5
+ run file if File.file?(file) && !(file =~ /\.rb$/)
6
+ end
7
+ end
@@ -0,0 +1,45 @@
1
+ Story: autogenerated docstrings
2
+
3
+ As an RSpec user
4
+ I want examples to generate their own names
5
+ So that I can reduce duplication between example names and example code
6
+
7
+ Scenario: run passing examples with ruby
8
+ Given the file ../../examples/pure/autogenerated_docstrings_example.rb
9
+
10
+ When I run it with the ruby interpreter -fs
11
+
12
+ Then the stdout should match /should equal 5/
13
+ And the stdout should match /should be < 5/
14
+ And the stdout should match /should include "a"/
15
+ And the stdout should match /should respond to #size/
16
+
17
+ Scenario: run failing examples with ruby
18
+ Given the file ../../failing_examples/failing_autogenerated_docstrings_example.rb
19
+
20
+ When I run it with the ruby interpreter -fs
21
+
22
+ Then the stdout should match /should equal 2/
23
+ And the stdout should match /should be > 5/
24
+ And the stdout should match /should include "b"/
25
+ And the stdout should match /should not respond to #size/
26
+
27
+ Scenario: run passing examples with spec
28
+ Given the file ../../examples/pure/autogenerated_docstrings_example.rb
29
+
30
+ When I run it with the spec script -fs
31
+
32
+ Then the stdout should match /should equal 5/
33
+ And the stdout should match /should be < 5/
34
+ And the stdout should match /should include "a"/
35
+ And the stdout should match /should respond to #size/
36
+
37
+ Scenario: run failing examples with spec
38
+ Given the file ../../failing_examples/failing_autogenerated_docstrings_example.rb
39
+
40
+ When I run it with the spec script -fs
41
+
42
+ Then the stdout should match /should equal 2/
43
+ And the stdout should match /should be > 5/
44
+ And the stdout should match /should include "b"/
45
+ And the stdout should match /should not respond to #size/
@@ -0,0 +1,17 @@
1
+ Story: Spec::ExampleGroup with should methods
2
+
3
+ As an RSpec adopter accustomed to classes and methods
4
+ I want to use should_* methods in an ExampleGroup
5
+ So that I use RSpec with classes and methods that look more like RSpec examples
6
+
7
+ Scenario: Run with ruby
8
+ Given the file spec/example_group_with_should_methods.rb
9
+ When I run it with the ruby interpreter
10
+ Then the exit code should be 256
11
+ And the stdout should match "2 examples, 1 failure"
12
+
13
+ Scenario: Run with spec
14
+ Given the file spec/example_group_with_should_methods.rb
15
+ When I run it with the spec script
16
+ Then the exit code should be 256
17
+ And the stdout should match "2 examples, 1 failure"
@@ -0,0 +1,17 @@
1
+ Story: Nested example groups
2
+
3
+ As an RSpec user
4
+ I want to nest examples groups
5
+ So that I can better organize my examples
6
+
7
+ Scenario: Run with ruby
8
+ Given the file ../../examples/pure/stack_spec_with_nested_example_groups.rb
9
+ When I run it with the ruby interpreter -fs
10
+ Then the stdout should match /Stack \(empty\)/
11
+ And the stdout should match /Stack \(full\)/
12
+
13
+ Scenario: Run with ruby
14
+ Given the file ../../examples/pure/stack_spec_with_nested_example_groups.rb
15
+ When I run it with the spec script -fs
16
+ Then the stdout should match /Stack \(empty\)/
17
+ And the stdout should match /Stack \(full\)/
@@ -0,0 +1,25 @@
1
+ Story: Getting correct output
2
+
3
+ As an RSpec user
4
+ I want to see output only once
5
+ So that I don't get confused
6
+
7
+ Scenario: Run with ruby
8
+ Given the file spec/simple_spec.rb
9
+ When I run it with the ruby interpreter
10
+ Then the exit code should be 0
11
+ And the stdout should not match /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/m
12
+ And the stdout should match "1 example, 0 failures"
13
+
14
+ Scenario: Run with CommandLine object
15
+ Given the file spec/simple_spec.rb
16
+ When I run it with the CommandLine object
17
+ Then the exit code should be 0
18
+ And the stdout should not match "Loaded suite"
19
+ And the stdout should not match /\d+ tests, \d+ assertions, \d+ failures, \d+ errors/m
20
+ And the stdout should match "1 example, 0 failures"
21
+
22
+ Scenario: Tweak backtrace
23
+ Given the file stories/failing_story.rb
24
+ When I run it with the ruby interpreter
25
+ Then the stdout should not match /\/lib\/spec\//
@@ -0,0 +1,7 @@
1
+ require File.join(File.dirname(__FILE__), *%w[.. helper])
2
+
3
+ with_steps_for :running_rspec do
4
+ Dir["#{File.dirname(__FILE__)}/*"].each do |file|
5
+ run file if File.file?(file) && !(file =~ /\.rb$/)
6
+ end
7
+ end
data/stories/helper.rb ADDED
@@ -0,0 +1,6 @@
1
+ $LOAD_PATH.unshift File.expand_path("#{File.dirname(__FILE__)}/../lib")
2
+ require 'spec'
3
+ require 'tempfile'
4
+ require File.join(File.dirname(__FILE__), *%w[resources matchers smart_match])
5
+ require File.join(File.dirname(__FILE__), *%w[resources helpers story_helper])
6
+ require File.join(File.dirname(__FILE__), *%w[resources steps running_rspec])
@@ -0,0 +1,30 @@
1
+ Story: Spec and test together
2
+
3
+ As an RSpec adopter with existing Test::Unit tests
4
+ I want to run a few specs alongside my existing Test::Unit tests
5
+ So that I can experience a smooth, gradual migration path
6
+
7
+ Scenario: Run with ruby
8
+ Given the file test/spec_and_test_together.rb
9
+
10
+ When I run it with the ruby interpreter -fs
11
+
12
+ Then the exit code should be 256
13
+ And the stdout should match "ATest"
14
+ And the stdout should match "Test::Unit::AssertionFailedError in 'An Example should fail with assert'"
15
+ And the stdout should match "'An Example should fail with should' FAILED"
16
+ And the stdout should match "10 examples, 6 failures"
17
+ And the stdout should match /expected: 40,\s*got: 4/m
18
+ And the stdout should match /expected: 50,\s*got: 5/m
19
+ Scenario: Run with spec
20
+ Given the file test/spec_and_test_together.rb
21
+
22
+ When I run it with the spec script -fs
23
+
24
+ Then the exit code should be 256
25
+ Ands the stdout should match "ATest"
26
+ And the stdout should match "Test::Unit::AssertionFailedError in 'An Example should fail with assert'"
27
+ And the stdout should match "'An Example should fail with should' FAILED"
28
+ And the stdout should match "10 examples, 6 failures"
29
+ And the stdout should match /expected: 40,\s*got: 4/m
30
+ And the stdout should match /expected: 50,\s*got: 5/m
@@ -0,0 +1,7 @@
1
+ require File.join(File.dirname(__FILE__), *%w[.. helper])
2
+
3
+ with_steps_for :running_rspec do
4
+ Dir["#{File.dirname(__FILE__)}/*"].each do |file|
5
+ run file if File.file?(file) && !(file =~ /\.rb$/)
6
+ end
7
+ end
@@ -0,0 +1,17 @@
1
+ Story: Test::Unit::TestCase extended by rspec with should methods
2
+
3
+ As an RSpec adopter with existing Test::Unit tests
4
+ I want to use should_* methods in a Test::Unit::TestCase
5
+ So that I use RSpec with classes and methods that look more like RSpec examples
6
+
7
+ Scenario: Run with ruby
8
+ Given the file test/test_case_with_should_methods.rb
9
+ When I run it with the ruby interpreter
10
+ Then the exit code should be 256
11
+ And the stdout should match "5 examples, 3 failures"
12
+
13
+ Scenario: Run with spec
14
+ Given the file test/test_case_with_should_methods.rb
15
+ When I run it with the spec script
16
+ Then the exit code should be 256
17
+ And the stdout should match "5 examples, 3 failures"
@@ -0,0 +1,7 @@
1
+ require File.join(File.dirname(__FILE__), *%w[.. helper])
2
+
3
+ with_steps_for :running_rspec do
4
+ Dir["#{File.dirname(__FILE__)}/*"].each do |file|
5
+ run file if File.file?(file) && !(file =~ /\.rb$/)
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ Story: Getting correct output with flexmock
2
+
3
+ As an RSpec user who prefers flexmock
4
+ I want to be able to use flexmock without rspec mocks interfering
5
+
6
+ Scenario: Mock with flexmock
7
+ Given the file spec/spec_with_flexmock.rb
8
+ When I run it with the ruby interpreter
9
+ Then the exit code should be 0
@@ -0,0 +1,3 @@
1
+ This directory contains stories that are currently not passing
2
+ because they are new or they represent regressions.
3
+
@@ -0,0 +1,9 @@
1
+ $:.push File.join(File.dirname(__FILE__), *%w[.. .. .. lib])
2
+ require 'spec'
3
+
4
+ # Uncommenting next line will break the output story (no output!!)
5
+ # rspec_options
6
+ options = Spec::Runner::OptionParser.parse(
7
+ ARGV, $stderr, $stdout
8
+ )
9
+ Spec::Runner::CommandLine.run(options)
@@ -0,0 +1,16 @@
1
+ require 'spec/story'
2
+ require File.dirname(__FILE__) + '/../../../spec/ruby_forker'
3
+
4
+ module StoryHelper
5
+ include RubyForker
6
+
7
+ def spec(args, stderr)
8
+ ruby("#{File.dirname(__FILE__) + '/../../../bin/spec'} #{args}", stderr)
9
+ end
10
+
11
+ def cmdline(args, stderr)
12
+ ruby("#{File.dirname(__FILE__) + '/../../resources/helpers/cmdline.rb'} #{args}", stderr)
13
+ end
14
+
15
+ Spec::Story::World.send :include, self
16
+ end
@@ -0,0 +1,37 @@
1
+ module Spec
2
+ module Matchers
3
+ class SmartMatch
4
+ def initialize(expected)
5
+ @expected = expected
6
+ end
7
+
8
+ def matches?(actual)
9
+ @actual = actual
10
+ # Satisfy expectation here. Return false or raise an error if it's not met.
11
+
12
+ if @expected =~ /^\/.*\/?$/ || @expected =~ /^".*"$/
13
+ regex_or_string = eval(@expected)
14
+ if Regexp === regex_or_string
15
+ (@actual =~ regex_or_string) ? true : false
16
+ else
17
+ @actual.index(regex_or_string) != nil
18
+ end
19
+ else
20
+ false
21
+ end
22
+ end
23
+
24
+ def failure_message
25
+ "expected #{@actual.inspect} to smart_match #{@expected.inspect}, but it didn't"
26
+ end
27
+
28
+ def negative_failure_message
29
+ "expected #{@actual.inspect} not to smart_match #{@expected.inspect}, but it did"
30
+ end
31
+ end
32
+
33
+ def smart_match(expected)
34
+ SmartMatch.new(expected)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,32 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), *%w[.. .. .. lib])
2
+ require 'spec'
3
+
4
+ Spec::Runner.configure do |config|
5
+ config.before(:suite) do
6
+ $before_suite = "before suite"
7
+ end
8
+ config.before(:each) do
9
+ @before_each = "before each"
10
+ end
11
+ config.before(:all) do
12
+ @before_all = "before all"
13
+ end
14
+ end
15
+
16
+ describe "stuff in before blocks" do
17
+ describe "with :suite" do
18
+ it "should be available in the example" do
19
+ $before_suite.should == "before suite"
20
+ end
21
+ end
22
+ describe "with :all" do
23
+ it "should be available in the example" do
24
+ @before_all.should == "before all"
25
+ end
26
+ end
27
+ describe "with :each" do
28
+ it "should be available in the example" do
29
+ @before_each.should == "before each"
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,12 @@
1
+ $:.push File.join(File.dirname(__FILE__), *%w[.. .. .. lib])
2
+ require 'spec'
3
+
4
+ class MySpec < Spec::ExampleGroup
5
+ def should_pass_with_should
6
+ 1.should == 1
7
+ end
8
+
9
+ def should_fail_with_should
10
+ 1.should == 2
11
+ end
12
+ end