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,301 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe Configuration do
6
+ with_sandboxed_options do
7
+ with_sandboxed_config do
8
+ describe "#mock_with" do
9
+ it "should default mock framework to rspec" do
10
+ config.mock_framework.should =~ /\/adapters\/mock_frameworks\/rspec$/
11
+ end
12
+
13
+ it "should set rspec mocking explicitly" do
14
+ config.mock_with(:rspec)
15
+ config.mock_framework.should =~ /\/adapters\/mock_frameworks\/rspec$/
16
+ end
17
+
18
+ it "should set mocha" do
19
+ config.mock_with(:mocha)
20
+ config.mock_framework.should =~ /\/adapters\/mock_frameworks\/mocha$/
21
+ end
22
+
23
+ it "should set flexmock" do
24
+ config.mock_with(:flexmock)
25
+ config.mock_framework.should =~ /\/adapters\/mock_frameworks\/flexmock$/
26
+ end
27
+
28
+ it "should set rr" do
29
+ config.mock_with(:rr)
30
+ config.mock_framework.should =~ /\/adapters\/mock_frameworks\/rr$/
31
+ end
32
+
33
+ it "should set an arbitrary adapter module" do
34
+ adapter = Module.new
35
+ config.mock_with(adapter)
36
+ config.mock_framework.should == adapter
37
+ end
38
+ end
39
+
40
+ describe "#include" do
41
+
42
+ before(:each) do
43
+ @example_group_class = Class.new(::Spec::Example::ExampleGroupDouble) {}
44
+ Spec::Example::ExampleGroupFactory.register(:foobar, @example_group_class)
45
+ end
46
+
47
+ it "should include the submitted module in ExampleGroup subclasses" do
48
+ mod = Module.new
49
+ config.include mod
50
+ Class.new(@example_group_class).included_modules.should include(mod)
51
+ end
52
+
53
+ it "should scope modules to be included for a specific type" do
54
+ mod = Module.new
55
+ config.include mod, :type => :foobar
56
+ Class.new(@example_group_class).included_modules.should include(mod)
57
+ end
58
+
59
+ it "should not include modules in a type they are not intended for" do
60
+ mod = Module.new
61
+ @other_example_group_class = Class.new(::Spec::Example::ExampleGroupDouble)
62
+ Spec::Example::ExampleGroupFactory.register(:baz, @other_example_group_class)
63
+
64
+ config.include mod, :type => :foobar
65
+
66
+ Class.new(@other_example_group_class).included_modules.should_not include(mod)
67
+ end
68
+
69
+ it "accepts an Array of types" do
70
+ mod = Module.new
71
+ @other_example_group_class = Class.new(::Spec::Example::ExampleGroupDouble)
72
+ Spec::Example::ExampleGroupFactory.register(:baz, @other_example_group_class)
73
+
74
+ config.include mod, :type => [:foobar, :baz]
75
+
76
+ Class.new(@example_group_class).included_modules.should include(mod)
77
+ Class.new(@other_example_group_class).included_modules.should include(mod)
78
+ end
79
+
80
+ end
81
+
82
+ describe "#extend" do
83
+
84
+ before(:each) do
85
+ @example_group_class = Class.new(::Spec::Example::ExampleGroupDouble) {}
86
+ Spec::Example::ExampleGroupFactory.register(:foobar, @example_group_class)
87
+ end
88
+
89
+ it "should extend all groups" do
90
+ mod = Module.new
91
+ ExampleGroup.should_receive(:extend).with(mod)
92
+ Spec::Runner.configuration.extend mod
93
+ end
94
+
95
+ it "should extend specified groups" do
96
+ mod = Module.new
97
+ @example_group_class.should_receive(:extend).with(mod)
98
+ Spec::Runner.configuration.extend mod, :type => :foobar
99
+ end
100
+
101
+ it "should not extend non-specified groups" do
102
+ @other_example_group_class = Class.new(::Spec::Example::ExampleGroupDouble)
103
+ Spec::Example::ExampleGroupFactory.register(:baz, @other_example_group_class)
104
+
105
+ mod = Module.new
106
+ @other_example_group_class.should_not_receive(:extend)
107
+
108
+ Spec::Runner.configuration.extend mod, :type => :foobar
109
+ end
110
+
111
+ end
112
+ end
113
+
114
+ describe "ordering methods: " do
115
+
116
+ before(:each) do
117
+ @special_example_group = Class.new(::Spec::Example::ExampleGroupDouble).describe("special_example_group")
118
+ @special_child_example_group = Class.new(@special_example_group).describe("special_child_example_group")
119
+ @nonspecial_example_group = Class.new(::Spec::Example::ExampleGroupDouble).describe("nonspecial_example_group")
120
+ Spec::Example::ExampleGroupFactory.register(:special, @special_example_group)
121
+ Spec::Example::ExampleGroupFactory.register(:special_child, @special_child_example_group)
122
+ Spec::Example::ExampleGroupFactory.register(:non_special, @nonspecial_example_group)
123
+ @example_group = @special_child_example_group.describe "Special Example Group"
124
+ @unselected_example_group = Class.new(@nonspecial_example_group).describe "Non Special Example Group"
125
+ end
126
+
127
+ describe "#prepend_before" do
128
+ it "prepends the before block on all instances of the passed in type" do
129
+ order = []
130
+ config.prepend_before(:all) do
131
+ order << :prepend__before_all
132
+ end
133
+ config.prepend_before(:all, :type => :special) do
134
+ order << :special_prepend__before_all
135
+ end
136
+ config.prepend_before(:all, :type => :special_child) do
137
+ order << :special_child_prepend__before_all
138
+ end
139
+ config.prepend_before(:each) do
140
+ order << :prepend__before_each
141
+ end
142
+ config.prepend_before(:each, :type => :special) do
143
+ order << :special_prepend__before_each
144
+ end
145
+ config.prepend_before(:each, :type => :special_child) do
146
+ order << :special_child_prepend__before_each
147
+ end
148
+ config.prepend_before(:all, :type => :non_special) do
149
+ order << :special_prepend__before_all
150
+ end
151
+ config.prepend_before(:each, :type => :non_special) do
152
+ order << :special_prepend__before_each
153
+ end
154
+ @example_group.it "calls prepend_before" do
155
+ end
156
+
157
+ @example_group.run(options)
158
+ order.should == [
159
+ :prepend__before_all,
160
+ :special_prepend__before_all,
161
+ :special_child_prepend__before_all,
162
+ :prepend__before_each,
163
+ :special_prepend__before_each,
164
+ :special_child_prepend__before_each
165
+ ]
166
+ end
167
+ end
168
+
169
+ describe "#append_before" do
170
+
171
+ it "calls append_before on the type" do
172
+ order = []
173
+ config.append_before(:all) do
174
+ order << :append_before_all
175
+ end
176
+ config.append_before(:all, :type => :special) do
177
+ order << :special_append_before_all
178
+ end
179
+ config.append_before(:all, :type => :special_child) do
180
+ order << :special_child_append_before_all
181
+ end
182
+ config.append_before(:each) do
183
+ order << :append_before_each
184
+ end
185
+ config.append_before(:each, :type => :special) do
186
+ order << :special_append_before_each
187
+ end
188
+ config.append_before(:each, :type => :special_child) do
189
+ order << :special_child_append_before_each
190
+ end
191
+ config.append_before(:all, :type => :non_special) do
192
+ order << :special_append_before_all
193
+ end
194
+ config.append_before(:each, :type => :non_special) do
195
+ order << :special_append_before_each
196
+ end
197
+ @example_group.it "calls append_before" do
198
+ end
199
+
200
+ @example_group.run(options)
201
+ order.should == [
202
+ :append_before_all,
203
+ :special_append_before_all,
204
+ :special_child_append_before_all,
205
+ :append_before_each,
206
+ :special_append_before_each,
207
+ :special_child_append_before_each
208
+ ]
209
+ end
210
+ end
211
+
212
+ describe "#prepend_after" do
213
+
214
+ it "prepends the after block on all instances of the passed in type" do
215
+ order = []
216
+ config.prepend_after(:all) do
217
+ order << :prepend__after_all
218
+ end
219
+ config.prepend_after(:all, :type => :special) do
220
+ order << :special_prepend__after_all
221
+ end
222
+ config.prepend_after(:all, :type => :special) do
223
+ order << :special_child_prepend__after_all
224
+ end
225
+ config.prepend_after(:each) do
226
+ order << :prepend__after_each
227
+ end
228
+ config.prepend_after(:each, :type => :special) do
229
+ order << :special_prepend__after_each
230
+ end
231
+ config.prepend_after(:each, :type => :special) do
232
+ order << :special_child_prepend__after_each
233
+ end
234
+ config.prepend_after(:all, :type => :non_special) do
235
+ order << :special_prepend__after_all
236
+ end
237
+ config.prepend_after(:each, :type => :non_special) do
238
+ order << :special_prepend__after_each
239
+ end
240
+ @example_group.it "calls prepend_after" do
241
+ end
242
+
243
+ @example_group.run(options)
244
+ order.should == [
245
+ :special_child_prepend__after_each,
246
+ :special_prepend__after_each,
247
+ :prepend__after_each,
248
+ :special_child_prepend__after_all,
249
+ :special_prepend__after_all,
250
+ :prepend__after_all
251
+ ]
252
+ end
253
+ end
254
+
255
+ describe "#append_after" do
256
+
257
+ it "calls append_after on the type" do
258
+ order = []
259
+ config.append_after(:all) do
260
+ order << :append__after_all
261
+ end
262
+ config.append_after(:all, :type => :special) do
263
+ order << :special_append__after_all
264
+ end
265
+ config.append_after(:all, :type => :special_child) do
266
+ order << :special_child_append__after_all
267
+ end
268
+ config.append_after(:each) do
269
+ order << :append__after_each
270
+ end
271
+ config.append_after(:each, :type => :special) do
272
+ order << :special_append__after_each
273
+ end
274
+ config.append_after(:each, :type => :special_child) do
275
+ order << :special_child_append__after_each
276
+ end
277
+ config.append_after(:all, :type => :non_special) do
278
+ order << :non_special_append_after_all
279
+ end
280
+ config.append_after(:each, :type => :non_special) do
281
+ order << :non_special_append_after_each
282
+ end
283
+ @example_group.it "calls append_after" do
284
+ end
285
+
286
+ @example_group.run(options)
287
+ order.should == [
288
+ :special_child_append__after_each,
289
+ :special_append__after_each,
290
+ :append__after_each,
291
+ :special_child_append__after_all,
292
+ :special_append__after_all,
293
+ :append__after_all
294
+ ]
295
+ end
296
+ end
297
+ end
298
+ end
299
+ end
300
+ end
301
+ end
@@ -0,0 +1,97 @@
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 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
+ describe "with local server" do
19
+
20
+ class ::CommandLineForSpec
21
+ def self.run(argv, stderr, stdout)
22
+ orig_options = Spec::Runner.options
23
+ tmp_options = OptionParser.parse(argv, stderr, stdout)
24
+ Spec::Runner.use tmp_options
25
+ Spec::Runner::CommandLine.run(tmp_options)
26
+ ensure
27
+ Spec::Runner.use orig_options
28
+ end
29
+ end
30
+
31
+ unless jruby?
32
+ before(:all) do
33
+ DRb.start_service("druby://127.0.0.1:8989", ::CommandLineForSpec)
34
+ @@drb_example_file_counter = 0
35
+ end
36
+
37
+ before(:each) do
38
+ create_dummy_spec_file
39
+ @@drb_example_file_counter = @@drb_example_file_counter + 1
40
+ end
41
+
42
+ after(:each) do
43
+ File.delete(@dummy_spec_filename)
44
+ end
45
+
46
+ after(:all) do
47
+ DRb.stop_service
48
+ end
49
+
50
+ it "should run against local server" do
51
+ out = run_spec_via_druby(['--version'])
52
+ out.should =~ /rspec \d+\.\d+\.\d+.*/n
53
+ end
54
+
55
+ it "should output green colorized text when running with --colour option" do
56
+ out = run_spec_via_druby(["--colour", @dummy_spec_filename])
57
+ out.should =~ /\e\[32m/n
58
+ end
59
+
60
+ it "should output red colorized text when running with -c option" do
61
+ out = run_spec_via_druby(["-c", @dummy_spec_filename])
62
+ out.should =~ /\e\[31m/n
63
+ end
64
+
65
+ def create_dummy_spec_file
66
+ @dummy_spec_filename = File.expand_path(File.dirname(__FILE__)) + "/_dummy_spec#{@@drb_example_file_counter}.rb"
67
+ File.open(@dummy_spec_filename, 'w') do |f|
68
+ f.write %{
69
+ describe "DUMMY CONTEXT for 'DrbCommandLine with -c option'" do
70
+ it "should be output with green bar" do
71
+ true.should be_true
72
+ end
73
+
74
+ it "should be output with red bar" do
75
+ violated("I want to see a red bar!")
76
+ end
77
+ end
78
+ }
79
+ end
80
+ end
81
+
82
+ def run_spec_via_druby(argv)
83
+ err, out = StringIO.new, StringIO.new
84
+ out.instance_eval do
85
+ def tty?; true end
86
+ end
87
+ options = ::Spec::Runner::Options.new(err, out)
88
+ options.argv = argv
89
+ Spec::Runner::DrbCommandLine.run(options)
90
+ out.rewind; out.read
91
+ end
92
+ end
93
+
94
+ end
95
+
96
+ end
97
+ end
File without changes
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe ExampleGroupRunner do
6
+ before(:each) do
7
+ err = StringIO.new('')
8
+ out = StringIO.new('')
9
+ @options = Options.new(err, out)
10
+ @runner = Spec::Runner::ExampleGroupRunner.new(@options)
11
+ end
12
+
13
+ after(:each) do
14
+ Spec::Expectations.differ = nil
15
+ end
16
+
17
+ describe "#load_files" do
18
+ it "should load UTF-8 encoded files" do
19
+ file = File.expand_path(File.dirname(__FILE__) + "/resources/utf8_encoded.rb")
20
+ @options.files << file
21
+ @runner.load_files(@options.files_to_load).should == @options.files_to_load
22
+ end
23
+ end
24
+ end
25
+
26
+ describe BehaviourRunner do
27
+ it "is DEPRECATED (use ExampleGroupRunner)" do
28
+ Kernel.should_receive(:warn).with(/DEPRECATED/)
29
+ BehaviourRunner.new(nil)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -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,3 @@
1
+ heckler_spec.rb
2
+ command_line_spec.rb
3
+ reporter_spec.rb
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + "/../../../spec_helper"
2
+
3
+ module Spec
4
+ module Runner
5
+ module Formatter
6
+ describe BaseFormatter do
7
+ subject {BaseFormatter.new(nil, nil)}
8
+
9
+ it {should respond_to(:start ).with(1).argument }
10
+ it {should respond_to(:add_example_group).with(1).argument }
11
+ it {should respond_to(:example_passed ).with(1).argument }
12
+ it {should respond_to(:example_started ).with(1).argument }
13
+ it {should respond_to(:example_failed ).with(3).arguments}
14
+ it {should respond_to(:example_pending ).with(3).arguments}
15
+ it {should respond_to(:start_dump ).with(0).arguments}
16
+ it {should respond_to(:dump_failure ).with(2).arguments}
17
+ it {should respond_to(:dump_summary ).with(4).arguments}
18
+ it {should respond_to(:dump_pending ).with(0).arguments}
19
+ it {should respond_to(:close ).with(0).arguments}
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/../../../spec_helper'
2
+ require 'spec/runner/formatter/base_text_formatter'
3
+ require 'fileutils'
4
+
5
+ module Spec
6
+ module Runner
7
+ module Formatter
8
+ describe BaseTextFormatter do
9
+
10
+ before :all do
11
+ @sandbox = "spec/sandbox"
12
+ end
13
+
14
+ it "should create the directory contained in WHERE if it does not exist" do
15
+ FileUtils.should_receive(:mkdir_p).with(@sandbox)
16
+ File.stub!(:open)
17
+ BaseTextFormatter.new({},"#{@sandbox}/temp.rb")
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ end
@@ -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(::Spec::Example::ExampleGroupDouble).describe("b 1"))
19
+ formatter.example_failed("e 1", nil, Spec::Runner::Reporter::Failure.new(nil, RuntimeError.new))
20
+ formatter.add_example_group(Class.new(::Spec::Example::ExampleGroupDouble).describe("b 2"))
21
+ formatter.example_failed("e 2", nil, Spec::Runner::Reporter::Failure.new(nil, RuntimeError.new))
22
+ formatter.example_failed("e 3", nil, Spec::Runner::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, ::Spec::Runner::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(::Spec::Example::ExampleGroupDouble).describe("something something (druby://99.99.99.99:99)"))
39
+ @formatter.example_failed("e 1", nil, ::Spec::Runner::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(::Spec::Example::ExampleGroupDouble).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, ::Spec::Runner::Reporter::Failure.new(nil, RuntimeError.new))
20
+ @formatter.add_example_group(example_group_2)
21
+ @formatter.example_failed(example_group_2.it("b2"){}, nil, ::Spec::Runner::Reporter::Failure.new(nil, RuntimeError.new))
22
+ @formatter.example_failed(example_group_2.it("b3"){}, nil, ::Spec::Runner::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