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,71 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ module Spec
4
+ module Example
5
+ describe 'Nested Example Groups' do
6
+ parent = self
7
+
8
+ def count
9
+ @count ||= 0
10
+ @count = @count + 1
11
+ @count
12
+ end
13
+
14
+ before(:all) do
15
+ count.should == 1
16
+ end
17
+
18
+ before(:all) do
19
+ count.should == 2
20
+ end
21
+
22
+ before(:each) do
23
+ count.should == 3
24
+ end
25
+
26
+ before(:each) do
27
+ count.should == 4
28
+ end
29
+
30
+ it "should run before(:all), before(:each), example, after(:each), after(:all) in order" do
31
+ count.should == 5
32
+ end
33
+
34
+ after(:each) do
35
+ count.should == 7
36
+ end
37
+
38
+ after(:each) do
39
+ count.should == 6
40
+ end
41
+
42
+ after(:all) do
43
+ count.should == 9
44
+ end
45
+
46
+ after(:all) do
47
+ count.should == 8
48
+ end
49
+
50
+ describe 'nested example group' do
51
+ self.superclass.should == parent
52
+
53
+ it "should run all before and after callbacks" do
54
+ count.should == 5
55
+ end
56
+ end
57
+ end
58
+
59
+ describe "Nested Example Groups" do
60
+ describe "description options", :other_options => "other options" do
61
+ it "should have a spec_path" do
62
+ self.class.description_options[:spec_path].should match(/#{__FILE__}/)
63
+ end
64
+
65
+ it "should pass other options" do
66
+ self.class.description_options[:other_options].should == "other options"
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,145 @@
1
+ module Spec
2
+ module Example
3
+ describe Pending do
4
+
5
+ it 'should raise an ExamplePendingError if no block is supplied' do
6
+ lambda {
7
+ include Pending
8
+ pending "TODO"
9
+ }.should raise_error(ExamplePendingError, /TODO/)
10
+ end
11
+
12
+ it 'should raise an ExamplePendingError if a supplied block fails as expected' do
13
+ lambda {
14
+ include Pending
15
+ pending "TODO" do
16
+ raise "oops"
17
+ end
18
+ }.should raise_error(ExamplePendingError, /TODO/)
19
+ end
20
+
21
+ it 'should raise an ExamplePendingError if a supplied block fails as expected with a mock' do
22
+ lambda {
23
+ include Pending
24
+ pending "TODO" do
25
+ m = mock('thing')
26
+ m.should_receive(:foo)
27
+ m.rspec_verify
28
+ end
29
+ }.should raise_error(ExamplePendingError, /TODO/)
30
+ end
31
+
32
+ it 'should raise a PendingExampleFixedError if a supplied block starts working' do
33
+ lambda {
34
+ include Pending
35
+ pending "TODO" do
36
+ # success!
37
+ end
38
+ }.should raise_error(PendingExampleFixedError, /TODO/)
39
+ end
40
+
41
+ it "should have the correct file and line number for pending given with a block which fails" do
42
+ file = __FILE__
43
+ line_number = __LINE__ + 3
44
+ begin
45
+ include Pending
46
+ pending do
47
+ raise
48
+ end
49
+ rescue => error
50
+ error.pending_caller.should == "#{file}:#{line_number}"
51
+ end
52
+ end
53
+
54
+ it "should have the correct file and line number for pending given with no block" do
55
+ file = __FILE__
56
+ line_number = __LINE__ + 3
57
+ begin
58
+ include Pending
59
+ pending("TODO")
60
+ rescue => error
61
+ error.pending_caller.should == "#{file}:#{line_number}"
62
+ end
63
+ end
64
+ end
65
+
66
+ describe ExamplePendingError do
67
+ it "should have the caller (from two calls from initialization)" do
68
+ two_calls_ago = caller[0]
69
+ ExamplePendingError.new("a message").pending_caller.should == two_calls_ago
70
+ end
71
+
72
+ it "should keep the trace information from initialization" do
73
+ two_calls_ago = caller[0]
74
+ obj = ExamplePendingError.new("a message")
75
+ obj.pending_caller
76
+ def another_caller(obj)
77
+ obj.pending_caller
78
+ end
79
+
80
+ another_caller(obj).should == two_calls_ago
81
+ end
82
+
83
+ it "should have the message provided" do
84
+ ExamplePendingError.new("a message").message.should == "a message"
85
+ end
86
+
87
+ it "should use a 'ExamplePendingError' as it's default message" do
88
+ ExamplePendingError.new.message.should == "Spec::Example::ExamplePendingError"
89
+ end
90
+ end
91
+
92
+ describe NotYetImplementedError do
93
+ def rspec_root
94
+ File.expand_path(__FILE__.gsub("/spec/spec/example/pending_module_spec.rb", "/lib"))
95
+ end
96
+
97
+ it "should have the root rspec path" do
98
+ NotYetImplementedError::RSPEC_ROOT_LIB.should == rspec_root
99
+ end
100
+
101
+ it "should always have the error 'Not Yet Implemented'" do
102
+ NotYetImplementedError.new([]).message.should == "Not Yet Implemented"
103
+ end
104
+
105
+ describe "pending_caller" do
106
+ it "should select an element out of the backtrace" do
107
+ error = NotYetImplementedError.new(["foo/bar.rb:18"])
108
+
109
+ error.pending_caller.should == "foo/bar.rb:18"
110
+ end
111
+
112
+ it "should actually report the element from the backtrace" do
113
+ error = NotYetImplementedError.new(["bar.rb:18"])
114
+
115
+ error.pending_caller.should == "bar.rb:18"
116
+ end
117
+
118
+ it "should not use an element with the rspec root path" do
119
+ error = NotYetImplementedError.new(["#{rspec_root}:8"])
120
+
121
+ error.pending_caller.should be_nil
122
+ end
123
+
124
+ it "should select the first line in the backtrace which isn't in the rspec root" do
125
+ error = NotYetImplementedError.new([
126
+ "#{rspec_root}/foo.rb:2",
127
+ "#{rspec_root}/foo/bar.rb:18",
128
+ "path1.rb:22",
129
+ "path2.rb:33"
130
+ ])
131
+
132
+ error.pending_caller.should == "path1.rb:22"
133
+ end
134
+
135
+ it "should cache the caller" do
136
+ backtrace = mock('backtrace')
137
+ backtrace.should_receive(:detect).once
138
+
139
+ error = NotYetImplementedError.new(backtrace)
140
+ error.pending_caller.should == error.pending_caller
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ module Spec
4
+ module Example
5
+ class Fish
6
+ def can_swim?(distance_in_yards)
7
+ distance_in_yards < 1000
8
+ end
9
+ end
10
+
11
+ describe "predicate_matcher[method_on_object] = matcher_method" do
12
+ predicate_matchers[:swim] = :can_swim?
13
+ it "should match matcher_method if method_on_object returns true" do
14
+ swim(100).matches?(Fish.new).should be_true
15
+ end
16
+ it "should not match matcher_method if method_on_object returns false" do
17
+ swim(10000).matches?(Fish.new).should be_false
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,281 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ module Spec
4
+ module Example
5
+ describe ExampleGroup, "with :shared => true" do
6
+ with_sandboxed_options do
7
+ attr_reader :formatter, :example_group
8
+ before(:each) do
9
+ @formatter = Spec::Mocks::Mock.new("formatter", :null_object => true)
10
+ options.formatters << formatter
11
+ @example_group = Class.new(ExampleGroup).describe("example_group")
12
+ class << example_group
13
+ public :include
14
+ end
15
+ end
16
+
17
+ after(:each) do
18
+ @formatter.rspec_verify
19
+ @example_group = nil
20
+ Spec::Example::SharedExampleGroup.shared_example_groups.clear
21
+ end
22
+
23
+ def make_shared_example_group(name, opts=nil, &block)
24
+ example_group = SharedExampleGroup.new(name, :shared => true, &block)
25
+ SharedExampleGroup.add_shared_example_group(example_group)
26
+ example_group
27
+ end
28
+
29
+ def non_shared_example_group()
30
+ @non_shared_example_group ||= Class.new(ExampleGroup).describe("example_group")
31
+ end
32
+
33
+ it "should accept an optional options hash" do
34
+ lambda { Class.new(ExampleGroup).describe("context") }.should_not raise_error(Exception)
35
+ lambda { Class.new(ExampleGroup).describe("context", :shared => true) }.should_not raise_error(Exception)
36
+ end
37
+
38
+ it "should return all shared example_groups" do
39
+ b1 = make_shared_example_group("b1", :shared => true) {}
40
+ b2 = make_shared_example_group("b2", :shared => true) {}
41
+
42
+ b1.should_not be(nil)
43
+ b2.should_not be(nil)
44
+
45
+ SharedExampleGroup.find_shared_example_group("b1").should equal(b1)
46
+ SharedExampleGroup.find_shared_example_group("b2").should equal(b2)
47
+ end
48
+
49
+ it "should register as shared example_group" do
50
+ example_group = make_shared_example_group("example_group") {}
51
+ SharedExampleGroup.shared_example_groups.should include(example_group)
52
+ end
53
+
54
+ it "should not be shared when not configured as shared" do
55
+ example_group = non_shared_example_group
56
+ SharedExampleGroup.shared_example_groups.should_not include(example_group)
57
+ end
58
+
59
+ it "should complain when adding a second shared example_group with the same description" do
60
+ describe "shared example_group", :shared => true do
61
+ end
62
+ lambda do
63
+ describe "shared example_group", :shared => true do
64
+ end
65
+ end.should raise_error(ArgumentError)
66
+ end
67
+
68
+ it "should NOT complain when adding the same shared example_group instance again" do
69
+ shared_example_group = Class.new(ExampleGroup).describe("shared example_group", :shared => true)
70
+ SharedExampleGroup.add_shared_example_group(shared_example_group)
71
+ SharedExampleGroup.add_shared_example_group(shared_example_group)
72
+ end
73
+
74
+ it "should NOT complain when adding the same shared example_group again (i.e. file gets reloaded)" do
75
+ lambda do
76
+ 2.times do
77
+ describe "shared example_group which gets loaded twice", :shared => true do
78
+ end
79
+ end
80
+ end.should_not raise_error(ArgumentError)
81
+ end
82
+
83
+ it "should NOT complain when adding the same shared example_group in same file with different absolute path" do
84
+ shared_example_group_1 = Class.new(ExampleGroup).describe(
85
+ "shared example_group",
86
+ :shared => true,
87
+ :spec_path => "/my/spec/a/../shared.rb"
88
+ )
89
+ shared_example_group_2 = Class.new(ExampleGroup).describe(
90
+ "shared example_group",
91
+ :shared => true,
92
+ :spec_path => "/my/spec/b/../shared.rb"
93
+ )
94
+
95
+ SharedExampleGroup.add_shared_example_group(shared_example_group_1)
96
+ SharedExampleGroup.add_shared_example_group(shared_example_group_2)
97
+ end
98
+
99
+ it "should complain when adding a different shared example_group with the same name in a different file with the same basename" do
100
+ shared_example_group_1 = Class.new(ExampleGroup).describe(
101
+ "shared example_group",
102
+ :shared => true,
103
+ :spec_path => "/my/spec/a/shared.rb"
104
+ )
105
+ shared_example_group_2 = Class.new(ExampleGroup).describe(
106
+ "shared example_group",
107
+ :shared => true,
108
+ :spec_path => "/my/spec/b/shared.rb"
109
+ )
110
+
111
+ SharedExampleGroup.add_shared_example_group(shared_example_group_1)
112
+ lambda do
113
+ SharedExampleGroup.add_shared_example_group(shared_example_group_2)
114
+ end.should raise_error(ArgumentError, /already exists/)
115
+ end
116
+
117
+ it "should add examples to current example_group using it_should_behave_like" do
118
+ shared_example_group = make_shared_example_group("shared example_group") do
119
+ it("shared example") {}
120
+ it("shared example 2") {}
121
+ end
122
+
123
+ example_group.it("example") {}
124
+ example_group.number_of_examples.should == 1
125
+ example_group.it_should_behave_like("shared example_group")
126
+ example_group.number_of_examples.should == 3
127
+ end
128
+
129
+ it "should add examples to from two shared groups" do
130
+ shared_example_group_1 = make_shared_example_group("shared example_group 1") do
131
+ it("shared example 1") {}
132
+ end
133
+
134
+ shared_example_group_1 = make_shared_example_group("shared example_group 2") do
135
+ it("shared example 2") {}
136
+ end
137
+
138
+ example_group.it("example") {}
139
+ example_group.number_of_examples.should == 1
140
+ example_group.it_should_behave_like("shared example_group 1", "shared example_group 2")
141
+ example_group.number_of_examples.should == 3
142
+ end
143
+
144
+ it "should add examples to current example_group using include" do
145
+ shared_example_group = describe "all things", :shared => true do
146
+ it "should do stuff" do end
147
+ end
148
+
149
+ example_group = describe "one thing" do
150
+ include shared_example_group
151
+ end
152
+
153
+ example_group.number_of_examples.should == 1
154
+ end
155
+
156
+ it "should add examples to current example_group using it_should_behave_like with a module" do
157
+ AllThings = describe "all things", :shared => true do
158
+ it "should do stuff" do end
159
+ end
160
+
161
+ example_group = describe "one thing" do
162
+ it_should_behave_like AllThings
163
+ end
164
+
165
+ example_group.number_of_examples.should == 1
166
+ end
167
+
168
+ it "should run shared examples" do
169
+ shared_example_ran = false
170
+ shared_example_group = make_shared_example_group("shared example_group") do
171
+ it("shared example") { shared_example_ran = true }
172
+ end
173
+
174
+ example_ran = false
175
+
176
+ example_group.it_should_behave_like("shared example_group")
177
+ example_group.it("example") {example_ran = true}
178
+ example_group.run
179
+ example_ran.should be_true
180
+ shared_example_ran.should be_true
181
+ end
182
+
183
+ it "should run setup and teardown from shared example_group" do
184
+ shared_setup_ran = false
185
+ shared_teardown_ran = false
186
+ shared_example_group = make_shared_example_group("shared example_group") do
187
+ before { shared_setup_ran = true }
188
+ after { shared_teardown_ran = true }
189
+ it("shared example") { shared_example_ran = true }
190
+ end
191
+
192
+ example_ran = false
193
+
194
+ example_group.it_should_behave_like("shared example_group")
195
+ example_group.it("example") {example_ran = true}
196
+ example_group.run
197
+ example_ran.should be_true
198
+ shared_setup_ran.should be_true
199
+ shared_teardown_ran.should be_true
200
+ end
201
+
202
+ it "should run before(:all) and after(:all) only once from shared example_group" do
203
+ shared_before_all_run_count = 0
204
+ shared_after_all_run_count = 0
205
+ shared_example_group = make_shared_example_group("shared example_group") do
206
+ before(:all) { shared_before_all_run_count += 1}
207
+ after(:all) { shared_after_all_run_count += 1}
208
+ it("shared example") { shared_example_ran = true }
209
+ end
210
+
211
+ example_ran = false
212
+
213
+ example_group.it_should_behave_like("shared example_group")
214
+ example_group.it("example") {example_ran = true}
215
+ example_group.run
216
+ example_ran.should be_true
217
+ shared_before_all_run_count.should == 1
218
+ shared_after_all_run_count.should == 1
219
+ end
220
+
221
+ it "should include modules, included into shared example_group, into current example_group" do
222
+ @formatter.should_receive(:add_example_group).with(any_args)
223
+
224
+ shared_example_group = make_shared_example_group("shared example_group") do
225
+ it("shared example") { shared_example_ran = true }
226
+ end
227
+
228
+ mod1_method_called = false
229
+ mod1 = Module.new do
230
+ define_method :mod1_method do
231
+ mod1_method_called = true
232
+ end
233
+ end
234
+
235
+ mod2_method_called = false
236
+ mod2 = Module.new do
237
+ define_method :mod2_method do
238
+ mod2_method_called = true
239
+ end
240
+ end
241
+
242
+ shared_example_group.__send__ :include, mod2
243
+
244
+ example_group.it_should_behave_like("shared example_group")
245
+ example_group.include mod1
246
+
247
+ example_group.it("test") do
248
+ mod1_method
249
+ mod2_method
250
+ end
251
+ example_group.run
252
+ mod1_method_called.should be_true
253
+ mod2_method_called.should be_true
254
+ end
255
+
256
+ it "should make methods defined in the shared example_group available in consuming example_group" do
257
+ shared_example_group = make_shared_example_group("shared example_group xyz") do
258
+ def a_shared_helper_method
259
+ "this got defined in a shared example_group"
260
+ end
261
+ end
262
+ example_group.it_should_behave_like("shared example_group xyz")
263
+ success = false
264
+ example_group.it("should access a_shared_helper_method") do
265
+ a_shared_helper_method
266
+ success = true
267
+ end
268
+ example_group.run
269
+ success.should be_true
270
+ end
271
+
272
+ it "should raise when named shared example_group can not be found" do
273
+ lambda {
274
+ example_group.it_should_behave_like("non-existent shared example group")
275
+ violated
276
+ }.should raise_error("Shared Example Group 'non-existent shared example group' can not be found")
277
+ end
278
+ end
279
+ end
280
+ end
281
+ end