rspec 0.0.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 (388) hide show
  1. data/.autotest +3 -0
  2. data/.gitignore +7 -0
  3. data/History.txt +1104 -0
  4. data/MIT-LICENSE +20 -0
  5. data/Manifest.txt +387 -0
  6. data/README.txt +36 -0
  7. data/Rakefile +88 -0
  8. data/TODO +1 -0
  9. data/bin/autospec +3 -0
  10. data/bin/spec +4 -0
  11. data/bin/spec_translator +8 -0
  12. data/examples/pure/autogenerated_docstrings_example.rb +19 -0
  13. data/examples/pure/before_and_after_example.rb +40 -0
  14. data/examples/pure/behave_as_example.rb +45 -0
  15. data/examples/pure/custom_expectation_matchers.rb +54 -0
  16. data/examples/pure/custom_formatter.rb +12 -0
  17. data/examples/pure/dynamic_spec.rb +9 -0
  18. data/examples/pure/file_accessor.rb +19 -0
  19. data/examples/pure/file_accessor_spec.rb +38 -0
  20. data/examples/pure/greeter_spec.rb +31 -0
  21. data/examples/pure/helper_method_example.rb +14 -0
  22. data/examples/pure/io_processor.rb +8 -0
  23. data/examples/pure/io_processor_spec.rb +21 -0
  24. data/examples/pure/legacy_spec.rb +11 -0
  25. data/examples/pure/mocking_example.rb +27 -0
  26. data/examples/pure/multi_threaded_behaviour_runner.rb +28 -0
  27. data/examples/pure/nested_classes_example.rb +36 -0
  28. data/examples/pure/partial_mock_example.rb +29 -0
  29. data/examples/pure/pending_example.rb +20 -0
  30. data/examples/pure/predicate_example.rb +27 -0
  31. data/examples/pure/priority.txt +1 -0
  32. data/examples/pure/shared_example_group_example.rb +81 -0
  33. data/examples/pure/shared_stack_examples.rb +38 -0
  34. data/examples/pure/spec_helper.rb +3 -0
  35. data/examples/pure/stack.rb +36 -0
  36. data/examples/pure/stack_spec.rb +63 -0
  37. data/examples/pure/stack_spec_with_nested_example_groups.rb +67 -0
  38. data/examples/pure/stubbing_example.rb +69 -0
  39. data/examples/stories/adder.rb +13 -0
  40. data/examples/stories/addition +34 -0
  41. data/examples/stories/addition.rb +9 -0
  42. data/examples/stories/calculator.rb +65 -0
  43. data/examples/stories/game-of-life/.loadpath +5 -0
  44. data/examples/stories/game-of-life/README.txt +21 -0
  45. data/examples/stories/game-of-life/behaviour/everything.rb +6 -0
  46. data/examples/stories/game-of-life/behaviour/examples/examples.rb +3 -0
  47. data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
  48. data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
  49. data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
  50. data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
  51. data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
  52. data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
  53. data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
  54. data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
  55. data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
  56. data/examples/stories/game-of-life/behaviour/stories/helper.rb +6 -0
  57. data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +26 -0
  58. data/examples/stories/game-of-life/behaviour/stories/steps.rb +5 -0
  59. data/examples/stories/game-of-life/behaviour/stories/stories.rb +3 -0
  60. data/examples/stories/game-of-life/behaviour/stories/stories.txt +22 -0
  61. data/examples/stories/game-of-life/life.rb +3 -0
  62. data/examples/stories/game-of-life/life/game.rb +23 -0
  63. data/examples/stories/game-of-life/life/grid.rb +43 -0
  64. data/examples/stories/helper.rb +9 -0
  65. data/examples/stories/steps/addition_steps.rb +18 -0
  66. data/failing_examples/README.txt +7 -0
  67. data/failing_examples/diffing_spec.rb +36 -0
  68. data/failing_examples/failing_autogenerated_docstrings_example.rb +19 -0
  69. data/failing_examples/failure_in_setup.rb +10 -0
  70. data/failing_examples/failure_in_teardown.rb +10 -0
  71. data/failing_examples/mocking_example.rb +40 -0
  72. data/failing_examples/mocking_with_flexmock.rb +26 -0
  73. data/failing_examples/mocking_with_mocha.rb +25 -0
  74. data/failing_examples/mocking_with_rr.rb +27 -0
  75. data/failing_examples/partial_mock_example.rb +20 -0
  76. data/failing_examples/predicate_example.rb +29 -0
  77. data/failing_examples/raising_example.rb +47 -0
  78. data/failing_examples/spec_helper.rb +3 -0
  79. data/failing_examples/syntax_error_example.rb +7 -0
  80. data/failing_examples/team_spec.rb +44 -0
  81. data/failing_examples/timeout_behaviour.rb +7 -0
  82. data/init.rb +9 -0
  83. data/lib/autotest/discover.rb +3 -0
  84. data/lib/autotest/rspec.rb +72 -0
  85. data/lib/spec.rb +30 -0
  86. data/lib/spec/adapters.rb +1 -0
  87. data/lib/spec/adapters/ruby_engine.rb +26 -0
  88. data/lib/spec/adapters/ruby_engine/mri.rb +8 -0
  89. data/lib/spec/adapters/ruby_engine/rubinius.rb +8 -0
  90. data/lib/spec/example.rb +12 -0
  91. data/lib/spec/example/configuration.rb +158 -0
  92. data/lib/spec/example/errors.rb +9 -0
  93. data/lib/spec/example/example_group.rb +17 -0
  94. data/lib/spec/example/example_group_factory.rb +64 -0
  95. data/lib/spec/example/example_group_methods.rb +440 -0
  96. data/lib/spec/example/example_matcher.rb +44 -0
  97. data/lib/spec/example/example_methods.rb +112 -0
  98. data/lib/spec/example/module_inclusion_warnings.rb +38 -0
  99. data/lib/spec/example/module_reopening_fix.rb +21 -0
  100. data/lib/spec/example/pending.rb +18 -0
  101. data/lib/spec/example/shared_example_group.rb +58 -0
  102. data/lib/spec/expectations.rb +56 -0
  103. data/lib/spec/expectations/differs/default.rb +66 -0
  104. data/lib/spec/expectations/errors.rb +12 -0
  105. data/lib/spec/expectations/extensions.rb +2 -0
  106. data/lib/spec/expectations/extensions/object.rb +63 -0
  107. data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  108. data/lib/spec/expectations/handler.rb +62 -0
  109. data/lib/spec/extensions.rb +4 -0
  110. data/lib/spec/extensions/class.rb +24 -0
  111. data/lib/spec/extensions/main.rb +102 -0
  112. data/lib/spec/extensions/metaclass.rb +7 -0
  113. data/lib/spec/extensions/object.rb +6 -0
  114. data/lib/spec/interop/test.rb +12 -0
  115. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  116. data/lib/spec/interop/test/unit/testcase.rb +61 -0
  117. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  118. data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  119. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  120. data/lib/spec/matchers.rb +156 -0
  121. data/lib/spec/matchers/be.rb +224 -0
  122. data/lib/spec/matchers/be_close.rb +37 -0
  123. data/lib/spec/matchers/change.rb +148 -0
  124. data/lib/spec/matchers/eql.rb +43 -0
  125. data/lib/spec/matchers/equal.rb +43 -0
  126. data/lib/spec/matchers/exist.rb +17 -0
  127. data/lib/spec/matchers/has.rb +34 -0
  128. data/lib/spec/matchers/have.rb +149 -0
  129. data/lib/spec/matchers/include.rb +70 -0
  130. data/lib/spec/matchers/match.rb +41 -0
  131. data/lib/spec/matchers/operator_matcher.rb +73 -0
  132. data/lib/spec/matchers/raise_error.rb +132 -0
  133. data/lib/spec/matchers/respond_to.rb +45 -0
  134. data/lib/spec/matchers/satisfy.rb +47 -0
  135. data/lib/spec/matchers/simple_matcher.rb +132 -0
  136. data/lib/spec/matchers/throw_symbol.rb +74 -0
  137. data/lib/spec/mocks.rb +211 -0
  138. data/lib/spec/mocks/argument_constraint_matchers.rb +31 -0
  139. data/lib/spec/mocks/argument_expectation.rb +216 -0
  140. data/lib/spec/mocks/error_generator.rb +84 -0
  141. data/lib/spec/mocks/errors.rb +10 -0
  142. data/lib/spec/mocks/extensions.rb +1 -0
  143. data/lib/spec/mocks/extensions/object.rb +3 -0
  144. data/lib/spec/mocks/framework.rb +15 -0
  145. data/lib/spec/mocks/message_expectation.rb +290 -0
  146. data/lib/spec/mocks/methods.rb +39 -0
  147. data/lib/spec/mocks/mock.rb +56 -0
  148. data/lib/spec/mocks/order_group.rb +29 -0
  149. data/lib/spec/mocks/proxy.rb +184 -0
  150. data/lib/spec/mocks/space.rb +28 -0
  151. data/lib/spec/mocks/spec_methods.rb +38 -0
  152. data/lib/spec/rake/spectask.rb +227 -0
  153. data/lib/spec/rake/verify_rcov.rb +52 -0
  154. data/lib/spec/runner.rb +201 -0
  155. data/lib/spec/runner/backtrace_tweaker.rb +57 -0
  156. data/lib/spec/runner/class_and_arguments_parser.rb +16 -0
  157. data/lib/spec/runner/command_line.rb +28 -0
  158. data/lib/spec/runner/drb_command_line.rb +20 -0
  159. data/lib/spec/runner/example_group_runner.rb +59 -0
  160. data/lib/spec/runner/formatter/base_formatter.rb +77 -0
  161. data/lib/spec/runner/formatter/base_text_formatter.rb +130 -0
  162. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
  163. data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  164. data/lib/spec/runner/formatter/html_formatter.rb +337 -0
  165. data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
  166. data/lib/spec/runner/formatter/profile_formatter.rb +51 -0
  167. data/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
  168. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  169. data/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
  170. data/lib/spec/runner/formatter/story/html_formatter.rb +161 -0
  171. data/lib/spec/runner/formatter/story/plain_text_formatter.rb +188 -0
  172. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  173. data/lib/spec/runner/heckle_runner.rb +72 -0
  174. data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  175. data/lib/spec/runner/option_parser.rb +203 -0
  176. data/lib/spec/runner/options.rb +309 -0
  177. data/lib/spec/runner/reporter.rb +147 -0
  178. data/lib/spec/runner/spec_parser.rb +71 -0
  179. data/lib/spec/story.rb +10 -0
  180. data/lib/spec/story/extensions.rb +3 -0
  181. data/lib/spec/story/extensions/main.rb +86 -0
  182. data/lib/spec/story/extensions/regexp.rb +9 -0
  183. data/lib/spec/story/extensions/string.rb +9 -0
  184. data/lib/spec/story/given_scenario.rb +14 -0
  185. data/lib/spec/story/runner.rb +60 -0
  186. data/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
  187. data/lib/spec/story/runner/scenario_collector.rb +18 -0
  188. data/lib/spec/story/runner/scenario_runner.rb +54 -0
  189. data/lib/spec/story/runner/story_mediator.rb +137 -0
  190. data/lib/spec/story/runner/story_parser.rb +247 -0
  191. data/lib/spec/story/runner/story_runner.rb +70 -0
  192. data/lib/spec/story/scenario.rb +14 -0
  193. data/lib/spec/story/step.rb +70 -0
  194. data/lib/spec/story/step_group.rb +89 -0
  195. data/lib/spec/story/step_mother.rb +37 -0
  196. data/lib/spec/story/story.rb +39 -0
  197. data/lib/spec/story/world.rb +128 -0
  198. data/lib/spec/translator.rb +114 -0
  199. data/lib/spec/version.rb +13 -0
  200. data/plugins/mock_frameworks/flexmock.rb +23 -0
  201. data/plugins/mock_frameworks/mocha.rb +19 -0
  202. data/plugins/mock_frameworks/rr.rb +21 -0
  203. data/plugins/mock_frameworks/rspec.rb +20 -0
  204. data/rake_tasks/examples.rake +7 -0
  205. data/rake_tasks/examples_with_rcov.rake +9 -0
  206. data/rake_tasks/failing_examples_with_html.rake +9 -0
  207. data/rake_tasks/verify_rcov.rake +7 -0
  208. data/spec/README.jruby +15 -0
  209. data/spec/autotest/discover_spec.rb +19 -0
  210. data/spec/autotest/rspec_spec.rb +206 -0
  211. data/spec/autotest_helper.rb +6 -0
  212. data/spec/autotest_matchers.rb +47 -0
  213. data/spec/rspec_suite.rb +7 -0
  214. data/spec/ruby_forker.rb +13 -0
  215. data/spec/spec.opts +6 -0
  216. data/spec/spec/adapters/ruby_engine_spec.rb +16 -0
  217. data/spec/spec/example/configuration_spec.rb +282 -0
  218. data/spec/spec/example/example_group/described_module_spec.rb +20 -0
  219. data/spec/spec/example/example_group/warning_messages_spec.rb +76 -0
  220. data/spec/spec/example/example_group_class_definition_spec.rb +48 -0
  221. data/spec/spec/example/example_group_factory_spec.rb +144 -0
  222. data/spec/spec/example/example_group_methods_spec.rb +572 -0
  223. data/spec/spec/example/example_group_spec.rb +723 -0
  224. data/spec/spec/example/example_matcher_spec.rb +96 -0
  225. data/spec/spec/example/example_methods_spec.rb +126 -0
  226. data/spec/spec/example/example_runner_spec.rb +194 -0
  227. data/spec/spec/example/example_spec.rb +53 -0
  228. data/spec/spec/example/nested_example_group_spec.rb +71 -0
  229. data/spec/spec/example/pending_module_spec.rb +42 -0
  230. data/spec/spec/example/predicate_matcher_spec.rb +21 -0
  231. data/spec/spec/example/shared_example_group_spec.rb +265 -0
  232. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  233. data/spec/spec/expectations/differs/default_spec.rb +127 -0
  234. data/spec/spec/expectations/extensions/object_spec.rb +107 -0
  235. data/spec/spec/expectations/fail_with_spec.rb +71 -0
  236. data/spec/spec/extensions/main_spec.rb +76 -0
  237. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  238. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  239. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  240. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  241. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  242. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  243. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  244. data/spec/spec/interop/test/unit/spec_spec.rb +45 -0
  245. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
  246. data/spec/spec/interop/test/unit/testcase_spec.rb +45 -0
  247. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  248. data/spec/spec/matchers/be_close_spec.rb +39 -0
  249. data/spec/spec/matchers/be_spec.rb +248 -0
  250. data/spec/spec/matchers/change_spec.rb +317 -0
  251. data/spec/spec/matchers/description_generation_spec.rb +153 -0
  252. data/spec/spec/matchers/eql_spec.rb +28 -0
  253. data/spec/spec/matchers/equal_spec.rb +28 -0
  254. data/spec/spec/matchers/exist_spec.rb +57 -0
  255. data/spec/spec/matchers/handler_spec.rb +150 -0
  256. data/spec/spec/matchers/has_spec.rb +53 -0
  257. data/spec/spec/matchers/have_spec.rb +293 -0
  258. data/spec/spec/matchers/include_spec.rb +45 -0
  259. data/spec/spec/matchers/match_spec.rb +37 -0
  260. data/spec/spec/matchers/matcher_methods_spec.rb +78 -0
  261. data/spec/spec/matchers/mock_constraint_matchers_spec.rb +24 -0
  262. data/spec/spec/matchers/operator_matcher_spec.rb +168 -0
  263. data/spec/spec/matchers/raise_error_spec.rb +315 -0
  264. data/spec/spec/matchers/respond_to_spec.rb +54 -0
  265. data/spec/spec/matchers/satisfy_spec.rb +36 -0
  266. data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
  267. data/spec/spec/matchers/throw_symbol_spec.rb +54 -0
  268. data/spec/spec/mocks/any_number_of_times_spec.rb +29 -0
  269. data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  270. data/spec/spec/mocks/at_least_spec.rb +97 -0
  271. data/spec/spec/mocks/at_most_spec.rb +93 -0
  272. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  273. data/spec/spec/mocks/bug_report_10263_spec.rb +24 -0
  274. data/spec/spec/mocks/bug_report_11545_spec.rb +33 -0
  275. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  276. data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  277. data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  278. data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  279. data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  280. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +130 -0
  281. data/spec/spec/mocks/hash_including_matcher_spec.rb +32 -0
  282. data/spec/spec/mocks/mock_ordering_spec.rb +84 -0
  283. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  284. data/spec/spec/mocks/mock_spec.rb +494 -0
  285. data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  286. data/spec/spec/mocks/null_object_mock_spec.rb +40 -0
  287. data/spec/spec/mocks/once_counts_spec.rb +53 -0
  288. data/spec/spec/mocks/options_hash_spec.rb +45 -0
  289. data/spec/spec/mocks/partial_mock_spec.rb +142 -0
  290. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  291. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +175 -0
  292. data/spec/spec/mocks/precise_counts_spec.rb +52 -0
  293. data/spec/spec/mocks/record_messages_spec.rb +26 -0
  294. data/spec/spec/mocks/stub_spec.rb +181 -0
  295. data/spec/spec/mocks/twice_counts_spec.rb +67 -0
  296. data/spec/spec/package/bin_spec_spec.rb +14 -0
  297. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  298. data/spec/spec/runner/command_line_spec.rb +147 -0
  299. data/spec/spec/runner/drb_command_line_spec.rb +92 -0
  300. data/spec/spec/runner/empty_file.txt +0 -0
  301. data/spec/spec/runner/examples.txt +2 -0
  302. data/spec/spec/runner/execution_context_spec.rb +37 -0
  303. data/spec/spec/runner/failed.txt +3 -0
  304. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  305. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  306. data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
  307. data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
  308. data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
  309. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
  310. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +370 -0
  311. data/spec/spec/runner/formatter/html_formatter_spec.rb +63 -0
  312. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +333 -0
  313. data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
  314. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +137 -0
  315. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  316. data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
  317. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +158 -0
  318. data/spec/spec/runner/formatter/story/html_formatter_spec.rb +87 -0
  319. data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +548 -0
  320. data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
  321. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +370 -0
  322. data/spec/spec/runner/heckle_runner_spec.rb +78 -0
  323. data/spec/spec/runner/heckler_spec.rb +13 -0
  324. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
  325. data/spec/spec/runner/option_parser_spec.rb +394 -0
  326. data/spec/spec/runner/options_spec.rb +450 -0
  327. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  328. data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
  329. data/spec/spec/runner/output_one_time_spec.rb +16 -0
  330. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +56 -0
  331. data/spec/spec/runner/reporter_spec.rb +192 -0
  332. data/spec/spec/runner/resources/a_bar.rb +0 -0
  333. data/spec/spec/runner/resources/a_foo.rb +0 -0
  334. data/spec/spec/runner/resources/a_spec.rb +1 -0
  335. data/spec/spec/runner/spec.opts +2 -0
  336. data/spec/spec/runner/spec_drb.opts +1 -0
  337. data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
  338. data/spec/spec/runner/spec_parser_spec.rb +85 -0
  339. data/spec/spec/runner/spec_spaced.opts +2 -0
  340. data/spec/spec/runner_spec.rb +11 -0
  341. data/spec/spec/spec_classes.rb +133 -0
  342. data/spec/spec/story/builders.rb +46 -0
  343. data/spec/spec/story/extensions/main_spec.rb +161 -0
  344. data/spec/spec/story/extensions_spec.rb +14 -0
  345. data/spec/spec/story/given_scenario_spec.rb +27 -0
  346. data/spec/spec/story/runner/plain_text_story_runner_spec.rb +93 -0
  347. data/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
  348. data/spec/spec/story/runner/scenario_runner_spec.rb +214 -0
  349. data/spec/spec/story/runner/story_mediator_spec.rb +143 -0
  350. data/spec/spec/story/runner/story_parser_spec.rb +401 -0
  351. data/spec/spec/story/runner/story_runner_spec.rb +294 -0
  352. data/spec/spec/story/runner_spec.rb +93 -0
  353. data/spec/spec/story/scenario_spec.rb +20 -0
  354. data/spec/spec/story/step_group_spec.rb +157 -0
  355. data/spec/spec/story/step_mother_spec.rb +72 -0
  356. data/spec/spec/story/step_spec.rb +250 -0
  357. data/spec/spec/story/story_helper.rb +2 -0
  358. data/spec/spec/story/story_spec.rb +86 -0
  359. data/spec/spec/story/world_spec.rb +423 -0
  360. data/spec/spec/translator_spec.rb +265 -0
  361. data/spec/spec_helper.rb +103 -0
  362. data/stories/all.rb +5 -0
  363. data/stories/example_groups/autogenerated_docstrings +45 -0
  364. data/stories/example_groups/example_group_with_should_methods +17 -0
  365. data/stories/example_groups/nested_groups +17 -0
  366. data/stories/example_groups/output +25 -0
  367. data/stories/example_groups/stories.rb +7 -0
  368. data/stories/helper.rb +6 -0
  369. data/stories/interop/examples_and_tests_together +30 -0
  370. data/stories/interop/stories.rb +7 -0
  371. data/stories/interop/test_case_with_should_methods +17 -0
  372. data/stories/mock_framework_integration/stories.rb +7 -0
  373. data/stories/mock_framework_integration/use_flexmock.story +9 -0
  374. data/stories/pending_stories/README +3 -0
  375. data/stories/resources/helpers/cmdline.rb +9 -0
  376. data/stories/resources/helpers/story_helper.rb +16 -0
  377. data/stories/resources/matchers/smart_match.rb +37 -0
  378. data/stories/resources/spec/example_group_with_should_methods.rb +12 -0
  379. data/stories/resources/spec/simple_spec.rb +8 -0
  380. data/stories/resources/spec/spec_with_flexmock.rb +18 -0
  381. data/stories/resources/steps/running_rspec.rb +50 -0
  382. data/stories/resources/stories/failing_story.rb +15 -0
  383. data/stories/resources/test/spec_and_test_together.rb +57 -0
  384. data/stories/resources/test/test_case_with_should_methods.rb +30 -0
  385. data/stories/stories/multiline_steps.story +23 -0
  386. data/stories/stories/steps/multiline_steps.rb +13 -0
  387. data/stories/stories/stories.rb +6 -0
  388. metadata +461 -0
@@ -0,0 +1,14 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+ require File.dirname(__FILE__) + '/../../ruby_forker'
3
+
4
+ describe "The bin/spec script" do
5
+ include RubyForker
6
+
7
+ it "should have no warnings" do
8
+ pending "Hangs on JRuby" if PLATFORM =~ /java/
9
+ spec_path = "#{File.dirname(__FILE__)}/../../../bin/spec"
10
+
11
+ output = ruby "-w #{spec_path} --help 2>&1"
12
+ output.should_not =~ /warning/n
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe ClassAndArgumentsParser, ".parse" do
6
+
7
+ it "should use a single : to separate class names from arguments" do
8
+ ClassAndArgumentsParser.parse('Foo').should == ['Foo', nil]
9
+ ClassAndArgumentsParser.parse('Foo:arg').should == ['Foo', 'arg']
10
+ ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg').should == ['Foo::Bar::Zap', 'arg']
11
+ ClassAndArgumentsParser.parse('Foo:arg1,arg2').should == ['Foo', 'arg1,arg2']
12
+ ClassAndArgumentsParser.parse('Foo::Bar::Zap:arg1,arg2').should == ['Foo::Bar::Zap', 'arg1,arg2']
13
+ ClassAndArgumentsParser.parse('Foo::Bar::Zap:drb://foo,drb://bar').should == ['Foo::Bar::Zap', 'drb://foo,drb://bar']
14
+ end
15
+
16
+ it "should raise an error when passed an empty string" do
17
+ lambda do
18
+ ClassAndArgumentsParser.parse('')
19
+ end.should raise_error("Couldn't parse \"\"")
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,147 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe CommandLine, ".run" do
6
+ it_should_behave_like "sandboxed rspec_options"
7
+ attr_reader :options, :err, :out
8
+ before do
9
+ @err = options.error_stream
10
+ @out = options.output_stream
11
+ end
12
+
13
+ it "should run directory" do
14
+ file = File.dirname(__FILE__) + '/../../../examples/pure'
15
+ Spec::Runner::CommandLine.run(OptionParser.parse([file,"-p","**/*.rb"], @err, @out))
16
+
17
+ @out.rewind
18
+ @out.read.should =~ /\d+ examples, 0 failures, 3 pending/n
19
+ end
20
+
21
+ it "should run file" do
22
+ file = File.dirname(__FILE__) + '/../../../failing_examples/predicate_example.rb'
23
+ Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
24
+
25
+ @out.rewind
26
+ @out.read.should =~ /2 examples, 1 failure/n
27
+ end
28
+
29
+ it "should raise when file does not exist" do
30
+ file = File.dirname(__FILE__) + '/doesntexist'
31
+
32
+ lambda {
33
+ Spec::Runner::CommandLine.run(OptionParser.parse([file], @err, @out))
34
+ }.should raise_error
35
+ end
36
+
37
+ it "should return true when in --generate-options mode" do
38
+ # NOTE - this used to say /dev/null but jruby hangs on that for some reason
39
+ Spec::Runner::CommandLine.run(
40
+ OptionParser.parse(['--generate-options', '/tmp/foo'], @err, @out)
41
+ ).should be_true
42
+ end
43
+
44
+ it "should dump even if Interrupt exception is occurred" do
45
+ example_group = Class.new(::Spec::Example::ExampleGroup) do
46
+ describe("example_group")
47
+ it "no error" do
48
+ end
49
+
50
+ it "should interrupt" do
51
+ raise Interrupt, "I'm interrupting"
52
+ end
53
+ end
54
+
55
+ options = ::Spec::Runner::Options.new(@err, @out)
56
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
57
+ options.reporter.should_receive(:dump)
58
+ options.add_example_group(example_group)
59
+
60
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
61
+ end
62
+
63
+ it "should heckle when options have heckle_runner" do
64
+ example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
65
+ it "no error" do
66
+ end
67
+ end
68
+ options = ::Spec::Runner::Options.new(@err, @out)
69
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
70
+ options.add_example_group example_group
71
+
72
+ heckle_runner = mock("heckle_runner")
73
+ heckle_runner.should_receive(:heckle_with)
74
+ $rspec_mocks.__send__(:mocks).delete(heckle_runner)
75
+
76
+ options.heckle_runner = heckle_runner
77
+ options.add_example_group(example_group)
78
+
79
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
80
+ heckle_runner.rspec_verify
81
+ end
82
+
83
+ it "should run examples backwards if options.reverse is true" do
84
+ options = ::Spec::Runner::Options.new(@err, @out)
85
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
86
+ options.reverse = true
87
+
88
+ b1 = Class.new(Spec::Example::ExampleGroup)
89
+ b2 = Class.new(Spec::Example::ExampleGroup)
90
+
91
+ b2.should_receive(:run).ordered
92
+ b1.should_receive(:run).ordered
93
+
94
+ options.add_example_group(b1)
95
+ options.add_example_group(b2)
96
+
97
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
98
+ end
99
+
100
+ it "should pass its ExampleGroup to the reporter" do
101
+ example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
102
+ it "should" do
103
+ end
104
+ end
105
+ options = ::Spec::Runner::Options.new(@err, @out)
106
+ options.add_example_group(example_group)
107
+
108
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
109
+ options.reporter.should_receive(:add_example_group).with(example_group)
110
+
111
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
112
+ end
113
+
114
+ it "runs only selected Examples when options.examples is set" do
115
+ options = ::Spec::Runner::Options.new(@err, @out)
116
+ ::Spec::Runner::Options.should_receive(:new).with(@err, @out).and_return(options)
117
+
118
+ options.examples << "example_group should"
119
+ should_has_run = false
120
+ should_not_has_run = false
121
+ example_group = Class.new(::Spec::Example::ExampleGroup).describe("example_group") do
122
+ it "should" do
123
+ should_has_run = true
124
+ end
125
+ it "should not" do
126
+ should_not_has_run = true
127
+ end
128
+ end
129
+
130
+ options.reporter.should_receive(:add_example_group).with(example_group)
131
+
132
+ options.add_example_group example_group
133
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
134
+
135
+ should_has_run.should be_true
136
+ should_not_has_run.should be_false
137
+ end
138
+
139
+ it "sets Spec.run to true" do
140
+ ::Spec.run = false
141
+ ::Spec.should_not be_run
142
+ Spec::Runner::CommandLine.run(OptionParser.parse([], @err, @out))
143
+ ::Spec.should be_run
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,92 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe DrbCommandLine, "without running local server" do
6
+ unless Config::CONFIG['ruby_install_name'] == 'jruby'
7
+ it "should print error when there is no running local server" do
8
+ err = StringIO.new
9
+ out = StringIO.new
10
+ DrbCommandLine.run(OptionParser.parse(['--version'], err, out))
11
+
12
+ err.rewind
13
+ err.read.should =~ /No server is running/
14
+ end
15
+ end
16
+ end
17
+
18
+ class DrbCommandLineSpec < ::Spec::Example::ExampleGroup
19
+ describe DrbCommandLine, "with local server"
20
+
21
+ class CommandLineForSpec
22
+ def self.run(argv, stderr, stdout)
23
+ exit Spec::Runner::CommandLine.run(OptionParser.parse(argv, stderr, stdout))
24
+ end
25
+ end
26
+
27
+ unless Config::CONFIG['ruby_install_name'] == 'jruby'
28
+ before(:all) do
29
+ DRb.start_service("druby://127.0.0.1:8989", CommandLineForSpec)
30
+ @@drb_example_file_counter = 0
31
+ end
32
+
33
+ before(:each) do
34
+ create_dummy_spec_file
35
+ @@drb_example_file_counter = @@drb_example_file_counter + 1
36
+ end
37
+
38
+ after(:each) do
39
+ File.delete(@dummy_spec_filename)
40
+ end
41
+
42
+ after(:all) do
43
+ DRb.stop_service
44
+ end
45
+
46
+ it "should run against local server" do
47
+ out = run_spec_via_druby(['--version'])
48
+ out.should =~ /RSpec/n
49
+ end
50
+
51
+ it "should output green colorized text when running with --colour option" do
52
+ out = run_spec_via_druby(["--colour", @dummy_spec_filename])
53
+ out.should =~ /\e\[32m/n
54
+ end
55
+
56
+ it "should output red colorized text when running with -c option" do
57
+ out = run_spec_via_druby(["-c", @dummy_spec_filename])
58
+ out.should =~ /\e\[31m/n
59
+ end
60
+
61
+ def create_dummy_spec_file
62
+ @dummy_spec_filename = File.expand_path(File.dirname(__FILE__)) + "/_dummy_spec#{@@drb_example_file_counter}.rb"
63
+ File.open(@dummy_spec_filename, 'w') do |f|
64
+ f.write %{
65
+ describe "DUMMY CONTEXT for 'DrbCommandLine with -c option'" do
66
+ it "should be output with green bar" do
67
+ true.should be_true
68
+ end
69
+
70
+ it "should be output with red bar" do
71
+ violated("I want to see a red bar!")
72
+ end
73
+ end
74
+ }
75
+ end
76
+ end
77
+
78
+ def run_spec_via_druby(argv)
79
+ err, out = StringIO.new, StringIO.new
80
+ out.instance_eval do
81
+ def tty?; true end
82
+ end
83
+ options = ::Spec::Runner::Options.new(err, out)
84
+ options.argv = argv
85
+ Spec::Runner::DrbCommandLine.run(options)
86
+ out.rewind; out.read
87
+ end
88
+ end
89
+
90
+ end
91
+ end
92
+ end
File without changes
@@ -0,0 +1,2 @@
1
+ Sir, if you were my husband, I would poison your drink.
2
+ Madam, if you were my wife, I would drink it.
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ describe "ExecutionContext" do
4
+
5
+ it "should provide duck_type()" do
6
+ dt = duck_type(:length)
7
+ dt.should be_an_instance_of(Spec::Mocks::DuckTypeArgConstraint)
8
+ dt.matches?([]).should be_true
9
+ end
10
+
11
+ it "should provide hash_including" do
12
+ hi = hash_including(:a => 1)
13
+ hi.should be_an_instance_of(Spec::Mocks::HashIncludingConstraint)
14
+ hi.matches?(:a => 1).should be_true
15
+ end
16
+
17
+ it "should violate when violated()" do
18
+ lambda do
19
+ violated
20
+ end.should raise_error(Spec::Expectations::ExpectationNotMetError)
21
+ end
22
+
23
+ it "should provide mock()" do
24
+ mock("thing").should be_an_instance_of(Spec::Mocks::Mock)
25
+ end
26
+
27
+ it "should provide stub()" do
28
+ thing_stub = stub("thing").should be_an_instance_of(Spec::Mocks::Mock)
29
+ end
30
+
31
+ it "should add method stubs to stub()" do
32
+ thing_stub = stub("thing", :a => "A", :b => "B")
33
+ thing_stub.a.should == "A"
34
+ thing_stub.b.should == "B"
35
+ end
36
+
37
+ end
@@ -0,0 +1,3 @@
1
+ heckler_spec.rb
2
+ command_line_spec.rb
3
+ reporter_spec.rb
@@ -0,0 +1,45 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ require 'spec/runner/formatter/failing_example_groups_formatter'
3
+
4
+ module Spec
5
+ module Runner
6
+ module Formatter
7
+ describe FailingExampleGroupsFormatter do
8
+ attr_reader :example_group, :formatter, :io
9
+
10
+ before(:each) do
11
+ @io = StringIO.new
12
+ options = mock('options')
13
+ @formatter = FailingExampleGroupsFormatter.new(options, io)
14
+ @example_group = Class.new(::Spec::Example::ExampleGroup)
15
+ end
16
+
17
+ it "should add example name for each failure" do
18
+ formatter.add_example_group(Class.new(ExampleGroup).describe("b 1"))
19
+ formatter.example_failed("e 1", nil, Reporter::Failure.new(nil, RuntimeError.new))
20
+ formatter.add_example_group(Class.new(ExampleGroup).describe("b 2"))
21
+ formatter.example_failed("e 2", nil, Reporter::Failure.new(nil, RuntimeError.new))
22
+ formatter.example_failed("e 3", nil, Reporter::Failure.new(nil, RuntimeError.new))
23
+ io.string.should include("b 1")
24
+ io.string.should include("b 2")
25
+ end
26
+
27
+ it "should delimit ExampleGroup superclass descriptions with :" do
28
+ parent_example_group = Class.new(example_group).describe("Parent")
29
+ child_example_group = Class.new(parent_example_group).describe("#child_method")
30
+ grand_child_example_group = Class.new(child_example_group).describe("GrandChild")
31
+
32
+ formatter.add_example_group(grand_child_example_group)
33
+ formatter.example_failed("failure", nil, Reporter::Failure.new(nil, RuntimeError.new))
34
+ io.string.should == "Parent#child_method GrandChild\n"
35
+ end
36
+
37
+ it "should remove druby url, which is used by Spec::Distributed" do
38
+ @formatter.add_example_group(Class.new(ExampleGroup).describe("something something (druby://99.99.99.99:99)"))
39
+ @formatter.example_failed("e 1", nil, Reporter::Failure.new(nil, RuntimeError.new))
40
+ io.string.should == "something something\n"
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ require 'spec/runner/formatter/failing_examples_formatter'
3
+
4
+ module Spec
5
+ module Runner
6
+ module Formatter
7
+ describe FailingExamplesFormatter do
8
+ before(:each) do
9
+ @io = StringIO.new
10
+ options = mock('options')
11
+ @formatter = FailingExamplesFormatter.new(options, @io)
12
+ end
13
+
14
+ it "should add example name for each failure" do
15
+ example_group_1 = Class.new(ExampleGroup).describe("A")
16
+ example_group_2 = Class.new(example_group_1).describe("B")
17
+
18
+ @formatter.add_example_group(example_group_1)
19
+ @formatter.example_failed(example_group_1.it("a1"){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
20
+ @formatter.add_example_group(example_group_2)
21
+ @formatter.example_failed(example_group_2.it("b2"){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
22
+ @formatter.example_failed(example_group_2.it("b3"){}, nil, Reporter::Failure.new(nil, RuntimeError.new))
23
+ @io.string.should eql(<<-EOF
24
+ A a1
25
+ A B b2
26
+ A B b3
27
+ EOF
28
+ )
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,365 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+ <head>
7
+ <title>RSpec results</title>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <meta http-equiv="Expires" content="-1" />
10
+ <meta http-equiv="Pragma" content="no-cache" />
11
+ <style type="text/css">
12
+ body {
13
+ margin: 0;
14
+ padding: 0;
15
+ background: #fff;
16
+ font-size: 80%;
17
+ }
18
+ </style>
19
+ </head>
20
+ <body>
21
+ <div class="rspec-report">
22
+ <script type="text/javascript">
23
+ // <![CDATA[
24
+ function moveProgressBar(percentDone) {
25
+ document.getElementById("rspec-header").style.width = percentDone +"%";
26
+ }
27
+ function makeRed(element_id) {
28
+ document.getElementById(element_id).style.background = '#C40D0D';
29
+ document.getElementById(element_id).style.color = '#FFFFFF';
30
+ }
31
+
32
+ function makeYellow(element_id) {
33
+ if (element_id == "rspec-header" && document.getElementById(element_id).style.background != '#C40D0D')
34
+ {
35
+ document.getElementById(element_id).style.background = '#FAF834';
36
+ document.getElementById(element_id).style.color = '#000000';
37
+ }
38
+ else
39
+ {
40
+ document.getElementById(element_id).style.background = '#FAF834';
41
+ document.getElementById(element_id).style.color = '#000000';
42
+ }
43
+ }
44
+
45
+ // ]]>
46
+ </script>
47
+ <style type="text/css">
48
+ #rspec-header {
49
+ background: #65C400; color: #fff;
50
+ }
51
+
52
+ .rspec-report h1 {
53
+ margin: 0px 10px 0px 10px;
54
+ padding: 10px;
55
+ font-family: "Lucida Grande", Helvetica, sans-serif;
56
+ font-size: 1.8em;
57
+ }
58
+
59
+ #summary {
60
+ margin: 0; padding: 5px 10px;
61
+ font-family: "Lucida Grande", Helvetica, sans-serif;
62
+ text-align: right;
63
+ position: absolute;
64
+ top: 0px;
65
+ right: 0px;
66
+ }
67
+
68
+ #summary p {
69
+ margin: 0 0 0 2px;
70
+ }
71
+
72
+ #summary #totals {
73
+ font-size: 1.2em;
74
+ }
75
+
76
+ .example_group {
77
+ margin: 0 10px 5px;
78
+ background: #fff;
79
+ }
80
+
81
+ dl {
82
+ margin: 0; padding: 0 0 5px;
83
+ font: normal 11px "Lucida Grande", Helvetica, sans-serif;
84
+ }
85
+
86
+ dt {
87
+ padding: 3px;
88
+ background: #65C400;
89
+ color: #fff;
90
+ font-weight: bold;
91
+ }
92
+
93
+ dd {
94
+ margin: 5px 0 5px 5px;
95
+ padding: 3px 3px 3px 18px;
96
+ }
97
+
98
+ dd.spec.passed {
99
+ border-left: 5px solid #65C400;
100
+ border-bottom: 1px solid #65C400;
101
+ background: #DBFFB4; color: #3D7700;
102
+ }
103
+
104
+ dd.spec.failed {
105
+ border-left: 5px solid #C20000;
106
+ border-bottom: 1px solid #C20000;
107
+ color: #C20000; background: #FFFBD3;
108
+ }
109
+
110
+ dd.spec.not_implemented {
111
+ border-left: 5px solid #FAF834;
112
+ border-bottom: 1px solid #FAF834;
113
+ background: #FCFB98; color: #131313;
114
+ }
115
+
116
+ dd.spec.pending_fixed {
117
+ border-left: 5px solid #0000C2;
118
+ border-bottom: 1px solid #0000C2;
119
+ color: #0000C2; background: #D3FBFF;
120
+ }
121
+
122
+ .backtrace {
123
+ color: #000;
124
+ font-size: 12px;
125
+ }
126
+
127
+ a {
128
+ color: #BE5C00;
129
+ }
130
+
131
+ /* Ruby code, style similar to vibrant ink */
132
+ .ruby {
133
+ font-size: 12px;
134
+ font-family: monospace;
135
+ color: white;
136
+ background-color: black;
137
+ padding: 0.1em 0 0.2em 0;
138
+ }
139
+
140
+ .ruby .keyword { color: #FF6600; }
141
+ .ruby .constant { color: #339999; }
142
+ .ruby .attribute { color: white; }
143
+ .ruby .global { color: white; }
144
+ .ruby .module { color: white; }
145
+ .ruby .class { color: white; }
146
+ .ruby .string { color: #66FF00; }
147
+ .ruby .ident { color: white; }
148
+ .ruby .method { color: #FFCC00; }
149
+ .ruby .number { color: white; }
150
+ .ruby .char { color: white; }
151
+ .ruby .comment { color: #9933CC; }
152
+ .ruby .symbol { color: white; }
153
+ .ruby .regex { color: #44B4CC; }
154
+ .ruby .punct { color: white; }
155
+ .ruby .escape { color: white; }
156
+ .ruby .interp { color: white; }
157
+ .ruby .expr { color: white; }
158
+
159
+ .ruby .offending { background-color: gray; }
160
+ .ruby .linenum {
161
+ width: 75px;
162
+ padding: 0.1em 1em 0.2em 0;
163
+ color: #000000;
164
+ background-color: #FFFBD3;
165
+ }
166
+
167
+ </style>
168
+
169
+ <div id="rspec-header">
170
+ <h1>RSpec Results</h1>
171
+
172
+ <div id="summary">
173
+ <p id="totals">&nbsp;</p>
174
+ <p id="duration">&nbsp;</p>
175
+ </div>
176
+ </div>
177
+
178
+ <div class="results">
179
+ <div class="example_group">
180
+ <dl>
181
+ <dt id="example_group_1">Mocker</dt>
182
+ <script type="text/javascript">moveProgressBar('5.8');</script>
183
+ <dd class="spec passed"><span class="passed_spec_name">should be able to call mock()</span></dd>
184
+ <script type="text/javascript">makeRed('rspec-header');</script>
185
+ <script type="text/javascript">makeRed('example_group_1');</script>
186
+ <script type="text/javascript">moveProgressBar('11.7');</script>
187
+ <dd class="spec failed">
188
+ <span class="failed_spec_name">should fail when expected message not received</span>
189
+ <div class="failure" id="failure_1">
190
+ <div class="message"><pre>Mock 'poke me' expected :poke with (any args) once, but received it 0 times</pre></div>
191
+ <div class="backtrace"><pre>./failing_examples/mocking_example.rb:13:
192
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
193
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
194
+ <pre class="ruby"><code><span class="linenum">11</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should fail when expected message not received</span><span class="punct">&quot;</span> <span class="keyword">do</span>
195
+ <span class="linenum">12</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">poke me</span><span class="punct">&quot;)</span>
196
+ <span class="offending"><span class="linenum">13</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:poke</span><span class="punct">)</span></span>
197
+ <span class="linenum">14</span> <span class="keyword">end</span>
198
+ <span class="linenum">15</span> </code></pre>
199
+ </div>
200
+ </dd>
201
+ <script type="text/javascript">moveProgressBar('17.6');</script>
202
+ <dd class="spec failed">
203
+ <span class="failed_spec_name">should fail when messages are received out of order</span>
204
+ <div class="failure" id="failure_2">
205
+ <div class="message"><pre>Mock 'one two three' received :three out of order</pre></div>
206
+ <div class="backtrace"><pre>./failing_examples/mocking_example.rb:22:
207
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
208
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
209
+ <pre class="ruby"><code><span class="linenum">20</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_receive</span><span class="punct">(</span><span class="symbol">:three</span><span class="punct">).</span><span class="ident">ordered</span>
210
+ <span class="linenum">21</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">one</span>
211
+ <span class="offending"><span class="linenum">22</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">three</span></span>
212
+ <span class="linenum">23</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">two</span>
213
+ <span class="linenum">24</span> <span class="keyword">end</span></code></pre>
214
+ </div>
215
+ </dd>
216
+ <script type="text/javascript">moveProgressBar('23.5');</script>
217
+ <dd class="spec failed">
218
+ <span class="failed_spec_name">should get yelled at when sending unexpected messages</span>
219
+ <div class="failure" id="failure_3">
220
+ <div class="message"><pre>Mock 'don't talk to me' expected :any_message_at_all with (any args) 0 times, but received it once</pre></div>
221
+ <div class="backtrace"><pre>./failing_examples/mocking_example.rb:28:
222
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
223
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
224
+ <pre class="ruby"><code><span class="linenum">26</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">should get yelled at when sending unexpected messages</span><span class="punct">&quot;</span> <span class="keyword">do</span>
225
+ <span class="linenum">27</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">don't talk to me</span><span class="punct">&quot;)</span>
226
+ <span class="offending"><span class="linenum">28</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">should_not_receive</span><span class="punct">(</span><span class="symbol">:any_message_at_all</span><span class="punct">)</span></span>
227
+ <span class="linenum">29</span> <span class="ident">mock</span><span class="punct">.</span><span class="ident">any_message_at_all</span>
228
+ <span class="linenum">30</span> <span class="keyword">end</span></code></pre>
229
+ </div>
230
+ </dd>
231
+ <script type="text/javascript">moveProgressBar('29.4');</script>
232
+ <dd class="spec pending_fixed">
233
+ <span class="failed_spec_name">has a bug we need to fix</span>
234
+ <div class="failure" id="failure_4">
235
+ <div class="message"><pre>Expected pending 'here is the bug' to fail. No Error was raised.</pre></div>
236
+ <div class="backtrace"><pre>./failing_examples/mocking_example.rb:33:
237
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
238
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
239
+ <pre class="ruby"><code><span class="linenum">31</span>
240
+ <span class="linenum">32</span> <span class="ident">it</span> <span class="punct">&quot;</span><span class="string">has a bug we need to fix</span><span class="punct">&quot;</span> <span class="keyword">do</span>
241
+ <span class="offending"><span class="linenum">33</span> <span class="ident">pending</span> <span class="punct">&quot;</span><span class="string">here is the bug</span><span class="punct">&quot;</span> <span class="keyword">do</span></span>
242
+ <span class="linenum">34</span> <span class="comment"># Actually, no. It's fixed. This will fail because it passes :-)</span>
243
+ <span class="linenum">35</span> <span class="ident">mock</span> <span class="punct">=</span> <span class="ident">mock</span><span class="punct">(&quot;</span><span class="string">Bug</span><span class="punct">&quot;)</span></code></pre>
244
+ </div>
245
+ </dd>
246
+ </dl>
247
+ </div>
248
+ <div class="example_group">
249
+ <dl>
250
+ <dt id="example_group_2">Running specs with --diff</dt>
251
+ <script type="text/javascript">makeRed('example_group_2');</script>
252
+ <script type="text/javascript">moveProgressBar('35.2');</script>
253
+ <dd class="spec failed">
254
+ <span class="failed_spec_name">should print diff of different strings</span>
255
+ <div class="failure" id="failure_5">
256
+ <div class="message"><pre>expected: &quot;RSpec is a\nbehaviour driven development\nframework for Ruby\n&quot;,
257
+ got: &quot;RSpec is a\nbehavior driven development\nframework for Ruby\n&quot; (using ==)
258
+ Diff:
259
+ @@ -1,4 +1,4 @@
260
+ RSpec is a
261
+ -behavior driven development
262
+ +behaviour driven development
263
+ framework for Ruby
264
+ </pre></div>
265
+ <div class="backtrace"><pre>./failing_examples/diffing_spec.rb:13:
266
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
267
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
268
+ <pre class="ruby"><code><span class="linenum">11</span><span class="ident">framework</span> <span class="keyword">for</span> <span class="constant">Ruby</span>
269
+ <span class="linenum">12</span><span class="constant">EOF</span>
270
+ <span class="offending"><span class="linenum">13</span> <span class="ident">usa</span><span class="punct">.</span><span class="ident">should</span> <span class="punct">==</span> <span class="ident">uk</span></span>
271
+ <span class="linenum">14</span> <span class="keyword">end</span></code></pre>
272
+ </div>
273
+ </dd>
274
+ <script type="text/javascript">moveProgressBar('41.1');</script>
275
+ <dd class="spec failed">
276
+ <span class="failed_spec_name">should print diff of different objects' pretty representation</span>
277
+ <div class="failure" id="failure_6">
278
+ <div class="message"><pre>expected &lt;Animal
279
+ name=bob,
280
+ species=tortoise
281
+ &gt;
282
+ , got &lt;Animal
283
+ name=bob,
284
+ species=giraffe
285
+ &gt;
286
+ (using .eql?)
287
+ Diff:
288
+ @@ -1,5 +1,5 @@
289
+ &lt;Animal
290
+ name=bob,
291
+ -species=giraffe
292
+ +species=tortoise
293
+ &gt;
294
+ </pre></div>
295
+ <div class="backtrace"><pre>./failing_examples/diffing_spec.rb:34:
296
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:24:
297
+ ./spec/spec/runner/formatter/html_formatter_spec.rb:20:</pre></div>
298
+ <pre class="ruby"><code><span class="linenum">32</span> <span class="ident">expected</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">giraffe</span><span class="punct">&quot;</span>
299
+ <span class="linenum">33</span> <span class="ident">actual</span> <span class="punct">=</span> <span class="constant">Animal</span><span class="punct">.</span><span class="ident">new</span> <span class="punct">&quot;</span><span class="string">bob</span><span class="punct">&quot;,</span> <span class="punct">&quot;</span><span class="string">tortoise</span><span class="punct">&quot;</span>
300
+ <span class="offending"><span class="linenum">34</span> <span class="ident">expected</span><span class="punct">.</span><span class="ident">should</span> <span class="ident">eql</span><span class="punct">(</span><span class="ident">actual</span><span class="punct">)</span></span>
301
+ <span class="linenum">35</span> <span class="keyword">end</span>
302
+ <span class="linenum">36</span><span class="keyword">end</span></code></pre>
303
+ </div>
304
+ </dd>
305
+ </dl>
306
+ </div>
307
+ <div class="example_group">
308
+ <dl>
309
+ <dt id="example_group_3">A consumer of a stub</dt>
310
+ <script type="text/javascript">moveProgressBar('47.0');</script>
311
+ <dd class="spec passed"><span class="passed_spec_name">should be able to stub methods on any Object</span></dd>
312
+ </dl>
313
+ </div>
314
+ <div class="example_group">
315
+ <dl>
316
+ <dt id="example_group_4">A stubbed method on a class</dt>
317
+ <script type="text/javascript">moveProgressBar('52.9');</script>
318
+ <dd class="spec passed"><span class="passed_spec_name">should return the stubbed value</span></dd>
319
+ <script type="text/javascript">moveProgressBar('58.8');</script>
320
+ <dd class="spec passed"><span class="passed_spec_name">should revert to the original method after each spec</span></dd>
321
+ <script type="text/javascript">moveProgressBar('64.7');</script>
322
+ <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
323
+ </dl>
324
+ </div>
325
+ <div class="example_group">
326
+ <dl>
327
+ <dt id="example_group_5">A mock</dt>
328
+ <script type="text/javascript">moveProgressBar('70.5');</script>
329
+ <dd class="spec passed"><span class="passed_spec_name">can stub!</span></dd>
330
+ <script type="text/javascript">moveProgressBar('76.4');</script>
331
+ <dd class="spec passed"><span class="passed_spec_name">can stub! and mock</span></dd>
332
+ <script type="text/javascript">moveProgressBar('82.3');</script>
333
+ <dd class="spec passed"><span class="passed_spec_name">can stub! and mock the same message</span></dd>
334
+ </dl>
335
+ </div>
336
+ <div class="example_group">
337
+ <dl>
338
+ <dt id="example_group_6">pending example (using pending method)</dt>
339
+ <script type="text/javascript">makeYellow('example_group_6');</script>
340
+ <script type="text/javascript">moveProgressBar('88.2');</script>
341
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
342
+ </dl>
343
+ </div>
344
+ <div class="example_group">
345
+ <dl>
346
+ <dt id="example_group_7">pending example (with no block)</dt>
347
+ <script type="text/javascript">makeYellow('example_group_7');</script>
348
+ <script type="text/javascript">moveProgressBar('94.1');</script>
349
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should be reported as &quot;PENDING: Not Yet Implemented&quot; (PENDING: Not Yet Implemented)</span></dd>
350
+ </dl>
351
+ </div>
352
+ <div class="example_group">
353
+ <dl>
354
+ <dt id="example_group_8">pending example (with block for pending)</dt>
355
+ <script type="text/javascript">makeYellow('example_group_8');</script>
356
+ <script type="text/javascript">moveProgressBar('100.0');</script>
357
+ <dd class="spec not_implemented"><span class="not_implemented_spec_name">should have a failing block, passed to pending, reported as &quot;PENDING: for some reason&quot; (PENDING: for some reason)</span></dd>
358
+ </dl>
359
+ </div>
360
+ <script type="text/javascript">document.getElementById('duration').innerHTML = "Finished in <strong>x seconds</strong>";</script>
361
+ <script type="text/javascript">document.getElementById('totals').innerHTML = "17 examples, 6 failures, 3 pending";</script>
362
+ </div>
363
+ </div>
364
+ </body>
365
+ </html>