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,450 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe Options do
6
+ before(:each) do
7
+ @err = StringIO.new('')
8
+ @out = StringIO.new('')
9
+ @options = Options.new(@err, @out)
10
+ end
11
+
12
+ after(:each) do
13
+ Spec::Expectations.differ = nil
14
+ end
15
+
16
+ describe "#examples" do
17
+ it "should default to empty array" do
18
+ @options.examples.should == []
19
+ end
20
+ end
21
+
22
+ describe "#include_pattern" do
23
+ it "should default to '**/*_spec.rb'" do
24
+ @options.filename_pattern.should == "**/*_spec.rb"
25
+ end
26
+ end
27
+
28
+ describe "#files_to_load" do
29
+
30
+ it "should load files not following pattern if named explicitly" do
31
+ file = File.expand_path(File.dirname(__FILE__) + "/resources/a_bar.rb")
32
+ @options.files << file
33
+ @options.files_to_load.should include(file)
34
+ end
35
+
36
+ describe "with default --pattern" do
37
+ it "should load files named _spec.rb" do
38
+ dir = File.expand_path(File.dirname(__FILE__) + "/resources/")
39
+ @options.files << dir
40
+ @options.files_to_load.should == ["#{dir}/a_spec.rb"]
41
+ end
42
+ end
43
+
44
+ describe "with explicit pattern (single)" do
45
+ before(:each) do
46
+ @options.filename_pattern = "**/*_foo.rb"
47
+ end
48
+
49
+ it "should load files following pattern" do
50
+ file = File.expand_path(File.dirname(__FILE__) + "/resources/a_foo.rb")
51
+ @options.files << file
52
+ @options.files_to_load.should include(file)
53
+ end
54
+
55
+ it "should load files in directories following pattern" do
56
+ dir = File.expand_path(File.dirname(__FILE__) + "/resources")
57
+ @options.files << dir
58
+ @options.files_to_load.should include("#{dir}/a_foo.rb")
59
+ end
60
+
61
+ it "should not load files in directories not following pattern" do
62
+ dir = File.expand_path(File.dirname(__FILE__) + "/resources")
63
+ @options.files << dir
64
+ @options.files_to_load.should_not include("#{dir}/a_bar.rb")
65
+ end
66
+ end
67
+
68
+ describe "with explicit pattern (comma,separated,values)" do
69
+
70
+ before(:each) do
71
+ @options.filename_pattern = "**/*_foo.rb,**/*_bar.rb"
72
+ end
73
+
74
+ it "should support comma separated values" do
75
+ dir = File.expand_path(File.dirname(__FILE__) + "/resources")
76
+ @options.files << dir
77
+ @options.files_to_load.should include("#{dir}/a_foo.rb")
78
+ @options.files_to_load.should include("#{dir}/a_bar.rb")
79
+ end
80
+
81
+ it "should support comma separated values with spaces" do
82
+ dir = File.expand_path(File.dirname(__FILE__) + "/resources")
83
+ @options.files << dir
84
+ @options.files_to_load.should include("#{dir}/a_foo.rb")
85
+ @options.files_to_load.should include("#{dir}/a_bar.rb")
86
+ end
87
+
88
+ end
89
+
90
+ end
91
+
92
+ describe "#backtrace_tweaker" do
93
+ it "should default to QuietBacktraceTweaker" do
94
+ @options.backtrace_tweaker.class.should == QuietBacktraceTweaker
95
+ end
96
+ end
97
+
98
+ describe "#dry_run" do
99
+ it "should default to false" do
100
+ @options.dry_run.should == false
101
+ end
102
+ end
103
+
104
+ describe "#context_lines" do
105
+ it "should default to 3" do
106
+ @options.context_lines.should == 3
107
+ end
108
+ end
109
+
110
+ describe "#parse_diff with nil" do
111
+ before(:each) do
112
+ @options.parse_diff nil
113
+ end
114
+
115
+ it "should make diff_format unified" do
116
+ @options.diff_format.should == :unified
117
+ end
118
+
119
+ it "should set Spec::Expectations.differ to be a default differ" do
120
+ Spec::Expectations.differ.class.should ==
121
+ ::Spec::Expectations::Differs::Default
122
+ end
123
+ end
124
+
125
+ describe "#parse_diff with 'unified'" do
126
+ before(:each) do
127
+ @options.parse_diff 'unified'
128
+ end
129
+
130
+ it "should make diff_format unified and uses default differ_class" do
131
+ @options.diff_format.should == :unified
132
+ @options.differ_class.should equal(Spec::Expectations::Differs::Default)
133
+ end
134
+
135
+ it "should set Spec::Expectations.differ to be a default differ" do
136
+ Spec::Expectations.differ.class.should ==
137
+ ::Spec::Expectations::Differs::Default
138
+ end
139
+ end
140
+
141
+ describe "#parse_diff with 'context'" do
142
+ before(:each) do
143
+ @options.parse_diff 'context'
144
+ end
145
+
146
+ it "should make diff_format context and uses default differ_class" do
147
+ @options.diff_format.should == :context
148
+ @options.differ_class.should == Spec::Expectations::Differs::Default
149
+ end
150
+
151
+ it "should set Spec::Expectations.differ to be a default differ" do
152
+ Spec::Expectations.differ.class.should ==
153
+ ::Spec::Expectations::Differs::Default
154
+ end
155
+ end
156
+
157
+ describe "#parse_diff with Custom::Differ" do
158
+ before(:each) do
159
+ @options.parse_diff 'Custom::Differ'
160
+ end
161
+
162
+ it "should use custom differ_class" do
163
+ @options.diff_format.should == :custom
164
+ @options.differ_class.should == Custom::Differ
165
+ Spec::Expectations.differ.should be_instance_of(Custom::Differ)
166
+ end
167
+
168
+ it "should set Spec::Expectations.differ to be a default differ" do
169
+ Spec::Expectations.differ.class.should ==
170
+ ::Custom::Differ
171
+ end
172
+ end
173
+
174
+ describe "#parse_diff with missing class name" do
175
+ it "should raise error" do
176
+ lambda { @options.parse_diff "Custom::MissingDiffer" }.should raise_error(NameError)
177
+ @err.string.should match(/Couldn't find differ class Custom::MissingDiffer/n)
178
+ end
179
+ end
180
+
181
+ describe "#parse_example" do
182
+ it "with argument thats not a file path, sets argument as the example" do
183
+ example = "something or other"
184
+ File.file?(example).should == false
185
+ @options.parse_example example
186
+ @options.examples.should eql(["something or other"])
187
+ end
188
+
189
+ it "with argument that is a file path, sets examples to contents of the file" do
190
+ example = "#{File.dirname(__FILE__)}/examples.txt"
191
+ File.should_receive(:file?).with(example).and_return(true)
192
+ file = StringIO.new("Sir, if you were my husband, I would poison your drink.\nMadam, if you were my wife, I would drink it.")
193
+ File.should_receive(:open).with(example).and_return(file)
194
+
195
+ @options.parse_example example
196
+ @options.examples.should eql([
197
+ "Sir, if you were my husband, I would poison your drink.",
198
+ "Madam, if you were my wife, I would drink it."
199
+ ])
200
+ end
201
+ end
202
+
203
+ describe "#examples_should_not_be_run" do
204
+ it "should cause #run_examples to return true and do nothing" do
205
+ @options.examples_should_not_be_run
206
+ ExampleGroupRunner.should_not_receive(:new)
207
+
208
+ @options.run_examples.should be_true
209
+ end
210
+ end
211
+
212
+ describe "#load_class" do
213
+ it "should raise error when not class name" do
214
+ lambda do
215
+ @options.send(:load_class, 'foo', 'fruit', '--food')
216
+ end.should raise_error('"foo" is not a valid class name')
217
+ end
218
+ end
219
+
220
+ describe "#reporter" do
221
+ it "returns a Reporter" do
222
+ @options.reporter.should be_instance_of(Reporter)
223
+ @options.reporter.options.should === @options
224
+ end
225
+ end
226
+
227
+ describe "#add_example_group affecting passed in example_group" do
228
+ it "runs all examples when options.examples is nil" do
229
+ example_1_has_run = false
230
+ example_2_has_run = false
231
+ @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
232
+ it "runs 1" do
233
+ example_1_has_run = true
234
+ end
235
+ it "runs 2" do
236
+ example_2_has_run = true
237
+ end
238
+ end
239
+
240
+ @options.examples = nil
241
+
242
+ @options.add_example_group @example_group
243
+ @options.run_examples
244
+ example_1_has_run.should be_true
245
+ example_2_has_run.should be_true
246
+ end
247
+
248
+ it "keeps all example_definitions when options.examples is empty" do
249
+ example_1_has_run = false
250
+ example_2_has_run = false
251
+ @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
252
+ it "runs 1" do
253
+ example_1_has_run = true
254
+ end
255
+ it "runs 2" do
256
+ example_2_has_run = true
257
+ end
258
+ end
259
+
260
+ @options.examples = []
261
+
262
+ @options.add_example_group @example_group
263
+ @options.run_examples
264
+ example_1_has_run.should be_true
265
+ example_2_has_run.should be_true
266
+ end
267
+ end
268
+
269
+ describe "#add_example_group affecting example_group" do
270
+ it "adds example_group when example_group has example_definitions and is not shared" do
271
+ @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
272
+ it "uses this example_group" do
273
+ end
274
+ end
275
+
276
+ @options.number_of_examples.should == 0
277
+ @options.add_example_group @example_group
278
+ @options.number_of_examples.should == 1
279
+ @options.example_groups.length.should == 1
280
+ end
281
+ end
282
+
283
+ describe "#remove_example_group" do
284
+ it "should remove the ExampleGroup from the list of ExampleGroups" do
285
+ @example_group = Class.new(::Spec::Example::ExampleGroup).describe("Some Examples") do
286
+ end
287
+ @options.add_example_group @example_group
288
+ @options.example_groups.should include(@example_group)
289
+
290
+ @options.remove_example_group @example_group
291
+ @options.example_groups.should_not include(@example_group)
292
+ end
293
+ end
294
+
295
+ describe "#run_examples" do
296
+ describe "when not given a custom runner" do
297
+ it "should use the standard" do
298
+ runner = ::Spec::Runner::ExampleGroupRunner.new(@options)
299
+ ::Spec::Runner::ExampleGroupRunner.should_receive(:new).
300
+ with(@options).
301
+ and_return(runner)
302
+ @options.user_input_for_runner = nil
303
+
304
+ @options.run_examples
305
+ end
306
+ end
307
+
308
+ describe "when given a custom runner" do
309
+ it "should use the custom runner" do
310
+ runner = Custom::ExampleGroupRunner.new(@options, nil)
311
+ Custom::ExampleGroupRunner.should_receive(:new).
312
+ with(@options, nil).
313
+ and_return(runner)
314
+ @options.user_input_for_runner = "Custom::ExampleGroupRunner"
315
+
316
+ @options.run_examples
317
+ end
318
+
319
+ it "should use the custom runner with extra options" do
320
+ runner = Custom::ExampleGroupRunner.new(@options, 'something')
321
+ Custom::ExampleGroupRunner.should_receive(:new).
322
+ with(@options, 'something').
323
+ and_return(runner)
324
+ @options.user_input_for_runner = "Custom::ExampleGroupRunner:something"
325
+
326
+ @options.run_examples
327
+ end
328
+ end
329
+
330
+ describe "when there are examples" do
331
+ before(:each) do
332
+ @example_group = Class.new(::Spec::Example::ExampleGroup)
333
+ @options.add_example_group @example_group
334
+ @options.formatters << Formatter::BaseTextFormatter.new(@options, @out)
335
+ end
336
+
337
+ it "runs the Examples and outputs the result" do
338
+ @options.run_examples
339
+ @out.string.should include("0 examples, 0 failures")
340
+ end
341
+
342
+ it "sets #examples_run? to true" do
343
+ @options.examples_run?.should be_false
344
+ @options.run_examples
345
+ @options.examples_run?.should be_true
346
+ end
347
+
348
+ describe "and the suite passes" do
349
+ before do
350
+ @example_group.should_receive(:run).and_return(true)
351
+ end
352
+
353
+ it "invokes after_suite_parts with true" do
354
+ success_result = nil
355
+ @options.after_suite_parts << lambda do |success|
356
+ success_result = success
357
+ end
358
+
359
+ @options.run_examples
360
+ success_result.should be_true
361
+ end
362
+ end
363
+
364
+ describe "and the suite fails" do
365
+ before do
366
+ @example_group.should_receive(:run).and_return(false)
367
+ end
368
+
369
+ it "invokes after_suite_parts with false" do
370
+ success_result = nil
371
+ @options.after_suite_parts << lambda do |success|
372
+ success_result = success
373
+ end
374
+
375
+ @options.run_examples
376
+ success_result.should be_false
377
+ end
378
+ end
379
+
380
+ describe "when using heckle runner" do
381
+ before(:each) do
382
+ @heckle_runner_mock = mock("HeckleRunner")
383
+ @options.heckle_runner = @heckle_runner_mock
384
+ end
385
+
386
+ it "should heckle" do
387
+ @heckle_runner_mock.should_receive(:heckle_with)
388
+ @options.run_examples
389
+ end
390
+
391
+ it "shouldn't heckle recursively" do
392
+ heckled = false
393
+ @heckle_runner_mock.should_receive(:heckle_with) {
394
+ heckled.should == false
395
+ heckled = true
396
+ @options.run_examples
397
+ }
398
+ @options.run_examples
399
+ end
400
+
401
+ it "shouldn't load spec files twice" do
402
+ example_runner = mock("ExampleGroupRunner")
403
+ example_runner_inside_heckle = mock("ExampleGroupRunner inside Heckle")
404
+
405
+ ExampleGroupRunner.should_receive(:new).twice.and_return(
406
+ example_runner, example_runner_inside_heckle
407
+ )
408
+
409
+ example_runner.stub!(:run)
410
+ example_runner.should_receive(:load_files)
411
+ @heckle_runner_mock.stub!(:heckle_with).and_return { @options.run_examples }
412
+ example_runner_inside_heckle.stub!(:run)
413
+ example_runner_inside_heckle.should_not_receive(:load_files)
414
+
415
+ @options.run_examples
416
+ end
417
+ end
418
+ end
419
+
420
+ describe "when there are no examples" do
421
+ before(:each) do
422
+ @options.formatters << Formatter::BaseTextFormatter.new(@options, @out)
423
+ end
424
+
425
+ it "does not run Examples and does not output a result" do
426
+ @options.run_examples
427
+ @out.string.should_not include("examples")
428
+ @out.string.should_not include("failures")
429
+ end
430
+
431
+ it "sets #examples_run? to false" do
432
+ @options.examples_run?.should be_false
433
+ @options.run_examples
434
+ @options.examples_run?.should be_false
435
+ end
436
+
437
+ it "invokes after_suite_parts with true" do
438
+ success_result = nil
439
+ @options.after_suite_parts << lambda do |success|
440
+ success_result = success
441
+ end
442
+
443
+ @options.run_examples
444
+ success_result.should be_true
445
+ end
446
+ end
447
+ end
448
+ end
449
+ end
450
+ end
@@ -0,0 +1,7 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ describe "Running an Example" do
4
+ it "should not output twice" do
5
+ true.should be_true
6
+ end
7
+ end