newbamboo-rspec 1.1.12

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 (324) hide show
  1. data/.autotest +4 -0
  2. data/History.txt +1263 -0
  3. data/License.txt +22 -0
  4. data/Manifest.txt +327 -0
  5. data/README.txt +57 -0
  6. data/Rakefile +104 -0
  7. data/TODO.txt +18 -0
  8. data/bin/autospec +4 -0
  9. data/bin/spec +4 -0
  10. data/examples/failing/README.txt +7 -0
  11. data/examples/failing/diffing_spec.rb +36 -0
  12. data/examples/failing/failing_autogenerated_docstrings_example.rb +19 -0
  13. data/examples/failing/failure_in_after.rb +10 -0
  14. data/examples/failing/failure_in_before.rb +10 -0
  15. data/examples/failing/mocking_example.rb +40 -0
  16. data/examples/failing/mocking_with_flexmock.rb +26 -0
  17. data/examples/failing/mocking_with_mocha.rb +25 -0
  18. data/examples/failing/mocking_with_rr.rb +27 -0
  19. data/examples/failing/partial_mock_example.rb +20 -0
  20. data/examples/failing/predicate_example.rb +34 -0
  21. data/examples/failing/raising_example.rb +47 -0
  22. data/examples/failing/spec_helper.rb +3 -0
  23. data/examples/failing/syntax_error_example.rb +7 -0
  24. data/examples/failing/team_spec.rb +44 -0
  25. data/examples/failing/timeout_behaviour.rb +7 -0
  26. data/examples/passing/autogenerated_docstrings_example.rb +25 -0
  27. data/examples/passing/before_and_after_example.rb +40 -0
  28. data/examples/passing/behave_as_example.rb +45 -0
  29. data/examples/passing/custom_expectation_matchers.rb +54 -0
  30. data/examples/passing/custom_formatter.rb +12 -0
  31. data/examples/passing/dynamic_spec.rb +9 -0
  32. data/examples/passing/file_accessor.rb +19 -0
  33. data/examples/passing/file_accessor_spec.rb +38 -0
  34. data/examples/passing/greeter_spec.rb +31 -0
  35. data/examples/passing/helper_method_example.rb +14 -0
  36. data/examples/passing/io_processor.rb +8 -0
  37. data/examples/passing/io_processor_spec.rb +21 -0
  38. data/examples/passing/legacy_spec.rb +11 -0
  39. data/examples/passing/mocking_example.rb +27 -0
  40. data/examples/passing/multi_threaded_example_group_runner.rb +26 -0
  41. data/examples/passing/nested_classes_example.rb +36 -0
  42. data/examples/passing/partial_mock_example.rb +29 -0
  43. data/examples/passing/pending_example.rb +20 -0
  44. data/examples/passing/predicate_example.rb +27 -0
  45. data/examples/passing/priority.txt +1 -0
  46. data/examples/passing/shared_example_group_example.rb +81 -0
  47. data/examples/passing/shared_stack_examples.rb +36 -0
  48. data/examples/passing/simple_matcher_example.rb +31 -0
  49. data/examples/passing/spec_helper.rb +3 -0
  50. data/examples/passing/stack.rb +36 -0
  51. data/examples/passing/stack_spec.rb +64 -0
  52. data/examples/passing/stack_spec_with_nested_example_groups.rb +67 -0
  53. data/examples/passing/stubbing_example.rb +69 -0
  54. data/examples/passing/yielding_example.rb +33 -0
  55. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +86 -0
  56. data/features/before_and_after_blocks/before_and_after_blocks.feature +168 -0
  57. data/features/example_groups/autogenerated_docstrings.feature +45 -0
  58. data/features/example_groups/example_group_with_should_methods.feature +17 -0
  59. data/features/example_groups/nested_groups.feature +17 -0
  60. data/features/example_groups/output.feature +20 -0
  61. data/features/interop/examples_and_tests_together.feature +31 -0
  62. data/features/interop/test_but_not_test_unit.feature +14 -0
  63. data/features/interop/test_case_with_should_methods.feature +17 -0
  64. data/features/mock_framework_integration/use_flexmock.feature +27 -0
  65. data/features/step_definitions/running_rspec.rb +54 -0
  66. data/features/support/env.rb +26 -0
  67. data/features/support/helpers/cmdline.rb +9 -0
  68. data/features/support/matchers/smart_match.rb +37 -0
  69. data/init.rb +9 -0
  70. data/lib/adapters/mock_frameworks/flexmock.rb +24 -0
  71. data/lib/adapters/mock_frameworks/mocha.rb +20 -0
  72. data/lib/adapters/mock_frameworks/rr.rb +22 -0
  73. data/lib/adapters/mock_frameworks/rspec.rb +20 -0
  74. data/lib/autotest/discover.rb +3 -0
  75. data/lib/autotest/rspec.rb +47 -0
  76. data/lib/spec/dsl/main.rb +87 -0
  77. data/lib/spec/dsl.rb +1 -0
  78. data/lib/spec/example/before_and_after_hooks.rb +99 -0
  79. data/lib/spec/example/errors.rb +30 -0
  80. data/lib/spec/example/example_group.rb +26 -0
  81. data/lib/spec/example/example_group_factory.rb +98 -0
  82. data/lib/spec/example/example_group_methods.rb +376 -0
  83. data/lib/spec/example/example_matcher.rb +44 -0
  84. data/lib/spec/example/example_methods.rb +137 -0
  85. data/lib/spec/example/module_reopening_fix.rb +21 -0
  86. data/lib/spec/example/pending.rb +18 -0
  87. data/lib/spec/example/shared_example_group.rb +59 -0
  88. data/lib/spec/example.rb +187 -0
  89. data/lib/spec/expectations/differs/default.rb +66 -0
  90. data/lib/spec/expectations/errors.rb +12 -0
  91. data/lib/spec/expectations/extensions/object.rb +63 -0
  92. data/lib/spec/expectations/extensions/string_and_symbol.rb +17 -0
  93. data/lib/spec/expectations/extensions.rb +2 -0
  94. data/lib/spec/expectations/handler.rb +32 -0
  95. data/lib/spec/expectations.rb +60 -0
  96. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  97. data/lib/spec/interop/test/unit/testcase.rb +73 -0
  98. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  99. data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  100. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  101. data/lib/spec/interop/test.rb +12 -0
  102. data/lib/spec/matchers/be.rb +208 -0
  103. data/lib/spec/matchers/be_close.rb +21 -0
  104. data/lib/spec/matchers/change.rb +148 -0
  105. data/lib/spec/matchers/eql.rb +25 -0
  106. data/lib/spec/matchers/equal.rb +25 -0
  107. data/lib/spec/matchers/errors.rb +5 -0
  108. data/lib/spec/matchers/exist.rb +16 -0
  109. data/lib/spec/matchers/generated_descriptions.rb +48 -0
  110. data/lib/spec/matchers/has.rb +15 -0
  111. data/lib/spec/matchers/have.rb +150 -0
  112. data/lib/spec/matchers/include.rb +80 -0
  113. data/lib/spec/matchers/match.rb +22 -0
  114. data/lib/spec/matchers/match_array.rb +79 -0
  115. data/lib/spec/matchers/method_missing.rb +9 -0
  116. data/lib/spec/matchers/operator_matcher.rb +70 -0
  117. data/lib/spec/matchers/raise_error.rb +128 -0
  118. data/lib/spec/matchers/respond_to.rb +71 -0
  119. data/lib/spec/matchers/satisfy.rb +47 -0
  120. data/lib/spec/matchers/simple_matcher.rb +132 -0
  121. data/lib/spec/matchers/throw_symbol.rb +106 -0
  122. data/lib/spec/matchers/wrap_expectation.rb +55 -0
  123. data/lib/spec/matchers.rb +141 -0
  124. data/lib/spec/mocks/argument_expectation.rb +49 -0
  125. data/lib/spec/mocks/argument_matchers.rb +237 -0
  126. data/lib/spec/mocks/error_generator.rb +82 -0
  127. data/lib/spec/mocks/errors.rb +10 -0
  128. data/lib/spec/mocks/extensions/object.rb +3 -0
  129. data/lib/spec/mocks/extensions.rb +1 -0
  130. data/lib/spec/mocks/framework.rb +15 -0
  131. data/lib/spec/mocks/message_expectation.rb +331 -0
  132. data/lib/spec/mocks/methods.rb +51 -0
  133. data/lib/spec/mocks/mock.rb +55 -0
  134. data/lib/spec/mocks/order_group.rb +29 -0
  135. data/lib/spec/mocks/proxy.rb +230 -0
  136. data/lib/spec/mocks/space.rb +28 -0
  137. data/lib/spec/mocks/spec_methods.rb +55 -0
  138. data/lib/spec/mocks.rb +200 -0
  139. data/lib/spec/rake/spectask.rb +225 -0
  140. data/lib/spec/rake/verify_rcov.rb +52 -0
  141. data/lib/spec/ruby.rb +9 -0
  142. data/lib/spec/runner/backtrace_tweaker.rb +58 -0
  143. data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  144. data/lib/spec/runner/command_line.rb +35 -0
  145. data/lib/spec/runner/configuration.rb +166 -0
  146. data/lib/spec/runner/drb_command_line.rb +20 -0
  147. data/lib/spec/runner/example_group_runner.rb +70 -0
  148. data/lib/spec/runner/formatter/base_formatter.rb +79 -0
  149. data/lib/spec/runner/formatter/base_text_formatter.rb +127 -0
  150. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +27 -0
  151. data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  152. data/lib/spec/runner/formatter/html_formatter.rb +340 -0
  153. data/lib/spec/runner/formatter/nested_text_formatter.rb +65 -0
  154. data/lib/spec/runner/formatter/profile_formatter.rb +51 -0
  155. data/lib/spec/runner/formatter/progress_bar_formatter.rb +34 -0
  156. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  157. data/lib/spec/runner/formatter/specdoc_formatter.rb +39 -0
  158. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  159. data/lib/spec/runner/heckle_runner.rb +74 -0
  160. data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  161. data/lib/spec/runner/option_parser.rb +204 -0
  162. data/lib/spec/runner/options.rb +320 -0
  163. data/lib/spec/runner/reporter.rb +167 -0
  164. data/lib/spec/runner/spec_parser.rb +73 -0
  165. data/lib/spec/runner.rb +88 -0
  166. data/lib/spec/version.rb +15 -0
  167. data/lib/spec.rb +7 -0
  168. data/resources/rake/examples.rake +7 -0
  169. data/resources/rake/examples_with_rcov.rake +9 -0
  170. data/resources/rake/failing_examples_with_html.rake +9 -0
  171. data/resources/rake/verify_rcov.rake +7 -0
  172. data/resources/spec/example_group_with_should_methods.rb +12 -0
  173. data/resources/spec/simple_spec.rb +8 -0
  174. data/resources/test/spec_and_test_together.rb +57 -0
  175. data/resources/test/spec_including_test_but_not_unit.rb +11 -0
  176. data/resources/test/test_case_with_should_methods.rb +30 -0
  177. data/rspec.gemspec +32 -0
  178. data/spec/README.jruby +15 -0
  179. data/spec/autotest/autotest_helper.rb +6 -0
  180. data/spec/autotest/autotest_matchers.rb +47 -0
  181. data/spec/autotest/discover_spec.rb +8 -0
  182. data/spec/autotest/failed_results_re_spec.rb +24 -0
  183. data/spec/autotest/rspec_spec.rb +114 -0
  184. data/spec/rspec_suite.rb +6 -0
  185. data/spec/ruby_forker.rb +13 -0
  186. data/spec/spec/dsl/main_spec.rb +88 -0
  187. data/spec/spec/example/example_group_class_definition_spec.rb +49 -0
  188. data/spec/spec/example/example_group_factory_spec.rb +224 -0
  189. data/spec/spec/example/example_group_methods_spec.rb +653 -0
  190. data/spec/spec/example/example_group_spec.rb +661 -0
  191. data/spec/spec/example/example_matcher_spec.rb +79 -0
  192. data/spec/spec/example/example_methods_spec.rb +204 -0
  193. data/spec/spec/example/helper_method_spec.rb +24 -0
  194. data/spec/spec/example/nested_example_group_spec.rb +71 -0
  195. data/spec/spec/example/pending_module_spec.rb +139 -0
  196. data/spec/spec/example/predicate_matcher_spec.rb +21 -0
  197. data/spec/spec/example/shared_example_group_spec.rb +257 -0
  198. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  199. data/spec/spec/expectations/differs/default_spec.rb +127 -0
  200. data/spec/spec/expectations/extensions/object_spec.rb +45 -0
  201. data/spec/spec/expectations/fail_with_spec.rb +71 -0
  202. data/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
  203. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  204. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  205. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  206. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  207. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  208. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  209. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  210. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  211. data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  212. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  213. data/spec/spec/interop/test/unit/testcase_spec.rb +49 -0
  214. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  215. data/spec/spec/matchers/be_close_spec.rb +41 -0
  216. data/spec/spec/matchers/be_spec.rb +303 -0
  217. data/spec/spec/matchers/change_spec.rb +329 -0
  218. data/spec/spec/matchers/description_generation_spec.rb +172 -0
  219. data/spec/spec/matchers/eql_spec.rb +29 -0
  220. data/spec/spec/matchers/equal_spec.rb +29 -0
  221. data/spec/spec/matchers/exist_spec.rb +57 -0
  222. data/spec/spec/matchers/handler_spec.rb +111 -0
  223. data/spec/spec/matchers/has_spec.rb +63 -0
  224. data/spec/spec/matchers/have_spec.rb +399 -0
  225. data/spec/spec/matchers/include_spec.rb +88 -0
  226. data/spec/spec/matchers/match_array_spec.rb +83 -0
  227. data/spec/spec/matchers/match_spec.rb +37 -0
  228. data/spec/spec/matchers/matcher_methods_spec.rb +66 -0
  229. data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
  230. data/spec/spec/matchers/raise_error_spec.rb +333 -0
  231. data/spec/spec/matchers/respond_to_spec.rb +116 -0
  232. data/spec/spec/matchers/satisfy_spec.rb +36 -0
  233. data/spec/spec/matchers/simple_matcher_spec.rb +93 -0
  234. data/spec/spec/matchers/throw_symbol_spec.rb +96 -0
  235. data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
  236. data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  237. data/spec/spec/mocks/at_least_spec.rb +97 -0
  238. data/spec/spec/mocks/at_most_spec.rb +93 -0
  239. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  240. data/spec/spec/mocks/bug_report_10263_spec.rb +24 -0
  241. data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  242. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  243. data/spec/spec/mocks/bug_report_496.rb +19 -0
  244. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  245. data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  246. data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  247. data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  248. data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  249. data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  250. data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  251. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  252. data/spec/spec/mocks/mock_ordering_spec.rb +84 -0
  253. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  254. data/spec/spec/mocks/mock_spec.rb +579 -0
  255. data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  256. data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  257. data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
  258. data/spec/spec/mocks/once_counts_spec.rb +53 -0
  259. data/spec/spec/mocks/options_hash_spec.rb +35 -0
  260. data/spec/spec/mocks/partial_mock_spec.rb +149 -0
  261. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  262. data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  263. data/spec/spec/mocks/precise_counts_spec.rb +52 -0
  264. data/spec/spec/mocks/record_messages_spec.rb +26 -0
  265. data/spec/spec/mocks/stub_spec.rb +194 -0
  266. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +14 -0
  267. data/spec/spec/mocks/twice_counts_spec.rb +67 -0
  268. data/spec/spec/package/bin_spec_spec.rb +22 -0
  269. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  270. data/spec/spec/runner/command_line_spec.rb +141 -0
  271. data/spec/spec/runner/configuration_spec.rb +301 -0
  272. data/spec/spec/runner/drb_command_line_spec.rb +97 -0
  273. data/spec/spec/runner/empty_file.txt +0 -0
  274. data/spec/spec/runner/example_group_runner_spec.rb +33 -0
  275. data/spec/spec/runner/examples.txt +2 -0
  276. data/spec/spec/runner/failed.txt +3 -0
  277. data/spec/spec/runner/formatter/base_formatter_spec.rb +23 -0
  278. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +23 -0
  279. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  280. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  281. data/spec/spec/runner/formatter/html_formatted-1.8.4.html +365 -0
  282. data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +387 -0
  283. data/spec/spec/runner/formatter/html_formatted-1.8.5.html +371 -0
  284. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +381 -0
  285. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +379 -0
  286. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +379 -0
  287. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +379 -0
  288. data/spec/spec/runner/formatter/html_formatter_spec.rb +62 -0
  289. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +318 -0
  290. data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
  291. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +145 -0
  292. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  293. data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +104 -0
  294. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
  295. data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +365 -0
  296. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +373 -0
  297. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +373 -0
  298. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +373 -0
  299. data/spec/spec/runner/heckle_runner_spec.rb +78 -0
  300. data/spec/spec/runner/heckler_spec.rb +20 -0
  301. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +45 -0
  302. data/spec/spec/runner/option_parser_spec.rb +396 -0
  303. data/spec/spec/runner/options_spec.rb +469 -0
  304. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  305. data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
  306. data/spec/spec/runner/output_one_time_spec.rb +16 -0
  307. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +62 -0
  308. data/spec/spec/runner/reporter_spec.rb +238 -0
  309. data/spec/spec/runner/resources/a_bar.rb +0 -0
  310. data/spec/spec/runner/resources/a_foo.rb +0 -0
  311. data/spec/spec/runner/resources/a_spec.rb +1 -0
  312. data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  313. data/spec/spec/runner/resources/utf8_encoded.rb +7 -0
  314. data/spec/spec/runner/spec.opts +2 -0
  315. data/spec/spec/runner/spec_drb.opts +1 -0
  316. data/spec/spec/runner/spec_parser/spec_parser_fixture.rb +70 -0
  317. data/spec/spec/runner/spec_parser_spec.rb +91 -0
  318. data/spec/spec/runner/spec_spaced.opts +2 -0
  319. data/spec/spec/runner_spec.rb +11 -0
  320. data/spec/spec/spec_classes.rb +133 -0
  321. data/spec/spec/spec_spec.rb +21 -0
  322. data/spec/spec.opts +6 -0
  323. data/spec/spec_helper.rb +107 -0
  324. metadata +388 -0
@@ -0,0 +1,238 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe Reporter do
6
+ attr_reader :formatter_output, :options, :backtrace_tweaker, :formatter, :reporter, :example_group
7
+ before(:each) do
8
+ @formatter_output = StringIO.new
9
+ @options = Options.new(StringIO.new, StringIO.new)
10
+ @backtrace_tweaker = stub("backtrace tweaker", :tweak_backtrace => nil)
11
+ options.backtrace_tweaker = backtrace_tweaker
12
+ @formatter = ::Spec::Runner::Formatter::BaseTextFormatter.new(options, formatter_output)
13
+ options.formatters << formatter
14
+ @reporter = Reporter.new(options)
15
+ @example_group = create_example_group("example_group")
16
+ reporter.add_example_group example_group
17
+ end
18
+
19
+ def failure
20
+ Mocks::ArgumentMatchers::DuckTypeMatcher.new(:header, :exception)
21
+ end
22
+
23
+ def create_example_group(description_text)
24
+ example_group = Spec::Example::ExampleGroup.describe(description_text) do
25
+ it "should do something" do
26
+ end
27
+ end
28
+ example_group
29
+ end
30
+
31
+ it "should assign itself as the reporter to options" do
32
+ options.reporter.should equal(@reporter)
33
+ end
34
+
35
+ it "should tell formatter when example_group is added" do
36
+ formatter.should_receive(:add_example_group).with(example_group)
37
+ reporter.add_example_group(example_group)
38
+ end
39
+
40
+ it "should handle multiple example_groups with same name" do
41
+ formatter.should_receive(:add_example_group).exactly(3).times
42
+ formatter.should_receive(:example_started).exactly(3).times
43
+ formatter.should_receive(:example_passed).exactly(3).times
44
+ formatter.should_receive(:start_dump)
45
+ formatter.should_receive(:dump_pending)
46
+ formatter.should_receive(:close).with(no_args)
47
+ formatter.should_receive(:dump_summary).with(anything(), 3, 0, 0)
48
+ reporter.add_example_group(create_example_group("example_group"))
49
+ reporter.example_started("spec 1")
50
+ reporter.example_finished("spec 1")
51
+ reporter.add_example_group(create_example_group("example_group"))
52
+ reporter.example_started("spec 2")
53
+ reporter.example_finished("spec 2")
54
+ reporter.add_example_group(create_example_group("example_group"))
55
+ reporter.example_started("spec 3")
56
+ reporter.example_finished("spec 3")
57
+ reporter.dump
58
+ end
59
+
60
+ it "should handle multiple examples with the same name" do
61
+ error=RuntimeError.new
62
+ passing = ExampleGroup.new("example")
63
+ failing = ExampleGroup.new("example")
64
+
65
+ formatter.should_receive(:add_example_group).exactly(2).times
66
+ formatter.should_receive(:example_passed).with(passing).exactly(2).times
67
+ formatter.should_receive(:example_failed).with(failing, 1, failure)
68
+ formatter.should_receive(:example_failed).with(failing, 2, failure)
69
+ formatter.should_receive(:dump_failure).exactly(2).times
70
+ formatter.should_receive(:start_dump)
71
+ formatter.should_receive(:dump_pending)
72
+ formatter.should_receive(:close).with(no_args)
73
+ formatter.should_receive(:dump_summary).with(anything(), 4, 2, 0)
74
+ backtrace_tweaker.should_receive(:tweak_backtrace).twice
75
+
76
+ reporter.add_example_group(create_example_group("example_group"))
77
+ reporter.example_finished(passing)
78
+ reporter.example_finished(failing, error)
79
+
80
+ reporter.add_example_group(create_example_group("example_group"))
81
+ reporter.example_finished(passing)
82
+ reporter.example_finished(failing, error)
83
+ reporter.dump
84
+ end
85
+
86
+ it "should push stats to formatter even with no data" do
87
+ formatter.should_receive(:start_dump)
88
+ formatter.should_receive(:dump_pending)
89
+ formatter.should_receive(:dump_summary).with(anything(), 0, 0, 0)
90
+ formatter.should_receive(:close).with(no_args)
91
+ reporter.dump
92
+ end
93
+
94
+ it "should push time to formatter" do
95
+ formatter.should_receive(:start).with(5)
96
+ formatter.should_receive(:start_dump)
97
+ formatter.should_receive(:dump_pending)
98
+ formatter.should_receive(:close).with(no_args)
99
+ formatter.should_receive(:dump_summary) do |time, a, b|
100
+ time.to_s.should match(/[0-9].[0-9|e|-]+/)
101
+ end
102
+ reporter.start(5)
103
+ reporter.end
104
+ reporter.dump
105
+ end
106
+
107
+ describe "reporting one passing example" do
108
+ it "should tell formatter example passed" do
109
+ formatter.should_receive(:example_passed)
110
+ reporter.example_finished("example")
111
+ end
112
+
113
+ it "should not delegate to backtrace tweaker" do
114
+ formatter.should_receive(:example_passed)
115
+ backtrace_tweaker.should_not_receive(:tweak_backtrace)
116
+ reporter.example_finished("example")
117
+ end
118
+
119
+ it "should account for passing example in stats" do
120
+ formatter.should_receive(:example_passed)
121
+ formatter.should_receive(:start_dump)
122
+ formatter.should_receive(:dump_pending)
123
+ formatter.should_receive(:dump_summary).with(anything(), 1, 0, 0)
124
+ formatter.should_receive(:close).with(no_args)
125
+ reporter.example_finished("example")
126
+ reporter.dump
127
+ end
128
+ end
129
+
130
+ describe "reporting one failing example" do
131
+ it "should tell formatter that example failed" do
132
+ example = example_group.it("should do something") {}
133
+ formatter.should_receive(:example_failed)
134
+ reporter.example_finished(example, RuntimeError.new)
135
+ end
136
+
137
+ it "should delegate to backtrace tweaker" do
138
+ formatter.should_receive(:example_failed)
139
+ backtrace_tweaker.should_receive(:tweak_backtrace)
140
+ reporter.example_finished(ExampleGroup.new("example"), RuntimeError.new)
141
+ end
142
+
143
+ it "should account for failing example in stats" do
144
+ example = ExampleGroup.new("example")
145
+ formatter.should_receive(:example_failed).with(example, 1, failure)
146
+ formatter.should_receive(:start_dump)
147
+ formatter.should_receive(:dump_pending)
148
+ formatter.should_receive(:dump_failure).with(1, anything())
149
+ formatter.should_receive(:dump_summary).with(anything(), 1, 1, 0)
150
+ formatter.should_receive(:close).with(no_args)
151
+ reporter.example_finished(example, RuntimeError.new)
152
+ reporter.dump
153
+ end
154
+
155
+ end
156
+
157
+ describe "reporting one pending example (ExamplePendingError)" do
158
+ before :each do
159
+ @pending_error = Spec::Example::ExamplePendingError.new("reason")
160
+ @pending_caller = @pending_error.pending_caller
161
+ end
162
+
163
+ it "should tell formatter example is pending" do
164
+ example = ExampleGroup.new("example")
165
+ formatter.should_receive(:example_pending).with(example, "reason", @pending_caller)
166
+ formatter.should_receive(:add_example_group).with(example_group)
167
+ reporter.add_example_group(example_group)
168
+ reporter.example_finished(example, @pending_error)
169
+ end
170
+
171
+ it "should account for pending example in stats" do
172
+ example = ExampleGroup.new("example")
173
+ formatter.should_receive(:example_pending).with(example, "reason", @pending_caller)
174
+ formatter.should_receive(:start_dump)
175
+ formatter.should_receive(:dump_pending)
176
+ formatter.should_receive(:dump_summary).with(anything(), 1, 0, 1)
177
+ formatter.should_receive(:close).with(no_args)
178
+ formatter.should_receive(:add_example_group).with(example_group)
179
+ reporter.add_example_group(example_group)
180
+ reporter.example_finished(example, @pending_error)
181
+ reporter.dump
182
+ end
183
+
184
+ describe "to formatters which have example_pending's arity of 2 (which is now deprecated)" do
185
+ before :each do
186
+ Kernel.stub!(:warn).with(Spec::Runner::Reporter::EXAMPLE_PENDING_DEPRECATION_WARNING)
187
+
188
+ @deprecated_formatter = Class.new(@formatter.class) do
189
+ attr_reader :example_passed_to_method, :message_passed_to_method
190
+
191
+ def example_pending(example_passed_to_method, message_passed_to_method)
192
+ @example_passed_to_method = example_passed_to_method
193
+ @message_passed_to_method = message_passed_to_method
194
+ end
195
+ end.new(options, formatter_output)
196
+
197
+ options.formatters << @deprecated_formatter
198
+ end
199
+
200
+ it "should pass the correct example to the formatter" do
201
+ example = ExampleGroup.new("example")
202
+ reporter.add_example_group(example_group)
203
+ reporter.example_finished(example, @pending_error)
204
+
205
+ (@deprecated_formatter.example_passed_to_method == example).should be_true
206
+ end
207
+
208
+ it "should pass the correct pending error message to the formatter" do
209
+ example = ExampleGroup.new("example")
210
+ reporter.add_example_group(example_group)
211
+ reporter.example_finished(example, @pending_error)
212
+
213
+ @deprecated_formatter.message_passed_to_method.should == @pending_error.message
214
+ end
215
+
216
+ it "should raise a deprecation warning" do
217
+ Kernel.should_receive(:warn).with(Spec::Runner::Reporter::EXAMPLE_PENDING_DEPRECATION_WARNING)
218
+
219
+ example = ExampleGroup.new("example")
220
+ reporter.add_example_group(example_group)
221
+ reporter.example_finished(example, @pending_error)
222
+ end
223
+ end
224
+ end
225
+
226
+ describe "reporting one pending example (PendingExampleFixedError)" do
227
+ it "should tell formatter pending example is fixed" do
228
+ formatter.should_receive(:example_failed) do |name, counter, failure|
229
+ failure.header.should == "'example_group should do something' FIXED"
230
+ end
231
+ formatter.should_receive(:add_example_group).with(example_group)
232
+ reporter.add_example_group(example_group)
233
+ reporter.example_finished(example_group.examples.first, Spec::Example::PendingExampleFixedError.new("reason"))
234
+ end
235
+ end
236
+ end
237
+ end
238
+ end
File without changes
File without changes
@@ -0,0 +1 @@
1
+ # Empty - used by ../options_spec.rb
@@ -0,0 +1,14 @@
1
+ module Custom
2
+ class ExampleGroupRunner
3
+ attr_reader :options, :arg
4
+ def initialize(options, arg)
5
+ @options, @arg = options, arg
6
+ end
7
+
8
+ def load_files(files)
9
+ end
10
+
11
+ def run
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ module Custom
2
+ class ExampleUTF8ClassNameVarietà
3
+ def self.è
4
+ così = :però
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,2 @@
1
+ --diff
2
+ --colour
@@ -0,0 +1 @@
1
+ --drb
@@ -0,0 +1,70 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper.rb'
2
+
3
+ describe "c" do
4
+
5
+ it "1" do
6
+ end
7
+
8
+ it "2" do
9
+ end
10
+
11
+ end
12
+
13
+ describe "d" do
14
+
15
+ it "3" do
16
+ end
17
+
18
+ it "4" do
19
+ end
20
+
21
+ end
22
+
23
+ class SpecParserSubject
24
+ end
25
+
26
+ describe SpecParserSubject do
27
+
28
+ it "5" do
29
+ end
30
+
31
+ end
32
+
33
+ describe SpecParserSubject, "described" do
34
+
35
+ it "6" do
36
+ end
37
+
38
+ end
39
+
40
+ describe SpecParserSubject, "described", :something => :something_else do
41
+
42
+ it "7" do
43
+ end
44
+
45
+ end
46
+
47
+ describe "described", :something => :something_else do
48
+
49
+ it "8" do
50
+ end
51
+
52
+ end
53
+
54
+ describe "e" do
55
+
56
+ it "9" do
57
+ end
58
+
59
+ it "10" do
60
+ end
61
+
62
+ describe "f" do
63
+ it "11" do
64
+ end
65
+
66
+ it "12" do
67
+ end
68
+ end
69
+
70
+ end
@@ -0,0 +1,91 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ describe "SpecParser" do
4
+ with_sandboxed_options do
5
+ attr_reader :parser, :file
6
+
7
+ before do
8
+ @parser = Spec::Runner::SpecParser.new(options)
9
+ @file = "#{File.dirname(__FILE__)}/spec_parser/spec_parser_fixture.rb"
10
+ load file
11
+ end
12
+
13
+ it "should find spec name for 'specify' at same line" do
14
+ parser.spec_name_for(file, 5).should == "c 1"
15
+ end
16
+
17
+ it "should find spec name for 'specify' at end of spec line" do
18
+ parser.spec_name_for(file, 6).should == "c 1"
19
+ end
20
+
21
+ it "should find context for 'context' above all specs" do
22
+ parser.spec_name_for(file, 4).should == "c"
23
+ end
24
+
25
+ it "should find spec name for 'it' at same line" do
26
+ parser.spec_name_for(file, 15).should == "d 3"
27
+ end
28
+
29
+ it "should find spec name for 'it' at end of spec line" do
30
+ parser.spec_name_for(file, 16).should == "d 3"
31
+ end
32
+
33
+ it "should find context for 'describe' above all specs" do
34
+ parser.spec_name_for(file, 14).should == "d"
35
+ end
36
+
37
+ it "should find nearest example name between examples" do
38
+ parser.spec_name_for(file, 7).should == "c 1"
39
+ end
40
+
41
+ it "should find nothing outside a context" do
42
+ parser.spec_name_for(file, 2).should be_nil
43
+ end
44
+
45
+ it "should find context name for type" do
46
+ parser.spec_name_for(file, 26).should == "SpecParserSubject"
47
+ end
48
+
49
+ it "should find context and spec name for type" do
50
+ parser.spec_name_for(file, 28).should == "SpecParserSubject 5"
51
+ end
52
+
53
+ it "should find context and description for type" do
54
+ parser.spec_name_for(file, 33).should == "SpecParserSubject described"
55
+ end
56
+
57
+ it "should find context and description and example for type" do
58
+ parser.spec_name_for(file, 36).should == "SpecParserSubject described 6"
59
+ end
60
+
61
+ it "should find context and description for type with modifications" do
62
+ parser.spec_name_for(file, 40).should == "SpecParserSubject described"
63
+ end
64
+
65
+ it "should find context and described and example for type with modifications" do
66
+ parser.spec_name_for(file, 43).should == "SpecParserSubject described 7"
67
+ end
68
+
69
+ it "should find example group" do
70
+ parser.spec_name_for(file, 47).should == "described"
71
+ end
72
+
73
+ it "should find example" do
74
+ parser.spec_name_for(file, 50).should == "described 8"
75
+ end
76
+
77
+ it "should find nested example" do
78
+ parser.spec_name_for(file, 63).should == "e f 11"
79
+ end
80
+
81
+ it "should handle paths which contain colons" do
82
+ fixture =
83
+ { "c:/somepath/somefile.rb:999:in 'method'" => "c:/somepath/somefile.rb",
84
+ "./somepath/somefile:999" => "./somepath/somefile" }
85
+ fixture.each_pair do |input, expected|
86
+ parser.send(:parse_backtrace, input ).should == [[expected, 999]]
87
+ end
88
+ end
89
+
90
+ end
91
+ end
@@ -0,0 +1,2 @@
1
+ --diff --colour
2
+ --format s
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
2
+
3
+ module Spec
4
+ describe Runner, ".configure" do
5
+ it "should yield global configuration" do
6
+ Spec::Runner.configure do |config|
7
+ config.should equal(Spec::Runner.configuration)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,133 @@
1
+ # This file contains various classes used by the specs.
2
+ module Spec
3
+ module Expectations
4
+ class Person
5
+ attr_reader :name
6
+ def initialize name
7
+ @name = name
8
+ end
9
+ def == other
10
+ return @name == other.name
11
+ end
12
+ end
13
+
14
+ class ClassWithMultiWordPredicate
15
+ def multi_word_predicate?
16
+ true
17
+ end
18
+ end
19
+
20
+ module Helper
21
+ class CollectionWithSizeMethod
22
+ def initialize; @list = []; end
23
+ def size; @list.size; end
24
+ def push(item); @list.push(item); end
25
+ end
26
+
27
+ class CollectionWithLengthMethod
28
+ def initialize; @list = []; end
29
+ def length; @list.size; end
30
+ def push(item); @list.push(item); end
31
+ end
32
+
33
+ class CollectionOwner
34
+ attr_reader :items_in_collection_with_size_method, :items_in_collection_with_length_method
35
+
36
+ def initialize
37
+ @items_in_collection_with_size_method = CollectionWithSizeMethod.new
38
+ @items_in_collection_with_length_method = CollectionWithLengthMethod.new
39
+ end
40
+
41
+ def add_to_collection_with_size_method(item)
42
+ @items_in_collection_with_size_method.push(item)
43
+ end
44
+
45
+ def add_to_collection_with_length_method(item)
46
+ @items_in_collection_with_length_method.push(item)
47
+ end
48
+
49
+ def items_for(arg)
50
+ return [1, 2, 3] if arg == 'a'
51
+ [1]
52
+ end
53
+
54
+ def items
55
+ @items_in_collection_with_size_method
56
+ end
57
+ end
58
+
59
+ class HandCodedMock
60
+ include Spec::Matchers
61
+ def initialize(return_val)
62
+ @return_val = return_val
63
+ @funny_called = false
64
+ end
65
+
66
+ def funny?
67
+ @funny_called = true
68
+ @return_val
69
+ end
70
+
71
+ def hungry?(a, b, c)
72
+ a.should equal(1)
73
+ b.should equal(2)
74
+ c.should equal(3)
75
+ @funny_called = true
76
+ @return_val
77
+ end
78
+
79
+ def exists?
80
+ @return_val
81
+ end
82
+
83
+ def multi_word_predicate?
84
+ @return_val
85
+ end
86
+
87
+ def rspec_verify
88
+ @funny_called.should be_true
89
+ end
90
+ end
91
+ class ClassWithUnqueriedPredicate
92
+ attr_accessor :foo
93
+ def initialize(foo)
94
+ @foo = foo
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ module Custom
102
+ require 'spec/runner/formatter/base_text_formatter'
103
+ class Formatter < Spec::Runner::Formatter::BaseTextFormatter
104
+ attr_reader :options, :where
105
+
106
+ def initialize(options, where)
107
+ @options = options
108
+ @where = where
109
+ end
110
+ end
111
+
112
+ class BadFormatter < Spec::Runner::Formatter::BaseTextFormatter
113
+ attr_reader :where
114
+
115
+ def initialize(options, where)
116
+ bad_method
117
+ end
118
+ end
119
+
120
+ class Differ
121
+ attr_reader :options
122
+ def initialize(options)
123
+ @options = options
124
+ end
125
+
126
+ def diff_as_object(target, expected)
127
+ ""
128
+ end
129
+ end
130
+ end
131
+
132
+ class FakeReporter < Spec::Runner::Reporter
133
+ end
@@ -0,0 +1,21 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
2
+
3
+ describe Spec::Runner, "#exit?" do
4
+ describe "when ::Test is absent during loading but present when running exit?" do
5
+ # believe it or not, this can happen when ActiveSupport is loaded after RSpec is,
6
+ # since it loads active_support/core_ext/test/unit/assertions.rb which defines
7
+ # Test::Unit but doesn't actually load test/unit
8
+
9
+ before(:each) do
10
+ Object.const_set(:Test, Module.new)
11
+ end
12
+
13
+ it "does not attempt to access the non-loaded test/unit library" do
14
+ lambda { Spec::Runner.exit? }.should_not raise_error
15
+ end
16
+
17
+ after(:each) do
18
+ Object.send(:remove_const, :Test)
19
+ end
20
+ end
21
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,6 @@
1
+ --colour
2
+ --format
3
+ profile
4
+ --timeout
5
+ 20
6
+ --diff