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,584 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ module Spec
4
+ module Example
5
+ describe 'ExampleGroupMethods' do
6
+ with_sandboxed_options do
7
+ attr_reader :example_group, :result, :reporter
8
+ before(:each) do
9
+ # See http://rspec.lighthouseapp.com/projects/5645-rspec/tickets/525-arity-changed-on-partial-mocks#ticket-525-2
10
+ method_with_three_args = lambda { |arg1, arg2, arg3| }
11
+ options.formatters << mock("formatter", :null_object => true, :example_pending => method_with_three_args)
12
+ options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
13
+ @reporter = FakeReporter.new(@options)
14
+ options.reporter = reporter
15
+ @example_group = Class.new(ExampleGroup) do
16
+ describe("ExampleGroup")
17
+ it "does nothing"
18
+ end
19
+ class << example_group
20
+ public :include
21
+ end
22
+ @result = nil
23
+ end
24
+
25
+ after(:each) do
26
+ ExampleGroup.reset
27
+ end
28
+
29
+ ["describe","context"].each do |method|
30
+ describe "##{method}" do
31
+ describe "when creating an ExampleGroup" do
32
+ attr_reader :child_example_group
33
+ before do
34
+ @child_example_group = @example_group.send method, "Another ExampleGroup" do
35
+ it "should pass" do
36
+ true.should be_true
37
+ end
38
+ end
39
+ end
40
+
41
+ it "should create a subclass of the ExampleGroup when passed a block" do
42
+ child_example_group.superclass.should == @example_group
43
+ @options.example_groups.should include(child_example_group)
44
+ end
45
+
46
+ it "should not inherit examples" do
47
+ child_example_group.examples.length.should == 1
48
+ end
49
+ end
50
+
51
+ describe "when creating a SharedExampleGroup" do
52
+ attr_reader :name, :shared_example_group
53
+ before do
54
+ @name = "A Shared ExampleGroup"
55
+ @shared_example_group = @example_group.send method, name, :shared => true do
56
+ it "should pass" do
57
+ true.should be_true
58
+ end
59
+ end
60
+ end
61
+
62
+ after do
63
+ SharedExampleGroup.shared_example_groups.delete_if do |registered_shared_example_group|
64
+ registered_shared_example_group == shared_example_group
65
+ end
66
+ end
67
+
68
+ it "should create a SharedExampleGroup" do
69
+ SharedExampleGroup.find_shared_example_group(name).should == shared_example_group
70
+ end
71
+ end
72
+
73
+ end
74
+ end
75
+
76
+ describe "#it" do
77
+ it "should should create an example instance" do
78
+ lambda {
79
+ @example_group.it("")
80
+ }.should change { @example_group.examples.length }.by(1)
81
+ end
82
+ end
83
+
84
+ describe "#xit and #xspecify" do
85
+ before(:each) do
86
+ Kernel.stub!(:warn)
87
+ end
88
+
89
+ it "should NOT create an example instance" do
90
+ lambda {
91
+ @example_group.xit("")
92
+ }.should_not change(@example_group.examples, :length)
93
+
94
+ lambda {
95
+ @example_group.xspecify("")
96
+ }.should_not change(@example_group.examples, :length)
97
+ end
98
+
99
+ it "should warn that it is disabled" do
100
+ Kernel.should_receive(:warn).with("Example disabled: foo").twice
101
+ @example_group.xit("foo")
102
+ @example_group.xspecify("foo")
103
+ end
104
+ end
105
+
106
+ describe "#examples" do
107
+ it "should have Examples" do
108
+ example_group = Class.new(ExampleGroup) do
109
+ describe('example')
110
+ it "should pass" do
111
+ 1.should == 1
112
+ end
113
+ end
114
+ example_group.examples.length.should == 1
115
+ example_group.examples.first.description.should == "should pass"
116
+ end
117
+
118
+ it "should not include methods that begin with test (only when TU interop is loaded)" do
119
+ example_group = Class.new(ExampleGroup) do
120
+ describe('example')
121
+ def test_any_args(*args)
122
+ true.should be_true
123
+ end
124
+ def test_something
125
+ 1.should == 1
126
+ end
127
+ def test
128
+ raise "This is not a real test"
129
+ end
130
+ def testify
131
+ raise "This is not a real test"
132
+ end
133
+ def should_something
134
+ # forces the run
135
+ end
136
+ end
137
+ example_group.examples.length.should == 1
138
+ example_group.run.should be_true
139
+ end
140
+
141
+ it "should include methods that begin with should and has an arity of 0 in suite" do
142
+ example_group = Class.new(ExampleGroup) do
143
+ describe('example')
144
+ def shouldCamelCase
145
+ true.should be_true
146
+ end
147
+ def should_any_args(*args)
148
+ true.should be_true
149
+ end
150
+ def should_something
151
+ 1.should == 1
152
+ end
153
+ def should_not_something
154
+ 1.should_not == 2
155
+ end
156
+ def should
157
+ raise "This is not a real example"
158
+ end
159
+ def should_not
160
+ raise "This is not a real example"
161
+ end
162
+ end
163
+ example_group = example_group.dup
164
+ example_group.examples.length.should == 4
165
+ descriptions = example_group.examples.collect {|example| example.description}.sort
166
+ descriptions.should include("shouldCamelCase")
167
+ descriptions.should include("should_any_args")
168
+ descriptions.should include("should_something")
169
+ descriptions.should include("should_not_something")
170
+ descriptions.should_not include("should")
171
+ descriptions.should_not include("should_not")
172
+ end
173
+
174
+ it "should not include methods that begin with test_ and has an arity > 0 in suite" do
175
+ example_group = Class.new(ExampleGroup) do
176
+ describe('example')
177
+ def test_invalid(foo)
178
+ 1.should == 1
179
+ end
180
+ def testInvalidCamelCase(foo)
181
+ 1.should == 1
182
+ end
183
+ end
184
+ example_group.examples.length.should == 0
185
+ end
186
+
187
+ it "should not include methods that begin with should_ and has an arity > 0 in suite" do
188
+ example_group = Class.new(ExampleGroup) do
189
+ describe('example')
190
+ def should_invalid(foo)
191
+ 1.should == 2
192
+ end
193
+ def shouldInvalidCamelCase(foo)
194
+ 1.should == 3
195
+ end
196
+ def should_not_invalid(foo)
197
+ 1.should == 4
198
+ end
199
+ def should_valid
200
+ 1.should == 1
201
+ end
202
+ end
203
+ example_group.examples.length.should == 1
204
+ example_group.run.should be_true
205
+ end
206
+
207
+ it "should run should_methods" do
208
+ example_group = Class.new(ExampleGroup) do
209
+ def should_valid
210
+ 1.should == 2
211
+ end
212
+ end
213
+ example_group.examples.length.should == 1
214
+ example_group.run.should be_false
215
+ end
216
+ end
217
+
218
+ describe "#set_description" do
219
+ attr_reader :example_group
220
+ before do
221
+ class << example_group
222
+ public :set_description
223
+ end
224
+ end
225
+
226
+ describe "#set_description(String)" do
227
+ before(:each) do
228
+ example_group.set_description("abc")
229
+ end
230
+
231
+ specify ".description should return the String passed into .set_description" do
232
+ example_group.description.should == "abc"
233
+ end
234
+
235
+ specify ".described_type should provide nil as its type" do
236
+ example_group.described_type.should be_nil
237
+ end
238
+ end
239
+
240
+ describe "#set_description(Type)" do
241
+ before(:each) do
242
+ example_group.set_description(ExampleGroup)
243
+ end
244
+
245
+ specify ".description should return a String representation of that type (fully qualified) as its name" do
246
+ example_group.description.should == "Spec::Example::ExampleGroup"
247
+ end
248
+
249
+ specify ".described_type should return the passed in type" do
250
+ example_group.described_type.should == Spec::Example::ExampleGroup
251
+ end
252
+ end
253
+
254
+ describe "#set_description(String, Type)" do
255
+ before(:each) do
256
+ example_group.set_description("behaving", ExampleGroup)
257
+ end
258
+
259
+ specify ".description should return String then space then Type" do
260
+ example_group.description.should == "behaving Spec::Example::ExampleGroup"
261
+ end
262
+
263
+ specify ".described_type should return the passed in type" do
264
+ example_group.described_type.should == Spec::Example::ExampleGroup
265
+ end
266
+ end
267
+
268
+ describe "#set_description(Type, String not starting with a space)" do
269
+ before(:each) do
270
+ example_group.set_description(ExampleGroup, "behaving")
271
+ end
272
+
273
+ specify ".description should return the Type then space then String" do
274
+ example_group.description.should == "Spec::Example::ExampleGroup behaving"
275
+ end
276
+ end
277
+
278
+ describe "#set_description(Type, String starting with .)" do
279
+ before(:each) do
280
+ example_group.set_description(ExampleGroup, ".behaving")
281
+ end
282
+
283
+ specify ".description should return the Type then String" do
284
+ example_group.description.should == "Spec::Example::ExampleGroup.behaving"
285
+ end
286
+ end
287
+
288
+ describe "#set_description(Type, String containing .)" do
289
+ before(:each) do
290
+ example_group.set_description(ExampleGroup, "calling a.b")
291
+ end
292
+
293
+ specify ".description should return the Type then space then String" do
294
+ example_group.description.should == "Spec::Example::ExampleGroup calling a.b"
295
+ end
296
+ end
297
+
298
+ describe "#set_description(Type, String starting with .)" do
299
+ before(:each) do
300
+ example_group.set_description(ExampleGroup, ".behaving")
301
+ end
302
+
303
+ specify "should return the Type then String" do
304
+ example_group.description.should == "Spec::Example::ExampleGroup.behaving"
305
+ end
306
+ end
307
+
308
+ describe "#set_description(Type, String containing .)" do
309
+ before(:each) do
310
+ example_group.set_description(ExampleGroup, "is #1")
311
+ end
312
+
313
+ specify ".description should return the Type then space then String" do
314
+ example_group.description.should == "Spec::Example::ExampleGroup is #1"
315
+ end
316
+ end
317
+
318
+ describe "#set_description(String, Type, String)" do
319
+ before(:each) do
320
+ example_group.set_description("A", Hash, "with one entry")
321
+ end
322
+
323
+ specify ".description should return the first String then space then Type then second String" do
324
+ example_group.description.should == "A Hash with one entry"
325
+ end
326
+ end
327
+
328
+ describe "#set_description(Hash representing options)" do
329
+ before(:each) do
330
+ example_group.set_description(:a => "b", :spec_path => "blah")
331
+ end
332
+
333
+ it ".spec_path should expand the passed in :spec_path option passed into the constructor" do
334
+ example_group.spec_path.should == File.expand_path("blah")
335
+ end
336
+
337
+ it ".description_options should return all the options passed in" do
338
+ example_group.description_options.should == {:a => "b", :spec_path => "blah"}
339
+ end
340
+
341
+ end
342
+ end
343
+
344
+ describe "#description" do
345
+ it "should return the same description instance for each call" do
346
+ example_group.description.should eql(example_group.description)
347
+ end
348
+
349
+ it "should not add a space when description_text begins with #" do
350
+ child_example_group = Class.new(example_group) do
351
+ describe("#foobar", "Does something")
352
+ end
353
+ child_example_group.description.should == "ExampleGroup#foobar Does something"
354
+ end
355
+
356
+ it "should not add a space when description_text begins with ." do
357
+ child_example_group = Class.new(example_group) do
358
+ describe(".foobar", "Does something")
359
+ end
360
+ child_example_group.description.should == "ExampleGroup.foobar Does something"
361
+ end
362
+
363
+ it "should return the class name if nil" do
364
+ example_group.set_description(nil)
365
+ example_group.description.should =~ /Class:/
366
+ end
367
+
368
+ it "should return the class name if nil" do
369
+ example_group.set_description("")
370
+ example_group.description.should =~ /Class:/
371
+ end
372
+ end
373
+
374
+ describe "#description_parts" do
375
+ it "should return an Array of the current class description args" do
376
+ example_group.description_parts.should == [example_group.description]
377
+ end
378
+
379
+ it "should return an Array of the description args from each class in the hierarchy" do
380
+ child_example_group = Class.new(example_group)
381
+ child_example_group.describe("Child", ExampleGroup)
382
+ child_example_group.description.should_not be_empty
383
+
384
+ grand_child_example_group = Class.new(child_example_group)
385
+ grand_child_example_group.describe("GrandChild", ExampleGroup)
386
+ grand_child_example_group.description.should_not be_empty
387
+
388
+ grand_child_example_group.description_parts.should == [
389
+ "ExampleGroup",
390
+ "Child",
391
+ Spec::Example::ExampleGroup,
392
+ "GrandChild",
393
+ Spec::Example::ExampleGroup
394
+ ]
395
+ end
396
+ end
397
+
398
+ describe "#described_type" do
399
+ it "should return passed in type" do
400
+ child_example_group = Class.new(example_group) do
401
+ describe Object
402
+ end
403
+ child_example_group.described_type.should == Object
404
+ end
405
+
406
+ it "should return #described_type of superclass when no passed in type" do
407
+ parent_example_group = Class.new(ExampleGroup) do
408
+ describe Object, "#foobar"
409
+ end
410
+ child_example_group = Class.new(parent_example_group) do
411
+ describe "not a type"
412
+ end
413
+ child_example_group.described_type.should == Object
414
+ end
415
+ end
416
+
417
+ describe "#remove_after" do
418
+ it "should unregister a given after(:each) block" do
419
+ after_all_ran = false
420
+ @example_group.it("example") {}
421
+ proc = Proc.new { after_all_ran = true }
422
+ ExampleGroup.after(:each, &proc)
423
+ @example_group.run
424
+ after_all_ran.should be_true
425
+
426
+ after_all_ran = false
427
+ ExampleGroup.remove_after(:each, &proc)
428
+ @example_group.run
429
+ after_all_ran.should be_false
430
+ end
431
+ end
432
+
433
+ describe "#include" do
434
+ it "should have accessible class methods from included module" do
435
+ mod1_method_called = false
436
+ mod1 = Module.new do
437
+ extend Spec::MetaClass
438
+ class_methods = Module.new do
439
+ define_method :mod1_method do
440
+ mod1_method_called = true
441
+ end
442
+ end
443
+
444
+ metaclass.class_eval do
445
+ define_method(:included) do |receiver|
446
+ receiver.extend class_methods
447
+ end
448
+ end
449
+ end
450
+
451
+ mod2_method_called = false
452
+ mod2 = Module.new do
453
+ extend Spec::MetaClass
454
+ class_methods = Module.new do
455
+ define_method :mod2_method do
456
+ mod2_method_called = true
457
+ end
458
+ end
459
+
460
+ metaclass.class_eval do
461
+ define_method(:included) do |receiver|
462
+ receiver.extend class_methods
463
+ end
464
+ end
465
+ end
466
+
467
+ @example_group.include mod1, mod2
468
+
469
+ @example_group.mod1_method
470
+ @example_group.mod2_method
471
+ mod1_method_called.should be_true
472
+ mod2_method_called.should be_true
473
+ end
474
+ end
475
+
476
+ describe "#number_of_examples" do
477
+ it "should count number of specs" do
478
+ proc do
479
+ @example_group.it("one") {}
480
+ @example_group.it("two") {}
481
+ @example_group.it("three") {}
482
+ @example_group.it("four") {}
483
+ end.should change {@example_group.number_of_examples}.by(4)
484
+ end
485
+ end
486
+
487
+ describe "#class_eval" do
488
+ it "should allow constants to be defined" do
489
+ example_group = Class.new(ExampleGroup) do
490
+ describe('example')
491
+ FOO = 1
492
+ it "should reference FOO" do
493
+ FOO.should == 1
494
+ end
495
+ end
496
+ example_group.run
497
+ Object.const_defined?(:FOO).should == false
498
+ end
499
+ end
500
+
501
+ describe '#register' do
502
+ it "should add ExampleGroup to set of ExampleGroups to be run" do
503
+ options.example_groups.delete(example_group)
504
+ options.example_groups.should_not include(example_group)
505
+
506
+ example_group.register {}
507
+ options.example_groups.should include(example_group)
508
+ end
509
+ end
510
+
511
+ describe '#unregister' do
512
+ before do
513
+ options.example_groups.should include(example_group)
514
+ end
515
+
516
+ it "should remove ExampleGroup from set of ExampleGroups to be run" do
517
+ example_group.unregister
518
+ options.example_groups.should_not include(example_group)
519
+ end
520
+ end
521
+
522
+ describe "#registration_backtrace" do
523
+ it "returns the backtrace of where the ExampleGroup was registered" do
524
+ example_group = Class.new(ExampleGroup)
525
+ example_group.registration_backtrace.join("\n").should include("#{__FILE__}:#{__LINE__-1}")
526
+ end
527
+ end
528
+
529
+ describe "#run" do
530
+ it "should add_example_group if there are any examples to run" do
531
+ example_group = Class.new(ExampleGroup) do
532
+ it "should do something" do end
533
+ end
534
+ reporter.should_receive(:add_example_group)
535
+ example_group.run
536
+ end
537
+
538
+ it "should NOT add_example_group if there are no examples to run" do
539
+ example_group = Class.new(ExampleGroup) do end
540
+ reporter.should_not_receive(:add_example_group)
541
+ example_group.run
542
+ end
543
+ end
544
+
545
+ describe "#matcher_class=" do
546
+ it "should call new and matches? on the class used for matching examples" do
547
+ example_group = Class.new(ExampleGroup) do
548
+ it "should do something" do end
549
+ class << self
550
+ def specified_examples
551
+ ["something"]
552
+ end
553
+ def to_s
554
+ "TestMatcher"
555
+ end
556
+ end
557
+ end
558
+
559
+ matcher = mock("matcher")
560
+ matcher.should_receive(:matches?).with(["something"]).any_number_of_times
561
+
562
+ matcher_class = Class.new
563
+ matcher_class.should_receive(:new).with("TestMatcher", "should do something").twice.and_return(matcher)
564
+
565
+ begin
566
+ ExampleGroupMethods.matcher_class = matcher_class
567
+
568
+ example_group.run
569
+ ensure
570
+ ExampleGroupMethods.matcher_class = ExampleMatcher
571
+ end
572
+ end
573
+ end
574
+
575
+ describe "#options" do
576
+ it "should expose the options hash" do
577
+ group = describe("group", :this => 'hash') {}
578
+ group.options[:this].should == 'hash'
579
+ end
580
+ end
581
+ end
582
+ end
583
+ end
584
+ end