media-path 0.1

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 (448) hide show
  1. data/CHANGELOG +3 -0
  2. data/LICENSE +20 -0
  3. data/README.textile +40 -0
  4. data/Rakefile +79 -0
  5. data/TODO.txt +6 -0
  6. data/deps.rip +5 -0
  7. data/lib/media-path.rb +269 -0
  8. data/media-path.gemspec +38 -0
  9. data/script/spec +14 -0
  10. data/spec/media-path_spec.rb +158 -0
  11. data/spec/spec.opts +5 -0
  12. data/spec/stubs/blog/public/js/moo.js +0 -0
  13. data/url.rb +20 -0
  14. data/url_spec.rb +35 -0
  15. data/vendor/rspec/History.rdoc +1512 -0
  16. data/vendor/rspec/License.txt +22 -0
  17. data/vendor/rspec/Manifest.txt +383 -0
  18. data/vendor/rspec/README.rdoc +55 -0
  19. data/vendor/rspec/Rakefile +145 -0
  20. data/vendor/rspec/Ruby1.9.rdoc +31 -0
  21. data/vendor/rspec/TODO.txt +17 -0
  22. data/vendor/rspec/Upgrade.rdoc +199 -0
  23. data/vendor/rspec/bin/autospec +4 -0
  24. data/vendor/rspec/bin/spec +5 -0
  25. data/vendor/rspec/cucumber.yml +5 -0
  26. data/vendor/rspec/examples/failing/README.txt +11 -0
  27. data/vendor/rspec/examples/failing/diffing_spec.rb +36 -0
  28. data/vendor/rspec/examples/failing/failing_implicit_docstrings_example.rb +17 -0
  29. data/vendor/rspec/examples/failing/failure_in_after.rb +10 -0
  30. data/vendor/rspec/examples/failing/failure_in_before.rb +10 -0
  31. data/vendor/rspec/examples/failing/mocking_example.rb +38 -0
  32. data/vendor/rspec/examples/failing/mocking_with_flexmock.rb +26 -0
  33. data/vendor/rspec/examples/failing/mocking_with_mocha.rb +25 -0
  34. data/vendor/rspec/examples/failing/mocking_with_rr.rb +27 -0
  35. data/vendor/rspec/examples/failing/partial_mock_example.rb +18 -0
  36. data/vendor/rspec/examples/failing/pending_example.rb +7 -0
  37. data/vendor/rspec/examples/failing/predicate_example.rb +32 -0
  38. data/vendor/rspec/examples/failing/raising_example.rb +47 -0
  39. data/vendor/rspec/examples/failing/syntax_error_example.rb +7 -0
  40. data/vendor/rspec/examples/failing/team_spec.rb +41 -0
  41. data/vendor/rspec/examples/failing/timeout_behaviour.rb +5 -0
  42. data/vendor/rspec/examples/passing/custom_formatter.rb +11 -0
  43. data/vendor/rspec/examples/passing/custom_matchers.rb +54 -0
  44. data/vendor/rspec/examples/passing/dynamic_spec.rb +7 -0
  45. data/vendor/rspec/examples/passing/file_accessor.rb +18 -0
  46. data/vendor/rspec/examples/passing/file_accessor_spec.rb +37 -0
  47. data/vendor/rspec/examples/passing/filtered_formatter.rb +17 -0
  48. data/vendor/rspec/examples/passing/filtered_formatter_example.rb +31 -0
  49. data/vendor/rspec/examples/passing/greeter_spec.rb +30 -0
  50. data/vendor/rspec/examples/passing/helper_method_example.rb +12 -0
  51. data/vendor/rspec/examples/passing/implicit_docstrings_example.rb +16 -0
  52. data/vendor/rspec/examples/passing/io_processor.rb +8 -0
  53. data/vendor/rspec/examples/passing/io_processor_spec.rb +20 -0
  54. data/vendor/rspec/examples/passing/mocking_example.rb +25 -0
  55. data/vendor/rspec/examples/passing/multi_threaded_example_group_runner.rb +26 -0
  56. data/vendor/rspec/examples/passing/nested_classes_example.rb +35 -0
  57. data/vendor/rspec/examples/passing/options_example.rb +29 -0
  58. data/vendor/rspec/examples/passing/options_formatter.rb +20 -0
  59. data/vendor/rspec/examples/passing/partial_mock_example.rb +27 -0
  60. data/vendor/rspec/examples/passing/pending_example.rb +18 -0
  61. data/vendor/rspec/examples/passing/predicate_example.rb +25 -0
  62. data/vendor/rspec/examples/passing/shared_example_group_example.rb +79 -0
  63. data/vendor/rspec/examples/passing/shared_stack_examples.rb +36 -0
  64. data/vendor/rspec/examples/passing/simple_matcher_example.rb +29 -0
  65. data/vendor/rspec/examples/passing/stack.rb +36 -0
  66. data/vendor/rspec/examples/passing/stack_spec.rb +63 -0
  67. data/vendor/rspec/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
  68. data/vendor/rspec/examples/passing/stubbing_example.rb +67 -0
  69. data/vendor/rspec/examples/passing/yielding_example.rb +31 -0
  70. data/vendor/rspec/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
  71. data/vendor/rspec/features-pending/cli/conditional_exclusion.feature +39 -0
  72. data/vendor/rspec/features-pending/heckle/heckle.feature +56 -0
  73. data/vendor/rspec/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  74. data/vendor/rspec/features/command_line/line_number_option.feature +56 -0
  75. data/vendor/rspec/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  76. data/vendor/rspec/features/example_groups/define_example_attribute.feature +41 -0
  77. data/vendor/rspec/features/example_groups/example_group_with_should_methods.feature +29 -0
  78. data/vendor/rspec/features/example_groups/implicit_docstrings.feature +59 -0
  79. data/vendor/rspec/features/example_groups/nested_groups.feature +32 -0
  80. data/vendor/rspec/features/expectations/customized_message.feature +54 -0
  81. data/vendor/rspec/features/expectations/expect_change.feature +65 -0
  82. data/vendor/rspec/features/expectations/expect_error.feature +44 -0
  83. data/vendor/rspec/features/extensions/custom_example_group.feature +19 -0
  84. data/vendor/rspec/features/formatters/custom_formatter.feature +30 -0
  85. data/vendor/rspec/features/interop/examples_and_tests_together.feature +84 -0
  86. data/vendor/rspec/features/interop/rspec_output.feature +25 -0
  87. data/vendor/rspec/features/interop/test_but_not_test_unit.feature +26 -0
  88. data/vendor/rspec/features/interop/test_case_with_should_methods.feature +46 -0
  89. data/vendor/rspec/features/load_paths/add_lib_to_load_path.feature +20 -0
  90. data/vendor/rspec/features/load_paths/add_spec_to_load_path.feature +20 -0
  91. data/vendor/rspec/features/matchers/define_diffable_matcher.feature +26 -0
  92. data/vendor/rspec/features/matchers/define_matcher.feature +179 -0
  93. data/vendor/rspec/features/matchers/define_matcher_outside_rspec.feature +38 -0
  94. data/vendor/rspec/features/matchers/define_matcher_with_fluent_interface.feature +27 -0
  95. data/vendor/rspec/features/matchers/define_wrapped_matcher.feature +29 -0
  96. data/vendor/rspec/features/matchers/match_unless_raises.feature +60 -0
  97. data/vendor/rspec/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
  98. data/vendor/rspec/features/mock_framework_integration/use_flexmock.feature +27 -0
  99. data/vendor/rspec/features/mock_framework_integration/use_mocha.feature +27 -0
  100. data/vendor/rspec/features/mock_framework_integration/use_rr.feature +27 -0
  101. data/vendor/rspec/features/mocks/block_local_expectations.feature +62 -0
  102. data/vendor/rspec/features/mocks/mix_stubs_and_mocks.feature +22 -0
  103. data/vendor/rspec/features/mocks/stub_implementation.feature +26 -0
  104. data/vendor/rspec/features/pending/pending_examples.feature +81 -0
  105. data/vendor/rspec/features/runner/specify_line_number.feature +32 -0
  106. data/vendor/rspec/features/spec_helper/spec_helper.feature +25 -0
  107. data/vendor/rspec/features/step_definitions/running_rspec_steps.rb +43 -0
  108. data/vendor/rspec/features/subject/explicit_subject.feature +31 -0
  109. data/vendor/rspec/features/subject/implicit_subject.feature +43 -0
  110. data/vendor/rspec/features/support/env.rb +82 -0
  111. data/vendor/rspec/features/support/matchers/smart_match.rb +12 -0
  112. data/vendor/rspec/geminstaller.yml +28 -0
  113. data/vendor/rspec/init.rb +9 -0
  114. data/vendor/rspec/lib/autotest/discover.rb +3 -0
  115. data/vendor/rspec/lib/autotest/rspec.rb +54 -0
  116. data/vendor/rspec/lib/spec.rb +8 -0
  117. data/vendor/rspec/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  118. data/vendor/rspec/lib/spec/adapters/mock_frameworks/mocha.rb +25 -0
  119. data/vendor/rspec/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  120. data/vendor/rspec/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  121. data/vendor/rspec/lib/spec/autorun.rb +3 -0
  122. data/vendor/rspec/lib/spec/deprecation.rb +40 -0
  123. data/vendor/rspec/lib/spec/dsl.rb +1 -0
  124. data/vendor/rspec/lib/spec/dsl/main.rb +92 -0
  125. data/vendor/rspec/lib/spec/example.rb +164 -0
  126. data/vendor/rspec/lib/spec/example/args_and_options.rb +27 -0
  127. data/vendor/rspec/lib/spec/example/before_and_after_hooks.rb +93 -0
  128. data/vendor/rspec/lib/spec/example/errors.rb +25 -0
  129. data/vendor/rspec/lib/spec/example/example_group.rb +10 -0
  130. data/vendor/rspec/lib/spec/example/example_group_factory.rb +82 -0
  131. data/vendor/rspec/lib/spec/example/example_group_hierarchy.rb +53 -0
  132. data/vendor/rspec/lib/spec/example/example_group_methods.rb +282 -0
  133. data/vendor/rspec/lib/spec/example/example_group_proxy.rb +61 -0
  134. data/vendor/rspec/lib/spec/example/example_matcher.rb +43 -0
  135. data/vendor/rspec/lib/spec/example/example_methods.rb +152 -0
  136. data/vendor/rspec/lib/spec/example/example_proxy.rb +41 -0
  137. data/vendor/rspec/lib/spec/example/module_reopening_fix.rb +43 -0
  138. data/vendor/rspec/lib/spec/example/pending.rb +18 -0
  139. data/vendor/rspec/lib/spec/example/predicate_matchers.rb +46 -0
  140. data/vendor/rspec/lib/spec/example/shared_example_group.rb +59 -0
  141. data/vendor/rspec/lib/spec/example/subject.rb +108 -0
  142. data/vendor/rspec/lib/spec/expectations.rb +35 -0
  143. data/vendor/rspec/lib/spec/expectations/errors.rb +12 -0
  144. data/vendor/rspec/lib/spec/expectations/extensions.rb +1 -0
  145. data/vendor/rspec/lib/spec/expectations/extensions/kernel.rb +52 -0
  146. data/vendor/rspec/lib/spec/expectations/fail_with.rb +45 -0
  147. data/vendor/rspec/lib/spec/expectations/handler.rb +50 -0
  148. data/vendor/rspec/lib/spec/extensions/instance_exec.rb +31 -0
  149. data/vendor/rspec/lib/spec/interop/test.rb +44 -0
  150. data/vendor/rspec/lib/spec/interop/test/unit/autorunner.rb +6 -0
  151. data/vendor/rspec/lib/spec/interop/test/unit/testcase.rb +56 -0
  152. data/vendor/rspec/lib/spec/interop/test/unit/testresult.rb +6 -0
  153. data/vendor/rspec/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  154. data/vendor/rspec/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  155. data/vendor/rspec/lib/spec/matchers.rb +195 -0
  156. data/vendor/rspec/lib/spec/matchers/be.rb +211 -0
  157. data/vendor/rspec/lib/spec/matchers/be_close.rb +32 -0
  158. data/vendor/rspec/lib/spec/matchers/be_instance_of.rb +26 -0
  159. data/vendor/rspec/lib/spec/matchers/be_kind_of.rb +26 -0
  160. data/vendor/rspec/lib/spec/matchers/change.rb +151 -0
  161. data/vendor/rspec/lib/spec/matchers/compatibility.rb +14 -0
  162. data/vendor/rspec/lib/spec/matchers/dsl.rb +20 -0
  163. data/vendor/rspec/lib/spec/matchers/eql.rb +42 -0
  164. data/vendor/rspec/lib/spec/matchers/equal.rb +53 -0
  165. data/vendor/rspec/lib/spec/matchers/errors.rb +5 -0
  166. data/vendor/rspec/lib/spec/matchers/exist.rb +16 -0
  167. data/vendor/rspec/lib/spec/matchers/generated_descriptions.rb +36 -0
  168. data/vendor/rspec/lib/spec/matchers/has.rb +35 -0
  169. data/vendor/rspec/lib/spec/matchers/have.rb +152 -0
  170. data/vendor/rspec/lib/spec/matchers/include.rb +44 -0
  171. data/vendor/rspec/lib/spec/matchers/match.rb +21 -0
  172. data/vendor/rspec/lib/spec/matchers/match_array.rb +71 -0
  173. data/vendor/rspec/lib/spec/matchers/matcher.rb +102 -0
  174. data/vendor/rspec/lib/spec/matchers/method_missing.rb +9 -0
  175. data/vendor/rspec/lib/spec/matchers/operator_matcher.rb +78 -0
  176. data/vendor/rspec/lib/spec/matchers/pretty.rb +37 -0
  177. data/vendor/rspec/lib/spec/matchers/raise_error.rb +129 -0
  178. data/vendor/rspec/lib/spec/matchers/respond_to.rb +71 -0
  179. data/vendor/rspec/lib/spec/matchers/satisfy.rb +47 -0
  180. data/vendor/rspec/lib/spec/matchers/simple_matcher.rb +133 -0
  181. data/vendor/rspec/lib/spec/matchers/throw_symbol.rb +104 -0
  182. data/vendor/rspec/lib/spec/matchers/wrap_expectation.rb +55 -0
  183. data/vendor/rspec/lib/spec/mocks.rb +200 -0
  184. data/vendor/rspec/lib/spec/mocks/argument_expectation.rb +51 -0
  185. data/vendor/rspec/lib/spec/mocks/argument_matchers.rb +237 -0
  186. data/vendor/rspec/lib/spec/mocks/error_generator.rb +92 -0
  187. data/vendor/rspec/lib/spec/mocks/errors.rb +10 -0
  188. data/vendor/rspec/lib/spec/mocks/example_methods.rb +69 -0
  189. data/vendor/rspec/lib/spec/mocks/extensions.rb +1 -0
  190. data/vendor/rspec/lib/spec/mocks/extensions/object.rb +3 -0
  191. data/vendor/rspec/lib/spec/mocks/framework.rb +15 -0
  192. data/vendor/rspec/lib/spec/mocks/message_expectation.rb +343 -0
  193. data/vendor/rspec/lib/spec/mocks/methods.rb +89 -0
  194. data/vendor/rspec/lib/spec/mocks/mock.rb +71 -0
  195. data/vendor/rspec/lib/spec/mocks/order_group.rb +29 -0
  196. data/vendor/rspec/lib/spec/mocks/proxy.rb +245 -0
  197. data/vendor/rspec/lib/spec/mocks/space.rb +28 -0
  198. data/vendor/rspec/lib/spec/rake/spectask.rb +230 -0
  199. data/vendor/rspec/lib/spec/rake/verify_rcov.rb +52 -0
  200. data/vendor/rspec/lib/spec/ruby.rb +9 -0
  201. data/vendor/rspec/lib/spec/runner.rb +66 -0
  202. data/vendor/rspec/lib/spec/runner/backtrace_tweaker.rb +77 -0
  203. data/vendor/rspec/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  204. data/vendor/rspec/lib/spec/runner/command_line.rb +15 -0
  205. data/vendor/rspec/lib/spec/runner/configuration.rb +194 -0
  206. data/vendor/rspec/lib/spec/runner/differs/default.rb +93 -0
  207. data/vendor/rspec/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  208. data/vendor/rspec/lib/spec/runner/drb_command_line.rb +32 -0
  209. data/vendor/rspec/lib/spec/runner/example_group_runner.rb +58 -0
  210. data/vendor/rspec/lib/spec/runner/extensions/kernel.rb +9 -0
  211. data/vendor/rspec/lib/spec/runner/formatter/base_formatter.rb +139 -0
  212. data/vendor/rspec/lib/spec/runner/formatter/base_text_formatter.rb +142 -0
  213. data/vendor/rspec/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  214. data/vendor/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  215. data/vendor/rspec/lib/spec/runner/formatter/html_formatter.rb +338 -0
  216. data/vendor/rspec/lib/spec/runner/formatter/nested_text_formatter.rb +47 -0
  217. data/vendor/rspec/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  218. data/vendor/rspec/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  219. data/vendor/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb +33 -0
  220. data/vendor/rspec/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  221. data/vendor/rspec/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  222. data/vendor/rspec/lib/spec/runner/formatter/specdoc_formatter.rb +33 -0
  223. data/vendor/rspec/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  224. data/vendor/rspec/lib/spec/runner/heckle_runner.rb +72 -0
  225. data/vendor/rspec/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  226. data/vendor/rspec/lib/spec/runner/line_number_query.rb +78 -0
  227. data/vendor/rspec/lib/spec/runner/option_parser.rb +225 -0
  228. data/vendor/rspec/lib/spec/runner/options.rb +405 -0
  229. data/vendor/rspec/lib/spec/runner/reporter.rb +171 -0
  230. data/vendor/rspec/lib/spec/stubs/cucumber.rb +5 -0
  231. data/vendor/rspec/lib/spec/test/unit.rb +10 -0
  232. data/vendor/rspec/lib/spec/version.rb +14 -0
  233. data/vendor/rspec/resources/helpers/cmdline.rb +8 -0
  234. data/vendor/rspec/resources/rake/examples.rake +7 -0
  235. data/vendor/rspec/resources/rake/examples_with_rcov.rake +9 -0
  236. data/vendor/rspec/resources/rake/failing_examples_with_html.rake +9 -0
  237. data/vendor/rspec/resources/rake/verify_rcov.rake +7 -0
  238. data/vendor/rspec/spec/README.jruby +15 -0
  239. data/vendor/rspec/spec/autotest/autotest_helper.rb +8 -0
  240. data/vendor/rspec/spec/autotest/autotest_matchers.rb +38 -0
  241. data/vendor/rspec/spec/autotest/discover_spec.rb +8 -0
  242. data/vendor/rspec/spec/autotest/failed_results_re_spec.rb +31 -0
  243. data/vendor/rspec/spec/autotest/rspec_spec.rb +126 -0
  244. data/vendor/rspec/spec/ruby_forker.rb +13 -0
  245. data/vendor/rspec/spec/spec.opts +6 -0
  246. data/vendor/rspec/spec/spec/dsl/main_spec.rb +95 -0
  247. data/vendor/rspec/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  248. data/vendor/rspec/spec/spec/example/example_group_factory_spec.rb +180 -0
  249. data/vendor/rspec/spec/spec/example/example_group_methods_spec.rb +759 -0
  250. data/vendor/rspec/spec/spec/example/example_group_proxy_spec.rb +107 -0
  251. data/vendor/rspec/spec/spec/example/example_group_spec.rb +643 -0
  252. data/vendor/rspec/spec/spec/example/example_matcher_spec.rb +86 -0
  253. data/vendor/rspec/spec/spec/example/example_methods_spec.rb +162 -0
  254. data/vendor/rspec/spec/spec/example/example_proxy_spec.rb +57 -0
  255. data/vendor/rspec/spec/spec/example/helper_method_spec.rb +24 -0
  256. data/vendor/rspec/spec/spec/example/nested_example_group_spec.rb +71 -0
  257. data/vendor/rspec/spec/spec/example/pending_module_spec.rb +58 -0
  258. data/vendor/rspec/spec/spec/example/predicate_matcher_spec.rb +41 -0
  259. data/vendor/rspec/spec/spec/example/shared_example_group_spec.rb +257 -0
  260. data/vendor/rspec/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  261. data/vendor/rspec/spec/spec/example/subject_spec.rb +103 -0
  262. data/vendor/rspec/spec/spec/expectations/differs/default_spec.rb +194 -0
  263. data/vendor/rspec/spec/spec/expectations/extensions/kernel_spec.rb +45 -0
  264. data/vendor/rspec/spec/spec/expectations/fail_with_spec.rb +96 -0
  265. data/vendor/rspec/spec/spec/expectations/handler_spec.rb +206 -0
  266. data/vendor/rspec/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
  267. data/vendor/rspec/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  268. data/vendor/rspec/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  269. data/vendor/rspec/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  270. data/vendor/rspec/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  271. data/vendor/rspec/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  272. data/vendor/rspec/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  273. data/vendor/rspec/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  274. data/vendor/rspec/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  275. data/vendor/rspec/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  276. data/vendor/rspec/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  277. data/vendor/rspec/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  278. data/vendor/rspec/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  279. data/vendor/rspec/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  280. data/vendor/rspec/spec/spec/matchers/be_close_spec.rb +50 -0
  281. data/vendor/rspec/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  282. data/vendor/rspec/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  283. data/vendor/rspec/spec/spec/matchers/be_spec.rb +419 -0
  284. data/vendor/rspec/spec/spec/matchers/change_spec.rb +349 -0
  285. data/vendor/rspec/spec/spec/matchers/compatibility_spec.rb +28 -0
  286. data/vendor/rspec/spec/spec/matchers/description_generation_spec.rb +160 -0
  287. data/vendor/rspec/spec/spec/matchers/dsl_spec.rb +34 -0
  288. data/vendor/rspec/spec/spec/matchers/eql_spec.rb +33 -0
  289. data/vendor/rspec/spec/spec/matchers/equal_spec.rb +57 -0
  290. data/vendor/rspec/spec/spec/matchers/exist_spec.rb +65 -0
  291. data/vendor/rspec/spec/spec/matchers/has_spec.rb +190 -0
  292. data/vendor/rspec/spec/spec/matchers/have_spec.rb +396 -0
  293. data/vendor/rspec/spec/spec/matchers/include_spec.rb +88 -0
  294. data/vendor/rspec/spec/spec/matchers/match_array_spec.rb +108 -0
  295. data/vendor/rspec/spec/spec/matchers/match_spec.rb +57 -0
  296. data/vendor/rspec/spec/spec/matchers/matcher_methods_spec.rb +63 -0
  297. data/vendor/rspec/spec/spec/matchers/matcher_spec.rb +273 -0
  298. data/vendor/rspec/spec/spec/matchers/matchers_spec.rb +2 -0
  299. data/vendor/rspec/spec/spec/matchers/operator_matcher_spec.rb +191 -0
  300. data/vendor/rspec/spec/spec/matchers/raise_error_spec.rb +333 -0
  301. data/vendor/rspec/spec/spec/matchers/respond_to_spec.rb +116 -0
  302. data/vendor/rspec/spec/spec/matchers/satisfy_spec.rb +36 -0
  303. data/vendor/rspec/spec/spec/matchers/simple_matcher_spec.rb +93 -0
  304. data/vendor/rspec/spec/spec/matchers/throw_symbol_spec.rb +96 -0
  305. data/vendor/rspec/spec/spec/mocks/and_yield_spec.rb +117 -0
  306. data/vendor/rspec/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
  307. data/vendor/rspec/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  308. data/vendor/rspec/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  309. data/vendor/rspec/spec/spec/mocks/at_least_spec.rb +97 -0
  310. data/vendor/rspec/spec/spec/mocks/at_most_spec.rb +93 -0
  311. data/vendor/rspec/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  312. data/vendor/rspec/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  313. data/vendor/rspec/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  314. data/vendor/rspec/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  315. data/vendor/rspec/spec/spec/mocks/bug_report_496_spec.rb +19 -0
  316. data/vendor/rspec/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  317. data/vendor/rspec/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  318. data/vendor/rspec/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  319. data/vendor/rspec/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  320. data/vendor/rspec/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  321. data/vendor/rspec/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  322. data/vendor/rspec/spec/spec/mocks/double_spec.rb +12 -0
  323. data/vendor/rspec/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  324. data/vendor/rspec/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  325. data/vendor/rspec/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  326. data/vendor/rspec/spec/spec/mocks/mock_ordering_spec.rb +94 -0
  327. data/vendor/rspec/spec/spec/mocks/mock_space_spec.rb +54 -0
  328. data/vendor/rspec/spec/spec/mocks/mock_spec.rb +594 -0
  329. data/vendor/rspec/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  330. data/vendor/rspec/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  331. data/vendor/rspec/spec/spec/mocks/null_object_mock_spec.rb +54 -0
  332. data/vendor/rspec/spec/spec/mocks/once_counts_spec.rb +53 -0
  333. data/vendor/rspec/spec/spec/mocks/options_hash_spec.rb +35 -0
  334. data/vendor/rspec/spec/spec/mocks/partial_mock_spec.rb +164 -0
  335. data/vendor/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  336. data/vendor/rspec/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  337. data/vendor/rspec/spec/spec/mocks/precise_counts_spec.rb +52 -0
  338. data/vendor/rspec/spec/spec/mocks/record_messages_spec.rb +26 -0
  339. data/vendor/rspec/spec/spec/mocks/stub_chain_spec.rb +42 -0
  340. data/vendor/rspec/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  341. data/vendor/rspec/spec/spec/mocks/stub_spec.rb +203 -0
  342. data/vendor/rspec/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  343. data/vendor/rspec/spec/spec/mocks/twice_counts_spec.rb +67 -0
  344. data/vendor/rspec/spec/spec/mocks/unstub_spec.rb +127 -0
  345. data/vendor/rspec/spec/spec/package/bin_spec_spec.rb +16 -0
  346. data/vendor/rspec/spec/spec/rake/spectask_spec.rb +150 -0
  347. data/vendor/rspec/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  348. data/vendor/rspec/spec/spec/runner/command_line_spec.rb +162 -0
  349. data/vendor/rspec/spec/spec/runner/configuration_spec.rb +320 -0
  350. data/vendor/rspec/spec/spec/runner/drb_command_line_spec.rb +146 -0
  351. data/vendor/rspec/spec/spec/runner/empty_file.txt +0 -0
  352. data/vendor/rspec/spec/spec/runner/example_group_runner_spec.rb +26 -0
  353. data/vendor/rspec/spec/spec/runner/examples.txt +2 -0
  354. data/vendor/rspec/spec/spec/runner/failed.txt +3 -0
  355. data/vendor/rspec/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  356. data/vendor/rspec/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  357. data/vendor/rspec/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  358. data/vendor/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  359. data/vendor/rspec/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  360. data/vendor/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  361. data/vendor/rspec/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  362. data/vendor/rspec/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  363. data/vendor/rspec/spec/spec/runner/formatter/html_formatter_spec.rb +118 -0
  364. data/vendor/rspec/spec/spec/runner/formatter/nested_text_formatter_spec.rb +305 -0
  365. data/vendor/rspec/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  366. data/vendor/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +149 -0
  367. data/vendor/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  368. data/vendor/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
  369. data/vendor/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  370. data/vendor/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  371. data/vendor/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  372. data/vendor/rspec/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  373. data/vendor/rspec/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  374. data/vendor/rspec/spec/spec/runner/heckle_runner_spec.rb +78 -0
  375. data/vendor/rspec/spec/spec/runner/heckler_spec.rb +20 -0
  376. data/vendor/rspec/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  377. data/vendor/rspec/spec/spec/runner/line_number_query_spec.rb +129 -0
  378. data/vendor/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +51 -0
  379. data/vendor/rspec/spec/spec/runner/option_parser_spec.rb +554 -0
  380. data/vendor/rspec/spec/spec/runner/options_spec.rb +554 -0
  381. data/vendor/rspec/spec/spec/runner/output_one_time_fixture.rb +7 -0
  382. data/vendor/rspec/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  383. data/vendor/rspec/spec/spec/runner/output_one_time_spec.rb +15 -0
  384. data/vendor/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +123 -0
  385. data/vendor/rspec/spec/spec/runner/reporter_spec.rb +244 -0
  386. data/vendor/rspec/spec/spec/runner/resources/a_bar.rb +0 -0
  387. data/vendor/rspec/spec/spec/runner/resources/a_foo.rb +0 -0
  388. data/vendor/rspec/spec/spec/runner/resources/a_spec.rb +1 -0
  389. data/vendor/rspec/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  390. data/vendor/rspec/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  391. data/vendor/rspec/spec/spec/runner/spec.opts +2 -0
  392. data/vendor/rspec/spec/spec/runner/spec_drb.opts +2 -0
  393. data/vendor/rspec/spec/spec/runner/spec_spaced.opts +2 -0
  394. data/vendor/rspec/spec/spec/runner_spec.rb +13 -0
  395. data/vendor/rspec/spec/spec_helper.rb +112 -0
  396. data/vendor/rspec/spec/support/macros.rb +29 -0
  397. data/vendor/rspec/spec/support/spec_classes.rb +133 -0
  398. data/vendor/rubyexts/CHANGELOG +2 -0
  399. data/vendor/rubyexts/LICENSE +20 -0
  400. data/vendor/rubyexts/README.textile +0 -0
  401. data/vendor/rubyexts/Rakefile +79 -0
  402. data/vendor/rubyexts/TODO.txt +6 -0
  403. data/vendor/rubyexts/lib/rubyexts.rb +102 -0
  404. data/vendor/rubyexts/lib/rubyexts/array.rb +20 -0
  405. data/vendor/rubyexts/lib/rubyexts/attribute.rb +151 -0
  406. data/vendor/rubyexts/lib/rubyexts/capture_io.rb +32 -0
  407. data/vendor/rubyexts/lib/rubyexts/class.rb +177 -0
  408. data/vendor/rubyexts/lib/rubyexts/colored_string.rb +103 -0
  409. data/vendor/rubyexts/lib/rubyexts/enumerable.rb +30 -0
  410. data/vendor/rubyexts/lib/rubyexts/file.rb +84 -0
  411. data/vendor/rubyexts/lib/rubyexts/hash.rb +180 -0
  412. data/vendor/rubyexts/lib/rubyexts/kernel.rb +91 -0
  413. data/vendor/rubyexts/lib/rubyexts/module.rb +53 -0
  414. data/vendor/rubyexts/lib/rubyexts/object.rb +56 -0
  415. data/vendor/rubyexts/lib/rubyexts/object_space.rb +16 -0
  416. data/vendor/rubyexts/lib/rubyexts/os.rb +89 -0
  417. data/vendor/rubyexts/lib/rubyexts/platform.rb +27 -0
  418. data/vendor/rubyexts/lib/rubyexts/random.rb +25 -0
  419. data/vendor/rubyexts/lib/rubyexts/string.rb +92 -0
  420. data/vendor/rubyexts/lib/rubyexts/time.rb +15 -0
  421. data/vendor/rubyexts/lib/rubyexts/time_dsl.rb +62 -0
  422. data/vendor/rubyexts/lib/rubyexts/try_dup.rb +43 -0
  423. data/vendor/rubyexts/lib/rubyexts/unique_array.rb +16 -0
  424. data/vendor/rubyexts/rubyexts.gemspec +36 -0
  425. data/vendor/rubyexts/script/spec +12 -0
  426. data/vendor/rubyexts/spec/rubyexts/array_spec.rb +19 -0
  427. data/vendor/rubyexts/spec/rubyexts/attribute_spec.rb +37 -0
  428. data/vendor/rubyexts/spec/rubyexts/class_spec.rb +1 -0
  429. data/vendor/rubyexts/spec/rubyexts/cli_spec.rb +0 -0
  430. data/vendor/rubyexts/spec/rubyexts/colored_string_spec.rb +9 -0
  431. data/vendor/rubyexts/spec/rubyexts/enumerable_spec.rb +52 -0
  432. data/vendor/rubyexts/spec/rubyexts/file_spec.rb +78 -0
  433. data/vendor/rubyexts/spec/rubyexts/hash_spec.rb +91 -0
  434. data/vendor/rubyexts/spec/rubyexts/kernel_spec.rb +9 -0
  435. data/vendor/rubyexts/spec/rubyexts/module_spec.rb +0 -0
  436. data/vendor/rubyexts/spec/rubyexts/object_space_spec.rb +17 -0
  437. data/vendor/rubyexts/spec/rubyexts/object_spec.rb +57 -0
  438. data/vendor/rubyexts/spec/rubyexts/os_spec.rb +121 -0
  439. data/vendor/rubyexts/spec/rubyexts/platform_spec.rb +0 -0
  440. data/vendor/rubyexts/spec/rubyexts/random_spec.rb +31 -0
  441. data/vendor/rubyexts/spec/rubyexts/string_spec.rb +23 -0
  442. data/vendor/rubyexts/spec/rubyexts/time_dsl_spec.rb +88 -0
  443. data/vendor/rubyexts/spec/rubyexts/time_spec.rb +11 -0
  444. data/vendor/rubyexts/spec/rubyexts/unique_array_spec.rb +0 -0
  445. data/vendor/rubyexts/spec/rubyexts_spec.rb +182 -0
  446. data/vendor/rubyexts/spec/spec.opts +5 -0
  447. data/vendor/rubyexts/spec/spec_helper.rb +16 -0
  448. metadata +510 -0
@@ -0,0 +1,405 @@
1
+ require 'ostruct'
2
+
3
+ module Spec
4
+ module Runner
5
+ class Options
6
+ FILE_SORTERS = {
7
+ 'mtime' => lambda {|file_a, file_b| File.mtime(file_b) <=> File.mtime(file_a)}
8
+ }
9
+
10
+ EXAMPLE_FORMATTERS = { # Load these lazily for better speed
11
+ 'silent' => ['spec/runner/formatter/silent_formatter', 'Formatter::SilentFormatter'],
12
+ 'l' => ['spec/runner/formatter/silent_formatter', 'Formatter::SilentFormatter'],
13
+ 'specdoc' => ['spec/runner/formatter/specdoc_formatter', 'Formatter::SpecdocFormatter'],
14
+ 's' => ['spec/runner/formatter/specdoc_formatter', 'Formatter::SpecdocFormatter'],
15
+ 'nested' => ['spec/runner/formatter/nested_text_formatter', 'Formatter::NestedTextFormatter'],
16
+ 'n' => ['spec/runner/formatter/nested_text_formatter', 'Formatter::NestedTextFormatter'],
17
+ 'html' => ['spec/runner/formatter/html_formatter', 'Formatter::HtmlFormatter'],
18
+ 'h' => ['spec/runner/formatter/html_formatter', 'Formatter::HtmlFormatter'],
19
+ 'progress' => ['spec/runner/formatter/progress_bar_formatter', 'Formatter::ProgressBarFormatter'],
20
+ 'p' => ['spec/runner/formatter/progress_bar_formatter', 'Formatter::ProgressBarFormatter'],
21
+ 'failing_examples' => ['spec/runner/formatter/failing_examples_formatter', 'Formatter::FailingExamplesFormatter'],
22
+ 'e' => ['spec/runner/formatter/failing_examples_formatter', 'Formatter::FailingExamplesFormatter'],
23
+ 'failing_example_groups' => ['spec/runner/formatter/failing_example_groups_formatter', 'Formatter::FailingExampleGroupsFormatter'],
24
+ 'g' => ['spec/runner/formatter/failing_example_groups_formatter', 'Formatter::FailingExampleGroupsFormatter'],
25
+ 'profile' => ['spec/runner/formatter/profile_formatter', 'Formatter::ProfileFormatter'],
26
+ 'o' => ['spec/runner/formatter/profile_formatter', 'Formatter::ProfileFormatter'],
27
+ 'textmate' => ['spec/runner/formatter/text_mate_formatter', 'Formatter::TextMateFormatter']
28
+ }
29
+
30
+ attr_accessor(
31
+ :autospec, # hack to tell
32
+ :filename_pattern,
33
+ :backtrace_tweaker,
34
+ :context_lines,
35
+ :diff_format,
36
+ :dry_run,
37
+ :profile,
38
+ :heckle_runner,
39
+ :debug,
40
+ :line_number,
41
+ :loadby,
42
+ :reporter,
43
+ :reverse,
44
+ :timeout,
45
+ :verbose,
46
+ :user_input_for_runner,
47
+ :error_stream,
48
+ :output_stream,
49
+ # TODO: BT - Figure out a better name
50
+ :argv
51
+ )
52
+ attr_reader :colour, :differ_class, :files, :examples, :example_groups
53
+ attr_writer :drb_port
54
+
55
+ def initialize(error_stream, output_stream)
56
+ @error_stream = error_stream
57
+ @output_stream = output_stream
58
+ @filename_pattern = "**/*_spec.rb"
59
+ @backtrace_tweaker = QuietBacktraceTweaker.new
60
+ @examples = []
61
+ @colour = false
62
+ @profile = false
63
+ @dry_run = false
64
+ @debug = false
65
+ @reporter = Reporter.new(self)
66
+ @context_lines = 3
67
+ @diff_format = :unified
68
+ @files = []
69
+ @example_groups = []
70
+ @result = nil
71
+ @examples_run = false
72
+ @examples_should_be_run = nil
73
+ @user_input_for_runner = nil
74
+ @after_suite_parts = []
75
+ @files_loaded = false
76
+ @out_used = nil
77
+ end
78
+
79
+ def add_example_group(example_group)
80
+ @example_groups << example_group
81
+ end
82
+
83
+ def line_number_requested?
84
+ !!line_number
85
+ end
86
+
87
+ def example_line
88
+ Spec::Runner::LineNumberQuery.new(self).example_line_for(files.first, line_number)
89
+ end
90
+
91
+ def remove_example_group(example_group)
92
+ @example_groups.delete(example_group)
93
+ end
94
+
95
+ def require_ruby_debug
96
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
97
+ require 'ruby-debug'
98
+ end
99
+
100
+ def project_root # :nodoc:
101
+ require 'pathname'
102
+ @project_root ||= determine_project_root
103
+ end
104
+
105
+ def determine_project_root # :nodoc:
106
+ # This is borrowed (slightly modified) from Scott Taylors
107
+ # project_path project:
108
+ # http://github.com/smtlaissezfaire/project_path
109
+ Pathname(File.expand_path('.')).ascend do |path|
110
+ if File.exists?(File.join(path, "spec"))
111
+ return path
112
+ end
113
+ end
114
+ end
115
+
116
+ def add_dir_from_project_root_to_load_path(dir, load_path=$LOAD_PATH) # :nodoc:
117
+ return if project_root.nil?
118
+ full_dir = File.join(project_root, dir)
119
+ load_path.unshift full_dir unless load_path.include?(full_dir)
120
+ end
121
+
122
+ def run_examples
123
+ require_ruby_debug if debug
124
+ return true unless examples_should_be_run?
125
+ success = true
126
+ begin
127
+ runner = custom_runner || ExampleGroupRunner.new(self)
128
+
129
+ unless @files_loaded
130
+ ['spec','lib'].each do |dir|
131
+ add_dir_from_project_root_to_load_path(dir)
132
+ end
133
+ runner.load_files(files_to_load)
134
+ @files_loaded = true
135
+ end
136
+
137
+ define_predicate_matchers
138
+ plugin_mock_framework
139
+ ignore_backtrace_patterns
140
+
141
+ # TODO - this has to happen after the files get loaded,
142
+ # otherwise the before_suite_parts are not populated
143
+ # from the configuration. There is no spec for this
144
+ # directly, but features/before_and_after_blocks/before_and_after_blocks.story
145
+ # will fail if this happens before the files are loaded.
146
+ before_suite_parts.each { |part| part.call }
147
+
148
+ if example_groups.empty?
149
+ true
150
+ else
151
+ set_spec_from_line_number if line_number
152
+ success = runner.run
153
+ @examples_run = true
154
+ heckle if heckle_runner
155
+ success
156
+ end
157
+ ensure
158
+ after_suite_parts.each do |part|
159
+ part.arity < 1 ? part.call : part.call(success)
160
+ end
161
+ end
162
+ end
163
+
164
+ def before_suite_parts
165
+ Spec::Example::BeforeAndAfterHooks.before_suite_parts
166
+ end
167
+
168
+ def after_suite_parts
169
+ Spec::Example::BeforeAndAfterHooks.after_suite_parts
170
+ end
171
+
172
+ def examples_run?
173
+ @examples_run
174
+ end
175
+
176
+ def examples_should_not_be_run
177
+ @examples_should_be_run = false
178
+ end
179
+
180
+ def mock_framework
181
+ # TODO - don't like this dependency - perhaps store this in here instead?
182
+ Spec::Runner.configuration.mock_framework
183
+ end
184
+
185
+ def colour=(colour)
186
+ @colour = colour
187
+ if @colour && RUBY_PLATFORM =~ /mswin|mingw/ ;\
188
+ begin ;\
189
+ replace_output = @output_stream.equal?($stdout) ;\
190
+ require 'rubygems' unless ENV['NO_RUBYGEMS'] ;\
191
+ require 'Win32/Console/ANSI' ;\
192
+ @output_stream = $stdout if replace_output ;\
193
+ rescue LoadError ;\
194
+ warn "You must 'gem install win32console' to use colour on Windows" ;\
195
+ @colour = false ;\
196
+ end
197
+ end
198
+ end
199
+
200
+ def parse_diff(format)
201
+ case format
202
+ when :context, 'context', 'c'
203
+ @diff_format = :context
204
+ default_differ
205
+ when :unified, 'unified', 'u', '', nil
206
+ @diff_format = :unified
207
+ default_differ
208
+ else
209
+ @diff_format = :custom
210
+ self.differ_class = load_class(format, 'differ', '--diff')
211
+ end
212
+ end
213
+
214
+ def parse_example(example)
215
+ if(File.file?(example))
216
+ @examples = [File.open(example).read.split("\n")].flatten
217
+ else
218
+ @examples = [example]
219
+ end
220
+ end
221
+
222
+ def parse_format(format_arg)
223
+ format, where = ClassAndArgumentsParser.parse(format_arg)
224
+ unless where
225
+ raise "When using several --format options only one of them can be without a file" if @out_used
226
+ where = @output_stream
227
+ @out_used = true
228
+ end
229
+ @format_options ||= []
230
+ @format_options << [format, where]
231
+ end
232
+
233
+ def formatters
234
+ @format_options ||= [['progress', @output_stream]]
235
+ @formatters ||= load_formatters(@format_options, EXAMPLE_FORMATTERS)
236
+ end
237
+
238
+ def load_formatters(format_options, formatters)
239
+ format_options.map do |format, where|
240
+ formatter_type = if formatters[format]
241
+ require formatters[format][0]
242
+ eval(formatters[format][1], binding, __FILE__, __LINE__)
243
+ else
244
+ load_class(format, 'formatter', '--format')
245
+ end
246
+ formatter_type.new(formatter_options, where)
247
+ end
248
+ end
249
+
250
+ def formatter_options
251
+ @formatter_options ||= OpenStruct.new(
252
+ :colour => colour,
253
+ :autospec => autospec,
254
+ :dry_run => dry_run
255
+ )
256
+ end
257
+
258
+ def which_heckle_runner
259
+ ([/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM} || Spec::Ruby.version.to_f == 1.9) ? "spec/runner/heckle_runner_unsupported" : "spec/runner/heckle_runner"
260
+ end
261
+
262
+ def load_heckle_runner(heckle)
263
+ @format_options ||= [['silent', @output_stream]]
264
+ require which_heckle_runner
265
+ @heckle_runner = ::Spec::Runner::HeckleRunner.new(heckle)
266
+ end
267
+
268
+ def number_of_examples
269
+ return examples.size unless examples.empty?
270
+ @example_groups.inject(0) {|sum, group| sum + group.number_of_examples}
271
+ end
272
+
273
+ def files_to_load
274
+ result = []
275
+ sorted_files.each do |file|
276
+ if File.directory?(file)
277
+ filename_pattern.split(",").each do |pattern|
278
+ result += Dir[File.expand_path("#{file}/#{pattern.strip}")]
279
+ end
280
+ elsif File.file?(file)
281
+ result << file
282
+ else
283
+ raise "File or directory not found: #{file}"
284
+ end
285
+ end
286
+ result
287
+ end
288
+
289
+ def dry_run?
290
+ @dry_run == true
291
+ end
292
+
293
+ def drb_port
294
+ @drb_port.to_i if @drb_port
295
+ end
296
+
297
+ protected
298
+
299
+ def define_predicate_matchers
300
+ Spec::Runner.configuration.predicate_matchers.each_pair do |matcher_method, method_on_object|
301
+ Spec::Example::ExampleMethods::__send__ :define_method, matcher_method do |*args|
302
+ eval("be_#{method_on_object.to_s.gsub('?','')}(*args)")
303
+ end
304
+ end
305
+ end
306
+
307
+ def plugin_mock_framework
308
+ case mock_framework
309
+ when Module
310
+ Spec::Example::ExampleMethods.__send__ :include, mock_framework
311
+ else
312
+ require mock_framework
313
+ Spec::Example::ExampleMethods.__send__ :include, Spec::Adapters::MockFramework
314
+ end
315
+ end
316
+
317
+ def ignore_backtrace_patterns
318
+ @backtrace_tweaker.ignore_patterns Spec::Runner.configuration.ignored_backtrace_patterns
319
+ end
320
+
321
+ def examples_should_be_run?
322
+ return @examples_should_be_run unless @examples_should_be_run.nil?
323
+ @examples_should_be_run = true
324
+ end
325
+
326
+ def differ_class=(klass)
327
+ return unless klass
328
+ @differ_class = klass
329
+ Spec::Expectations.differ = self.differ_class.new(self)
330
+ end
331
+
332
+ def load_class(name, kind, option)
333
+ if name =~ /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/
334
+ arg = $2 == "" ? nil : $2
335
+ [$1, arg]
336
+ else
337
+ m = "#{name.inspect} is not a valid class name"
338
+ @error_stream.puts m
339
+ raise m
340
+ end
341
+ begin
342
+ eval(name, binding, __FILE__, __LINE__)
343
+ rescue NameError => e
344
+ @error_stream.puts "Couldn't find #{kind} class #{name}"
345
+ @error_stream.puts "Make sure the --require option is specified *before* #{option}"
346
+ if $_spec_spec ; raise e ; else exit(1) ; end
347
+ end
348
+ end
349
+
350
+ def custom_runner
351
+ return nil unless custom_runner?
352
+ klass_name, arg = ClassAndArgumentsParser.parse(user_input_for_runner)
353
+ runner_type = load_class(klass_name, 'example group runner', '--runner')
354
+ return runner_type.new(self, arg)
355
+ end
356
+
357
+ def custom_runner?
358
+ return user_input_for_runner ? true : false
359
+ end
360
+
361
+ def heckle
362
+ heckle_runner = self.heckle_runner
363
+ self.heckle_runner = nil
364
+ heckle_runner.heckle_with
365
+ end
366
+
367
+ def sorted_files
368
+ return sorter ? files.sort(&sorter) : files
369
+ end
370
+
371
+ def sorter
372
+ FILE_SORTERS[loadby]
373
+ end
374
+
375
+ def default_differ
376
+ require 'spec/runner/differs/default'
377
+ self.differ_class = ::Spec::Expectations::Differs::Default
378
+ end
379
+
380
+ def set_spec_from_line_number
381
+ if examples.empty?
382
+ if files.length == 1
383
+ if File.directory?(files[0])
384
+ error_stream.puts "You must specify one file, not a directory when providing a line number"
385
+ exit(1) if stderr?
386
+ else
387
+ example = LineNumberQuery.new(self).spec_name_for(files[0], line_number)
388
+ @examples = [example]
389
+ end
390
+ else
391
+ error_stream.puts "Only one file can be specified when providing a line number: #{files.inspect}"
392
+ exit(3) if stderr?
393
+ end
394
+ else
395
+ error_stream.puts "You cannot use --example and specify a line number"
396
+ exit(4) if stderr?
397
+ end
398
+ end
399
+
400
+ def stderr?
401
+ @error_stream == $stderr
402
+ end
403
+ end
404
+ end
405
+ end
@@ -0,0 +1,171 @@
1
+ module Spec
2
+ module Runner
3
+ class Reporter
4
+ attr_reader :options
5
+
6
+ def initialize(options)
7
+ @options = options
8
+ @options.reporter = self
9
+ @failures = []
10
+ @pending_count = 0
11
+ @example_count = 0
12
+ @start_time = nil
13
+ @end_time = nil
14
+ end
15
+
16
+ def example_group_started(example_group)
17
+ @example_group = example_group
18
+ formatters.each do |f|
19
+ f.example_group_started(example_group)
20
+ end
21
+ end
22
+
23
+ def example_started(example)
24
+ formatters.each{|f| f.example_started(example)}
25
+ end
26
+
27
+ def example_finished(example, error=nil)
28
+ @example_count += 1
29
+
30
+ if error.nil?
31
+ example_passed(example)
32
+ elsif Spec::Example::ExamplePendingError === error
33
+ example_pending(example, example.location, error.message)
34
+ else
35
+ example_failed(example, error)
36
+ end
37
+ end
38
+
39
+ def example_failed(example, error)
40
+ backtrace_tweaker.tweak_backtrace(error)
41
+ failure = Failure.new(@example_group.description, example.description, error)
42
+ @failures << failure
43
+ formatters.each do |f|
44
+ f.example_failed(example, @failures.length, failure)
45
+ end
46
+ end
47
+
48
+ def start(number_of_examples)
49
+ @start_time = Time.new
50
+ formatters.each{|f| f.start(number_of_examples)}
51
+ end
52
+
53
+ def end
54
+ @end_time = Time.new
55
+ end
56
+
57
+ # Dumps the summary and returns the total number of failures
58
+ def dump
59
+ formatters.each{|f| f.start_dump}
60
+ dump_pending
61
+ dump_failures
62
+ formatters.each do |f|
63
+ f.dump_summary(duration, @example_count, @failures.length, @pending_count)
64
+ f.close
65
+ end
66
+ @failures.length
67
+ end
68
+
69
+ class Failure
70
+ def initialize(group_description, example_description, exception) # :nodoc:
71
+ @example_name = "#{group_description} #{example_description}"
72
+ @exception = exception
73
+ end
74
+
75
+ # The Exception object raised
76
+ attr_reader :exception
77
+
78
+ # Header messsage for reporting this failure, including the name of the
79
+ # example and an indicator of the type of failure. FAILED indicates a
80
+ # failed expectation. FIXED indicates a pending example that passes, and
81
+ # no longer needs to be pending. RuntimeError indicates that a
82
+ # RuntimeError occured.
83
+ #
84
+ # == Examples
85
+ #
86
+ # 'A new account should have a zero balance' FAILED
87
+ # 'A new account should have a zero balance' FIXED
88
+ # RuntimeError in 'A new account should have a zero balance'
89
+ def header
90
+ if expectation_not_met?
91
+ "'#{@example_name}' FAILED"
92
+ elsif pending_fixed?
93
+ "'#{@example_name}' FIXED"
94
+ else
95
+ "#{@exception.class.name} in '#{@example_name}'"
96
+ end
97
+ end
98
+
99
+ def pending_fixed? # :nodoc:
100
+ @exception.is_a?(Spec::Example::PendingExampleFixedError)
101
+ end
102
+
103
+ def expectation_not_met? # :nodoc:
104
+ @exception.is_a?(Spec::Expectations::ExpectationNotMetError)
105
+ end
106
+ end
107
+
108
+ private
109
+
110
+ def formatters
111
+ @options.formatters
112
+ end
113
+
114
+ def backtrace_tweaker
115
+ @options.backtrace_tweaker
116
+ end
117
+
118
+ def dump_failures
119
+ return if @failures.empty?
120
+ @failures.inject(1) do |index, failure|
121
+ formatters.each{|f| f.dump_failure(index, failure)}
122
+ index + 1
123
+ end
124
+ end
125
+
126
+ def dump_pending
127
+ formatters.each{|f| f.dump_pending}
128
+ end
129
+
130
+ def duration
131
+ return @end_time - @start_time unless (@end_time.nil? or @start_time.nil?)
132
+ return "0.0"
133
+ end
134
+
135
+ def example_passed(example)
136
+ formatters.each{|f| f.example_passed(example)}
137
+ end
138
+
139
+ EXAMPLE_PENDING_DEPRECATION_WARNING = <<-WARNING
140
+
141
+ *********************************************************************
142
+ DEPRECATION WARNING: RSpec's formatters have changed example_pending
143
+ to accept two arguments instead of three. Please see the rdoc
144
+ for Spec::Runner::Formatter::BaseFormatter#example_pending
145
+ for more information.
146
+
147
+ Please update any custom formatters to accept only two arguments
148
+ to example_pending. Support for example_pending with two arguments
149
+ and this warning message will be removed after the RSpec 2.0 release.
150
+ *********************************************************************
151
+ WARNING
152
+
153
+ def example_pending(example, ignore, message="Not Yet Implemented")
154
+ @pending_count += 1
155
+ formatters.each do |formatter|
156
+ if formatter_uses_deprecated_example_pending_method?(formatter)
157
+ Spec.warn EXAMPLE_PENDING_DEPRECATION_WARNING
158
+ formatter.example_pending(example, message, example.location)
159
+ else
160
+ formatter.example_pending(example, message)
161
+ end
162
+ end
163
+ end
164
+
165
+ def formatter_uses_deprecated_example_pending_method?(formatter)
166
+ formatter.method(:example_pending).arity == 3
167
+ end
168
+
169
+ end
170
+ end
171
+ end