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,56 @@
1
+ require 'spec/matchers'
2
+ require 'spec/expectations/errors'
3
+ require 'spec/expectations/extensions'
4
+ require 'spec/expectations/handler'
5
+
6
+ module Spec
7
+
8
+ # Spec::Expectations lets you set expectations on your objects.
9
+ #
10
+ # result.should == 37
11
+ # team.should have(11).players_on_the_field
12
+ #
13
+ # == How Expectations work.
14
+ #
15
+ # Spec::Expectations adds two methods to Object:
16
+ #
17
+ # should(matcher=nil)
18
+ # should_not(matcher=nil)
19
+ #
20
+ # Both methods take an optional Expression Matcher (See Spec::Matchers).
21
+ #
22
+ # When +should+ receives an Expression Matcher, it calls <tt>matches?(self)</tt>. If
23
+ # it returns +true+, the spec passes and execution continues. If it returns
24
+ # +false+, then the spec fails with the message returned by <tt>matcher.failure_message</tt>.
25
+ #
26
+ # Similarly, when +should_not+ receives a matcher, it calls <tt>matches?(self)</tt>. If
27
+ # it returns +false+, the spec passes and execution continues. If it returns
28
+ # +true+, then the spec fails with the message returned by <tt>matcher.negative_failure_message</tt>.
29
+ #
30
+ # RSpec ships with a standard set of useful matchers, and writing your own
31
+ # matchers is quite simple. See Spec::Matchers for details.
32
+ module Expectations
33
+ class << self
34
+ attr_accessor :differ
35
+
36
+ # raises a Spec::Expectations::ExpectationNotMetError with message
37
+ #
38
+ # When a differ has been assigned and fail_with is passed
39
+ # <code>expected</code> and <code>target</code>, passes them
40
+ # to the differ to append a diff message to the failure message.
41
+ def fail_with(message, expected=nil, target=nil) # :nodoc:
42
+ if Array === message && message.length == 3
43
+ message, expected, target = message[0], message[1], message[2]
44
+ end
45
+ unless (differ.nil? || expected.nil? || target.nil?)
46
+ if expected.is_a?(String)
47
+ message << "\nDiff:" << self.differ.diff_as_string(target.to_s, expected)
48
+ elsif !target.is_a?(Proc)
49
+ message << "\nDiff:" << self.differ.diff_as_object(target, expected)
50
+ end
51
+ end
52
+ Kernel::raise(Spec::Expectations::ExpectationNotMetError.new(message))
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,24 @@
1
+ class Class
2
+ # Creates a new subclass of self, with a name "under" our own name.
3
+ # Example:
4
+ #
5
+ # x = Foo::Bar.subclass('Zap'){}
6
+ # x.name # => Foo::Bar::Zap_1
7
+ # x.superclass.name # => Foo::Bar
8
+ def subclass(base_name, &body)
9
+ klass = Class.new(self)
10
+ class_name = "#{base_name}_#{class_count!}"
11
+ instance_eval do
12
+ const_set(class_name, klass)
13
+ end
14
+ klass.instance_eval(&body)
15
+ klass
16
+ end
17
+
18
+ private
19
+ def class_count!
20
+ @class_count ||= 0
21
+ @class_count += 1
22
+ @class_count
23
+ end
24
+ end
@@ -0,0 +1,87 @@
1
+ module Spec
2
+ module Extensions
3
+ module Main
4
+ # Creates and returns a class that includes the ExampleGroupMethods
5
+ # module. Which ExampleGroup type is created depends on the directory of the file
6
+ # calling this method. For example, Spec::Rails will use different
7
+ # classes for specs living in <tt>spec/models</tt>,
8
+ # <tt>spec/helpers</tt>, <tt>spec/views</tt> and
9
+ # <tt>spec/controllers</tt>.
10
+ #
11
+ # It is also possible to override autodiscovery of the example group
12
+ # type with an options Hash as the last argument:
13
+ #
14
+ # describe "name", :type => :something_special do ...
15
+ #
16
+ # The reason for using different behaviour classes is to have different
17
+ # matcher methods available from within the <tt>describe</tt> block.
18
+ #
19
+ # See Spec::Example::ExampleGroupFactory#register for details about how to
20
+ # register special implementations.
21
+ #
22
+ def describe(*args, &block)
23
+ raise ArgumentError if args.empty?
24
+ raise ArgumentError unless block
25
+ args << {} unless Hash === args.last
26
+ args.last[:spec_path] = File.expand_path(caller(0)[1])
27
+ Spec::Example::ExampleGroupFactory.create_example_group(*args, &block)
28
+ end
29
+ alias :context :describe
30
+
31
+ # Creates an example group that can be shared by other example groups
32
+ #
33
+ # == Examples
34
+ #
35
+ # share_examples_for "All Editions" do
36
+ # it "all editions behaviour" ...
37
+ # end
38
+ #
39
+ # describe SmallEdition do
40
+ # it_should_behave_like "All Editions"
41
+ #
42
+ # it "should do small edition stuff" do
43
+ # ...
44
+ # end
45
+ # end
46
+ def share_examples_for(name, &block)
47
+ describe(name, :shared => true, &block)
48
+ end
49
+
50
+ alias :shared_examples_for :share_examples_for
51
+
52
+ # Creates a Shared Example Group and assigns it to a constant
53
+ #
54
+ # share_as :AllEditions do
55
+ # it "should do all editions stuff" ...
56
+ # end
57
+ #
58
+ # describe SmallEdition do
59
+ # it_should_behave_like AllEditions
60
+ #
61
+ # it "should do small edition stuff" do
62
+ # ...
63
+ # end
64
+ # end
65
+ #
66
+ # And, for those of you who prefer to use something more like Ruby, you
67
+ # can just include the module directly
68
+ #
69
+ # describe SmallEdition do
70
+ # include AllEditions
71
+ #
72
+ # it "should do small edition stuff" do
73
+ # ...
74
+ # end
75
+ # end
76
+ def share_as(name, &block)
77
+ begin
78
+ Object.const_set(name, share_examples_for(name, &block))
79
+ rescue NameError => e
80
+ raise NameError.new(e.message + "\nThe first argument to share_as must be a legal name for a constant\n")
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+
87
+ include Spec::Extensions::Main
@@ -0,0 +1,7 @@
1
+ module Spec
2
+ module MetaClass
3
+ def metaclass
4
+ class << self; self; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ class Object
2
+ def args_and_options(*args)
3
+ options = Hash === args.last ? args.pop : {}
4
+ return args, options
5
+ end
6
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec/extensions/object'
2
+ require 'spec/extensions/class'
3
+ require 'spec/extensions/main'
4
+ require 'spec/extensions/metaclass'
@@ -0,0 +1,6 @@
1
+ class Test::Unit::AutoRunner
2
+ remove_method :process_args
3
+ def process_args(argv)
4
+ true
5
+ end
6
+ end
@@ -0,0 +1,71 @@
1
+ require 'test/unit/testcase'
2
+
3
+ module Test
4
+ module Unit
5
+ # This extension of the standard Test::Unit::TestCase makes RSpec
6
+ # available from within, so that you can do things like:
7
+ #
8
+ # require 'test/unit'
9
+ # require 'spec'
10
+ #
11
+ # class MyTest < Test::Unit::TestCase
12
+ # it "should work with Test::Unit assertions" do
13
+ # assert_equal 4, 2+1
14
+ # end
15
+ #
16
+ # def test_should_work_with_rspec_expectations
17
+ # (3+1).should == 5
18
+ # end
19
+ # end
20
+ #
21
+ # See also Spec::Example::ExampleGroup
22
+ class TestCase
23
+ extend Spec::Example::ExampleGroupMethods
24
+ include Spec::Example::ExampleMethods
25
+
26
+ before(:each) {setup}
27
+ after(:each) {teardown}
28
+
29
+ class << self
30
+ def suite
31
+ Test::Unit::TestSuiteAdapter.new(self)
32
+ end
33
+
34
+ def example_method?(method_name)
35
+ should_method?(method_name) || test_method?(method_name)
36
+ end
37
+
38
+ def test_method?(method_name)
39
+ method_name =~ /^test[_A-Z]./ && (
40
+ instance_method(method_name).arity == 0 ||
41
+ instance_method(method_name).arity == -1
42
+ )
43
+ end
44
+ end
45
+
46
+ def initialize(defined_description, options={}, &implementation)
47
+ @_defined_description = defined_description
48
+
49
+ # TODO - examples fail in rspec-rails if we remove "|| pending_implementation"
50
+ # - find a way to fail without it in rspec's code examples
51
+ @_implementation = implementation || pending_implementation
52
+
53
+ @_result = ::Test::Unit::TestResult.new
54
+ # @method_name is important to set here because it "complies" with Test::Unit's interface.
55
+ # Some Test::Unit extensions depend on @method_name being present.
56
+ @method_name = @_defined_description
57
+ end
58
+
59
+ def run(ignore_this_argument=nil)
60
+ super()
61
+ end
62
+
63
+ private
64
+
65
+ def pending_implementation
66
+ error = Spec::Example::NotYetImplementedError.new(caller)
67
+ lambda { raise(error) }
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,6 @@
1
+ class Test::Unit::TestResult
2
+ alias_method :tu_passed?, :passed?
3
+ def passed?
4
+ return tu_passed? & ::Spec.run
5
+ end
6
+ end
@@ -0,0 +1,34 @@
1
+ module Test
2
+ module Unit
3
+ class TestSuiteAdapter < TestSuite
4
+ attr_reader :example_group, :examples
5
+ alias_method :tests, :examples
6
+ def initialize(example_group)
7
+ @example_group = example_group
8
+ @examples = example_group.examples
9
+ end
10
+
11
+ def name
12
+ example_group.description
13
+ end
14
+
15
+ def run(*args)
16
+ return true unless args.empty?
17
+ example_group.run
18
+ end
19
+
20
+ def size
21
+ example_group.number_of_examples
22
+ end
23
+
24
+ def delete(example)
25
+ examples.delete example
26
+ end
27
+
28
+ def empty?
29
+ examples.empty?
30
+ end
31
+ end
32
+ end
33
+ end
34
+
@@ -0,0 +1,61 @@
1
+ require 'test/unit/ui/console/testrunner'
2
+
3
+ module Test
4
+ module Unit
5
+ module UI
6
+ module Console
7
+ class TestRunner
8
+
9
+ alias_method :started_without_rspec, :started
10
+ def started_with_rspec(result)
11
+ @result = result
12
+ @need_to_output_started = true
13
+ end
14
+ alias_method :started, :started_with_rspec
15
+
16
+ alias_method :test_started_without_rspec, :test_started
17
+ def test_started_with_rspec(name)
18
+ if @need_to_output_started
19
+ if @rspec_io
20
+ @rspec_io.rewind
21
+ output(@rspec_io.read)
22
+ end
23
+ output("Started")
24
+ @need_to_output_started = false
25
+ end
26
+ test_started_without_rspec(name)
27
+ end
28
+ alias_method :test_started, :test_started_with_rspec
29
+
30
+ alias_method :test_finished_without_rspec, :test_finished
31
+ def test_finished_with_rspec(name)
32
+ test_finished_without_rspec(name)
33
+ @ran_test = true
34
+ end
35
+ alias_method :test_finished, :test_finished_with_rspec
36
+
37
+ alias_method :finished_without_rspec, :finished
38
+ def finished_with_rspec(elapsed_time)
39
+ @ran_test ||= false
40
+ if @ran_test
41
+ finished_without_rspec(elapsed_time)
42
+ end
43
+ end
44
+ alias_method :finished, :finished_with_rspec
45
+
46
+ alias_method :setup_mediator_without_rspec, :setup_mediator
47
+ def setup_mediator_with_rspec
48
+ orig_io = @io
49
+ @io = StringIO.new
50
+ setup_mediator_without_rspec
51
+ ensure
52
+ @rspec_io = @io
53
+ @io = orig_io
54
+ end
55
+ alias_method :setup_mediator, :setup_mediator_with_rspec
56
+
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,12 @@
1
+ require 'test/unit'
2
+ require 'test/unit/testresult'
3
+
4
+ require 'spec/interop/test/unit/testcase'
5
+ require 'spec/interop/test/unit/testsuite_adapter'
6
+ require 'spec/interop/test/unit/autorunner'
7
+ require 'spec/interop/test/unit/testresult'
8
+ require 'spec/interop/test/unit/ui/console/testrunner'
9
+
10
+ Spec::Example::ExampleGroupFactory.default(Test::Unit::TestCase)
11
+
12
+ Test::Unit.run = true
@@ -0,0 +1,221 @@
1
+ module Spec
2
+ module Matchers
3
+
4
+ class Be #:nodoc:
5
+ def initialize(*args)
6
+ if args.empty?
7
+ @expected = :satisfy_if
8
+ else
9
+ @expected = parse_expected(args.shift)
10
+ end
11
+ @args = args
12
+ @comparison = ""
13
+ end
14
+
15
+ def matches?(given)
16
+ @given = given
17
+ if handling_predicate?
18
+ begin
19
+ return @result = given.__send__(predicate, *@args)
20
+ rescue => predicate_error
21
+ # This clause should be empty, but rcov will not report it as covered
22
+ # unless something (anything) is executed within the clause
23
+ rcov_error_report = "http://eigenclass.org/hiki.rb?rcov-0.8.0"
24
+ end
25
+
26
+ begin
27
+ return @result = given.__send__(present_tense_predicate, *@args)
28
+ rescue
29
+ raise predicate_error
30
+ end
31
+ else
32
+ return match_or_compare
33
+ end
34
+ end
35
+
36
+ def failure_message
37
+ return "expected #{@comparison}#{expected}, got #{@given.inspect}" unless handling_predicate?
38
+ return "expected #{predicate}#{args_to_s} to return true, got #{@result.inspect}"
39
+ end
40
+
41
+ def negative_failure_message
42
+ return "expected not #{expected}, got #{@given.inspect}" unless handling_predicate?
43
+ return "expected #{predicate}#{args_to_s} to return false, got #{@result.inspect}"
44
+ end
45
+
46
+ def expected
47
+ return "if to be satisfied" if @expected == :satisfy_if
48
+ return true if @expected == :true
49
+ return false if @expected == :false
50
+ return "nil" if @expected == :nil
51
+ return @expected.inspect
52
+ end
53
+
54
+ def match_or_compare
55
+ return @given ? true : false if @expected == :satisfy_if
56
+ return @given == true if @expected == :true
57
+ return @given == false if @expected == :false
58
+ return @given.nil? if @expected == :nil
59
+ return @given < @expected if @less_than
60
+ return @given <= @expected if @less_than_or_equal
61
+ return @given >= @expected if @greater_than_or_equal
62
+ return @given > @expected if @greater_than
63
+ return @given == @expected if @double_equal
64
+ return @given === @expected if @triple_equal
65
+ return @given.equal?(@expected)
66
+ end
67
+
68
+ def ==(expected)
69
+ @prefix = "be "
70
+ @double_equal = true
71
+ @comparison = "== "
72
+ @expected = expected
73
+ self
74
+ end
75
+
76
+ def ===(expected)
77
+ @prefix = "be "
78
+ @triple_equal = true
79
+ @comparison = "=== "
80
+ @expected = expected
81
+ self
82
+ end
83
+
84
+ def <(expected)
85
+ @prefix = "be "
86
+ @less_than = true
87
+ @comparison = "< "
88
+ @expected = expected
89
+ self
90
+ end
91
+
92
+ def <=(expected)
93
+ @prefix = "be "
94
+ @less_than_or_equal = true
95
+ @comparison = "<= "
96
+ @expected = expected
97
+ self
98
+ end
99
+
100
+ def >=(expected)
101
+ @prefix = "be "
102
+ @greater_than_or_equal = true
103
+ @comparison = ">= "
104
+ @expected = expected
105
+ self
106
+ end
107
+
108
+ def >(expected)
109
+ @prefix = "be "
110
+ @greater_than = true
111
+ @comparison = "> "
112
+ @expected = expected
113
+ self
114
+ end
115
+
116
+ def description
117
+ "#{prefix_to_sentence}#{comparison}#{expected_to_sentence}#{args_to_sentence}"
118
+ end
119
+
120
+ private
121
+ def parse_expected(expected)
122
+ if Symbol === expected
123
+ @handling_predicate = true
124
+ ["be_an_","be_a_","be_"].each do |prefix|
125
+ if expected.starts_with?(prefix)
126
+ @prefix = prefix
127
+ return "#{expected.to_s.sub(@prefix,"")}".to_sym
128
+ end
129
+ end
130
+ end
131
+ @prefix = ""
132
+ return expected
133
+ end
134
+
135
+ def handling_predicate?
136
+ return false if [:true, :false, :nil].include?(@expected)
137
+ return @handling_predicate
138
+ end
139
+
140
+ def predicate
141
+ "#{@expected.to_s}?".to_sym
142
+ end
143
+
144
+ def present_tense_predicate
145
+ "#{@expected.to_s}s?".to_sym
146
+ end
147
+
148
+ def args_to_s
149
+ return "" if @args.empty?
150
+ inspected_args = @args.collect{|a| a.inspect}
151
+ return "(#{inspected_args.join(', ')})"
152
+ end
153
+
154
+ def comparison
155
+ @comparison
156
+ end
157
+
158
+ def expected_to_sentence
159
+ split_words(@expected)
160
+ end
161
+
162
+ def prefix_to_sentence
163
+ split_words(@prefix)
164
+ end
165
+
166
+ def split_words(sym)
167
+ sym.to_s.gsub(/_/,' ')
168
+ end
169
+
170
+ def args_to_sentence
171
+ case @args.length
172
+ when 0
173
+ ""
174
+ when 1
175
+ " #{@args[0]}"
176
+ else
177
+ " #{@args[0...-1].join(', ')} and #{@args[-1]}"
178
+ end
179
+ end
180
+
181
+ end
182
+
183
+ # :call-seq:
184
+ # should be
185
+ # should be_true
186
+ # should be_false
187
+ # should be_nil
188
+ # should be_arbitrary_predicate(*args)
189
+ # should_not be_nil
190
+ # should_not be_arbitrary_predicate(*args)
191
+ #
192
+ # Given true, false, or nil, will pass if given value is
193
+ # true, false or nil (respectively). Given no args means
194
+ # the caller should satisfy an if condition (to be or not to be).
195
+ #
196
+ # Predicates are any Ruby method that ends in a "?" and returns true or false.
197
+ # Given be_ followed by arbitrary_predicate (without the "?"), RSpec will match
198
+ # convert that into a query against the target object.
199
+ #
200
+ # The arbitrary_predicate feature will handle any predicate
201
+ # prefixed with "be_an_" (e.g. be_an_instance_of), "be_a_" (e.g. be_a_kind_of)
202
+ # or "be_" (e.g. be_empty), letting you choose the prefix that best suits the predicate.
203
+ #
204
+ # == Examples
205
+ #
206
+ # target.should be
207
+ # target.should be_true
208
+ # target.should be_false
209
+ # target.should be_nil
210
+ # target.should_not be_nil
211
+ #
212
+ # collection.should be_empty #passes if target.empty?
213
+ # "this string".should be_an_intance_of(String)
214
+ #
215
+ # target.should_not be_empty #passes unless target.empty?
216
+ # target.should_not be_old_enough(16) #passes unless target.old_enough?(16)
217
+ def be(*args)
218
+ Matchers::Be.new(*args)
219
+ end
220
+ end
221
+ end