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,6 @@
1
+ if __FILE__ == $0
2
+ dir = File.dirname(__FILE__)
3
+ Dir["#{dir}/**/*_spec.rb"].reverse.each do |file|
4
+ require file
5
+ end
6
+ end
@@ -0,0 +1,13 @@
1
+ require 'rbconfig'
2
+
3
+ module RubyForker
4
+ # Forks a ruby interpreter with same type as ourself.
5
+ # juby will fork jruby, ruby will fork ruby etc.
6
+ def ruby(args, stderr=nil)
7
+ config = ::Config::CONFIG
8
+ interpreter = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT']
9
+ cmd = "#{interpreter} #{args}"
10
+ cmd << " 2> #{stderr}" unless stderr.nil?
11
+ `#{cmd}`
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ describe Spec::Adapters::RubyEngine do
2
+ it "should default to MRI" do
3
+ Spec::Adapters::RubyEngine.adapter.should be_an_instance_of(Spec::Adapters::RubyEngine::MRI)
4
+ end
5
+
6
+ it "should provide Rubinius for rbx" do
7
+ Spec::Adapters::RubyEngine.stub!(:engine).and_return('rbx')
8
+ Spec::Adapters::RubyEngine.adapter.should be_an_instance_of(Spec::Adapters::RubyEngine::Rubinius)
9
+ end
10
+
11
+ it "should try to find whatever is defined by the RUBY_ENGINE const" do
12
+ Object.stub!(:const_defined?).with('RUBY_ENGINE').and_return(true)
13
+ Object.stub!(:const_get).with('RUBY_ENGINE').and_return("xyz")
14
+ Spec::Adapters::RubyEngine.engine.should == "xyz"
15
+ end
16
+ end
@@ -0,0 +1,296 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Example
5
+ describe Configuration do
6
+
7
+ describe "#mock_with" do
8
+
9
+ before(:each) do
10
+ @config = Configuration.new
11
+ @example_group = mock("example_group")
12
+ end
13
+
14
+ it "should default mock framework to rspec" do
15
+ @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
16
+ end
17
+
18
+ it "should set rspec mocking explicitly" do
19
+ @config.mock_with(:rspec)
20
+ @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
21
+ end
22
+
23
+ it "should set mocha" do
24
+ @config.mock_with(:mocha)
25
+ @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/mocha$/
26
+ end
27
+
28
+ it "should set flexmock" do
29
+ @config.mock_with(:flexmock)
30
+ @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/flexmock$/
31
+ end
32
+
33
+ it "should set rr" do
34
+ @config.mock_with(:rr)
35
+ @config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rr$/
36
+ end
37
+
38
+ it "should set an arbitrary adapter module" do
39
+ adapter = Module.new
40
+ @config.mock_with(adapter)
41
+ @config.mock_framework.should == adapter
42
+ end
43
+ end
44
+
45
+ with_sandboxed_config do
46
+
47
+ describe "#include" do
48
+
49
+ before(:each) do
50
+ @example_group_class = Class.new(ExampleGroup) {}
51
+ ExampleGroupFactory.register(:foobar, @example_group_class)
52
+ end
53
+
54
+ it "should include the submitted module in ExampleGroup subclasses" do
55
+ mod = Module.new
56
+ config.include mod
57
+ Class.new(@example_group_class).included_modules.should include(mod)
58
+ end
59
+
60
+ it "should scope modules to be included for a specific type" do
61
+ mod = Module.new
62
+ config.include mod, :type => :foobar
63
+ Class.new(@example_group_class).included_modules.should include(mod)
64
+ end
65
+
66
+ it "should not include modules in a type they are not intended for" do
67
+ mod = Module.new
68
+ @other_example_group_class = Class.new(ExampleGroup)
69
+ ExampleGroupFactory.register(:baz, @other_example_group_class)
70
+
71
+ config.include mod, :type => :foobar
72
+
73
+ Class.new(@other_example_group_class).included_modules.should_not include(mod)
74
+ end
75
+
76
+ end
77
+
78
+ describe "#extend" do
79
+
80
+ before(:each) do
81
+ @example_group_class = Class.new(ExampleGroup) {}
82
+ ExampleGroupFactory.register(:foobar, @example_group_class)
83
+ end
84
+
85
+ it "should extend all groups" do
86
+ mod = Module.new
87
+ ExampleGroup.should_receive(:extend).with(mod)
88
+ Spec::Runner.configuration.extend mod
89
+ end
90
+
91
+ it "should extend specified groups" do
92
+ mod = Module.new
93
+ @example_group_class.should_receive(:extend).with(mod)
94
+ Spec::Runner.configuration.extend mod, :type => :foobar
95
+ end
96
+
97
+ it "should not extend non-specified groups" do
98
+ @other_example_group_class = Class.new(ExampleGroup)
99
+ ExampleGroupFactory.register(:baz, @other_example_group_class)
100
+
101
+ mod = Module.new
102
+ @other_example_group_class.should_not_receive(:extend)
103
+
104
+ Spec::Runner.configuration.extend mod, :type => :foobar
105
+ end
106
+
107
+ end
108
+ end
109
+
110
+ describe Configuration do
111
+
112
+ before(:each) do
113
+ @special_example_group = Class.new(ExampleGroup).describe("special_example_group")
114
+ @special_child_example_group = Class.new(@special_example_group).describe("special_child_example_group")
115
+ @nonspecial_example_group = Class.new(ExampleGroup).describe("nonspecial_example_group")
116
+ ExampleGroupFactory.register(:special, @special_example_group)
117
+ ExampleGroupFactory.register(:special_child, @special_child_example_group)
118
+ ExampleGroupFactory.register(:non_special, @nonspecial_example_group)
119
+ @example_group = @special_child_example_group.describe "Special Example Group"
120
+ @unselected_example_group = Class.new(@nonspecial_example_group).describe "Non Special Example Group"
121
+ end
122
+
123
+ describe "#prepend_before" do
124
+ it "prepends the before block on all instances of the passed in type" do
125
+ order = []
126
+ config.prepend_before(:all) do
127
+ order << :prepend__before_all
128
+ end
129
+ config.prepend_before(:all, :type => :special) do
130
+ order << :special_prepend__before_all
131
+ end
132
+ config.prepend_before(:all, :type => :special_child) do
133
+ order << :special_child_prepend__before_all
134
+ end
135
+ config.prepend_before(:each) do
136
+ order << :prepend__before_each
137
+ end
138
+ config.prepend_before(:each, :type => :special) do
139
+ order << :special_prepend__before_each
140
+ end
141
+ config.prepend_before(:each, :type => :special_child) do
142
+ order << :special_child_prepend__before_each
143
+ end
144
+ config.prepend_before(:all, :type => :non_special) do
145
+ order << :special_prepend__before_all
146
+ end
147
+ config.prepend_before(:each, :type => :non_special) do
148
+ order << :special_prepend__before_each
149
+ end
150
+ @example_group.it "calls prepend_before" do
151
+ end
152
+
153
+ @example_group.run
154
+ order.should == [
155
+ :prepend__before_all,
156
+ :special_prepend__before_all,
157
+ :special_child_prepend__before_all,
158
+ :prepend__before_each,
159
+ :special_prepend__before_each,
160
+ :special_child_prepend__before_each
161
+ ]
162
+ end
163
+ end
164
+
165
+ describe "#append_before" do
166
+
167
+ it "calls append_before on the type" do
168
+ order = []
169
+ config.append_before(:all) do
170
+ order << :append_before_all
171
+ end
172
+ config.append_before(:all, :type => :special) do
173
+ order << :special_append_before_all
174
+ end
175
+ config.append_before(:all, :type => :special_child) do
176
+ order << :special_child_append_before_all
177
+ end
178
+ config.append_before(:each) do
179
+ order << :append_before_each
180
+ end
181
+ config.append_before(:each, :type => :special) do
182
+ order << :special_append_before_each
183
+ end
184
+ config.append_before(:each, :type => :special_child) do
185
+ order << :special_child_append_before_each
186
+ end
187
+ config.append_before(:all, :type => :non_special) do
188
+ order << :special_append_before_all
189
+ end
190
+ config.append_before(:each, :type => :non_special) do
191
+ order << :special_append_before_each
192
+ end
193
+ @example_group.it "calls append_before" do
194
+ end
195
+
196
+ @example_group.run
197
+ order.should == [
198
+ :append_before_all,
199
+ :special_append_before_all,
200
+ :special_child_append_before_all,
201
+ :append_before_each,
202
+ :special_append_before_each,
203
+ :special_child_append_before_each
204
+ ]
205
+ end
206
+ end
207
+
208
+ describe "#prepend_after" do
209
+
210
+ it "prepends the after block on all instances of the passed in type" do
211
+ order = []
212
+ config.prepend_after(:all) do
213
+ order << :prepend__after_all
214
+ end
215
+ config.prepend_after(:all, :type => :special) do
216
+ order << :special_prepend__after_all
217
+ end
218
+ config.prepend_after(:all, :type => :special) do
219
+ order << :special_child_prepend__after_all
220
+ end
221
+ config.prepend_after(:each) do
222
+ order << :prepend__after_each
223
+ end
224
+ config.prepend_after(:each, :type => :special) do
225
+ order << :special_prepend__after_each
226
+ end
227
+ config.prepend_after(:each, :type => :special) do
228
+ order << :special_child_prepend__after_each
229
+ end
230
+ config.prepend_after(:all, :type => :non_special) do
231
+ order << :special_prepend__after_all
232
+ end
233
+ config.prepend_after(:each, :type => :non_special) do
234
+ order << :special_prepend__after_each
235
+ end
236
+ @example_group.it "calls prepend_after" do
237
+ end
238
+
239
+ @example_group.run
240
+ order.should == [
241
+ :special_child_prepend__after_each,
242
+ :special_prepend__after_each,
243
+ :prepend__after_each,
244
+ :special_child_prepend__after_all,
245
+ :special_prepend__after_all,
246
+ :prepend__after_all
247
+ ]
248
+ end
249
+ end
250
+
251
+ describe "#append_after" do
252
+
253
+ it "calls append_after on the type" do
254
+ order = []
255
+ config.append_after(:all) do
256
+ order << :append__after_all
257
+ end
258
+ config.append_after(:all, :type => :special) do
259
+ order << :special_append__after_all
260
+ end
261
+ config.append_after(:all, :type => :special_child) do
262
+ order << :special_child_append__after_all
263
+ end
264
+ config.append_after(:each) do
265
+ order << :append__after_each
266
+ end
267
+ config.append_after(:each, :type => :special) do
268
+ order << :special_append__after_each
269
+ end
270
+ config.append_after(:each, :type => :special_child) do
271
+ order << :special_child_append__after_each
272
+ end
273
+ config.append_after(:all, :type => :non_special) do
274
+ order << :non_special_append_after_all
275
+ end
276
+ config.append_after(:each, :type => :non_special) do
277
+ order << :non_special_append_after_each
278
+ end
279
+ @example_group.it "calls append_after" do
280
+ end
281
+
282
+ @example_group.run
283
+ order.should == [
284
+ :special_child_append__after_each,
285
+ :special_append__after_each,
286
+ :append__after_each,
287
+ :special_child_append__after_all,
288
+ :special_append__after_all,
289
+ :append__after_all
290
+ ]
291
+ end
292
+ end
293
+ end
294
+ end
295
+ end
296
+ end
@@ -0,0 +1,48 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ module Spec
4
+ module Example
5
+ class ExampleGroupSubclass < ExampleGroup
6
+ class << self
7
+ attr_accessor :examples_ran
8
+ end
9
+
10
+ @@class_variable = :class_variable
11
+ CONSTANT = :constant
12
+
13
+ before do
14
+ @instance_variable = :instance_variable
15
+ end
16
+
17
+ after(:all) do
18
+ self.class.examples_ran = true
19
+ end
20
+
21
+ it "should have access to instance variables" do
22
+ @instance_variable.should == :instance_variable
23
+ end
24
+
25
+ it "should have access to class variables" do
26
+ @@class_variable.should == :class_variable
27
+ end
28
+
29
+ it "should have access to constants" do
30
+ CONSTANT.should == :constant
31
+ end
32
+
33
+ it "should have access to methods defined in the Example Group" do
34
+ a_method.should == 22
35
+ end
36
+
37
+ def a_method
38
+ 22
39
+ end
40
+ end
41
+
42
+ describe ExampleGroupSubclass do
43
+ it "should run" do
44
+ ExampleGroupSubclass.examples_ran.should be_true
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,165 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ module Spec
4
+ module Example
5
+ describe ExampleGroupFactory do
6
+ describe "#get" do
7
+ attr_reader :example_group
8
+ before do
9
+ @example_group_class = Class.new(ExampleGroup)
10
+ ExampleGroupFactory.register(:registered_type, @example_group_class)
11
+ end
12
+
13
+ after do
14
+ ExampleGroupFactory.reset
15
+ end
16
+
17
+ it "should return the default ExampleGroup type for nil" do
18
+ ExampleGroupFactory.get(nil).should == ExampleGroup
19
+ end
20
+
21
+ it "should return the default ExampleGroup for an unregistered non-nil value" do
22
+ ExampleGroupFactory.get(:does_not_exist).should == ExampleGroup
23
+ end
24
+
25
+ it "should return custom type if registered" do
26
+ ExampleGroupFactory.get(:registered_type).should == @example_group_class
27
+ end
28
+
29
+ it "should return the actual type when that is what is submitted" do
30
+ ExampleGroupFactory.get(@example_group_class).should == @example_group_class
31
+ end
32
+
33
+ it "should get the custom type after setting the default" do
34
+ @alternate_example_group_class = Class.new(ExampleGroup)
35
+ ExampleGroupFactory.default(@alternate_example_group_class)
36
+ ExampleGroupFactory.get(:registered_type).should == @example_group_class
37
+ end
38
+ end
39
+
40
+ describe "#create_example_group" do
41
+ attr_reader :parent_example_group
42
+ before do
43
+ @parent_example_group = Class.new(ExampleGroup) do
44
+ def initialize(*args, &block)
45
+ ;
46
+ end
47
+ end
48
+ end
49
+
50
+ it "should create a uniquely named class" do
51
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
52
+ example_group.name.should =~ /Spec::Example::ExampleGroup::Subclass_\d+/
53
+ end
54
+
55
+ it "should create a Spec::Example::Example subclass by default" do
56
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
57
+ example_group.superclass.should == Spec::Example::ExampleGroup
58
+ end
59
+
60
+ describe "with :type => :default" do
61
+ it "should create a Spec::Example::ExampleGroup" do
62
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group(
63
+ "example_group", :type => :default
64
+ ) {}
65
+ example_group.superclass.should == Spec::Example::ExampleGroup
66
+ end
67
+ end
68
+
69
+ describe "with :type => :something_other_than_default" do
70
+ it "should create the specified type" do
71
+ Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
72
+ non_default_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
73
+ "example_group", :type => :something_other_than_default
74
+ ) {}
75
+ non_default_example_group.superclass.should == parent_example_group
76
+ end
77
+ end
78
+
79
+ it "should create a type indicated by :spec_path" do
80
+ Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
81
+ custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
82
+ "example_group", :spec_path => "./spec/something_other_than_default/some_spec.rb"
83
+ ) {}
84
+ custom_example_group.superclass.should == parent_example_group
85
+ end
86
+
87
+ it "should create a type indicated by :spec_path (with spec_path generated by caller on windows)" do
88
+ Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
89
+ custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
90
+ "example_group",
91
+ :spec_path => "./spec\\something_other_than_default\\some_spec.rb"
92
+ ) {}
93
+ custom_example_group.superclass.should == parent_example_group
94
+ end
95
+
96
+ describe "with :shared => true" do
97
+ def shared_example_group
98
+ @shared_example_group ||= Spec::Example::ExampleGroupFactory.create_example_group(
99
+ "name", :spec_path => '/blah/spec/models/blah.rb', :type => :controller, :shared => true
100
+ ) {}
101
+ end
102
+
103
+ it "should create and register a Spec::Example::SharedExampleGroup" do
104
+ shared_example_group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
105
+ SharedExampleGroup.shared_example_groups.should include(shared_example_group)
106
+ end
107
+ end
108
+
109
+ it "should favor the :type over the :spec_path" do
110
+ Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
111
+ custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
112
+ "name", :spec_path => '/blah/spec/models/blah.rb', :type => :something_other_than_default
113
+ ) {}
114
+ custom_example_group.superclass.should == parent_example_group
115
+ end
116
+
117
+ it "should register ExampleGroup by default" do
118
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
119
+ end
120
+ Spec::Runner.options.example_groups.should include(example_group)
121
+ end
122
+
123
+ it "should enable unregistering of ExampleGroups" do
124
+ example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
125
+ unregister
126
+ end
127
+ Spec::Runner.options.example_groups.should_not include(example_group)
128
+ end
129
+
130
+ after(:each) do
131
+ Spec::Example::ExampleGroupFactory.reset
132
+ end
133
+ end
134
+
135
+ describe "#all_registered?" do
136
+ before(:each) do
137
+ @unregistered_parent = Class.new(ExampleGroup)
138
+ @registered_child = Class.new(@unregistered_parent)
139
+ @unregistered_grandchild = Class.new(@registered_child)
140
+ Spec::Example::ExampleGroupFactory.register :registered_child, @registered_child
141
+ end
142
+
143
+ it "should return true for empty list" do
144
+ Spec::Example::ExampleGroupFactory.all_registered?([]).should be_true
145
+ end
146
+
147
+ it "should return true for a registered example group class" do
148
+ Spec::Example::ExampleGroupFactory.all_registered?([@registered_child]).should be_true
149
+ end
150
+
151
+ it "should return true for an ancestor of a registered example_group_classes" do
152
+ Spec::Example::ExampleGroupFactory.all_registered?([@unregistered_parent]).should be_true
153
+ end
154
+
155
+ it "should return false for a subclass of a registered example_group_class" do
156
+ Spec::Example::ExampleGroupFactory.all_registered?([@unregistered_grandchild]).should be_false
157
+ end
158
+
159
+ after(:each) do
160
+ Spec::Example::ExampleGroupFactory.reset
161
+ end
162
+ end
163
+ end
164
+ end
165
+ end