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,27 @@
1
+ module Spec
2
+ module Example
3
+ module ArgsAndOptions
4
+ def args_and_options(*args) # :nodoc:
5
+ options = Hash === args.last ? args.pop : {}
6
+ return args, options
7
+ end
8
+
9
+ def add_options(args, options={}) # :nodoc:
10
+ args << {} unless Hash === args.last
11
+ args.extend WithOptions
12
+ args.options.merge!(options)
13
+ args.options
14
+ end
15
+
16
+ def set_location(options, location) # :nodoc:
17
+ options[:location] ||= location
18
+ end
19
+
20
+ module WithOptions # :nodoc:
21
+ def options
22
+ last
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,93 @@
1
+ module Spec
2
+ module Example
3
+ module BeforeAndAfterHooks
4
+ class << self
5
+ def before_suite_parts # :nodoc:
6
+ @before_suite_parts ||= []
7
+ end
8
+
9
+ def after_suite_parts # :nodoc:
10
+ @after_suite_parts ||= []
11
+ end
12
+ end
13
+
14
+ # Registers a block to be executed before examples. <tt>scope</tt> can be
15
+ # <tt>:each</tt> (default), <tt>:all</tt>, or <tt>:suite</tt>. When
16
+ # <tt>:each</tt>, the block is executed before each example. When
17
+ # <tt>:all</tt>, the block is executed only once before any examples are
18
+ # run.
19
+ def append_before(scope = :each, &block)
20
+ before_parts(scope) << block
21
+ end
22
+ alias_method :before, :append_before
23
+
24
+ # Registers a block to be executed before each example.
25
+ # This method prepends +block+ to existing before blocks.
26
+ #
27
+ # See <tt>append_before</tt> for scoping semantics.
28
+ def prepend_before(scope = :each, &block)
29
+ before_parts(scope).unshift(block)
30
+ end
31
+
32
+ # Registers a block to be executed after each example.
33
+ # This method prepends +block+ to existing after blocks.
34
+ #
35
+ # See <tt>append_before</tt> for scoping semantics.
36
+ def prepend_after(scope = :each, &block)
37
+ after_parts(scope).unshift(block)
38
+ end
39
+ alias_method :after, :prepend_after
40
+
41
+ # Registers a block to be executed after each example.
42
+ # This method appends +block+ to existing after blocks.
43
+ #
44
+ # See <tt>append_before</tt> for scoping semantics.
45
+ def append_after(scope = :each, &block)
46
+ after_parts(scope) << block
47
+ end
48
+
49
+ def before_each_parts # :nodoc:
50
+ @before_each_parts ||= []
51
+ end
52
+
53
+ def after_each_parts # :nodoc:
54
+ @after_each_parts ||= []
55
+ end
56
+
57
+ def before_all_parts # :nodoc:
58
+ @before_all_parts ||= []
59
+ end
60
+
61
+ def after_all_parts # :nodoc:
62
+ @after_all_parts ||= []
63
+ end
64
+
65
+ def before_suite_parts # :nodoc:
66
+ BeforeAndAfterHooks.before_suite_parts
67
+ end
68
+
69
+ def after_suite_parts # :nodoc:
70
+ BeforeAndAfterHooks.after_suite_parts
71
+ end
72
+
73
+ private
74
+
75
+ def before_parts(scope)
76
+ case scope
77
+ when :each; before_each_parts
78
+ when :all; before_all_parts
79
+ when :suite; before_suite_parts
80
+ end
81
+ end
82
+
83
+ def after_parts(scope)
84
+ case scope
85
+ when :each; after_each_parts
86
+ when :all; after_all_parts
87
+ when :suite; after_suite_parts
88
+ end
89
+ end
90
+
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,25 @@
1
+ module Spec
2
+ module Example
3
+ class ExamplePendingError < StandardError; end
4
+
5
+ class NotYetImplementedError < ExamplePendingError
6
+ MESSAGE = "Not Yet Implemented"
7
+ def initialize
8
+ super(MESSAGE)
9
+ end
10
+ end
11
+
12
+ class PendingExampleFixedError < StandardError; end
13
+
14
+ class NoDescriptionError < ArgumentError
15
+ class << self
16
+ def message(kind, location)
17
+ "No description supplied for #{kind} declared on #{location}"
18
+ end
19
+ end
20
+ def initialize(kind, location)
21
+ super(self.class.message(kind, location))
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,10 @@
1
+ module Spec
2
+ module Example
3
+ # Base class for customized example groups. Use this if you
4
+ # want to make a custom example group.
5
+ class ExampleGroup
6
+ extend Spec::Example::ExampleGroupMethods
7
+ include Spec::Example::ExampleMethods
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,82 @@
1
+ module Spec
2
+ module Example
3
+
4
+ class ExampleGroupFactory
5
+ module ClassMethods
6
+ include Spec::Example::ArgsAndOptions
7
+
8
+ def reset
9
+ @example_group_types = nil
10
+ default(ExampleGroup)
11
+ end
12
+
13
+ def example_group_creation_listeners
14
+ @example_group_creation_listeners ||= []
15
+ end
16
+
17
+ def register_example_group(klass)
18
+ example_group_creation_listeners.each do |listener|
19
+ listener.register_example_group(klass)
20
+ end
21
+ end
22
+
23
+ def create_shared_example_group(*args, &example_group_block) # :nodoc:
24
+ ::Spec::Example::SharedExampleGroup.register(*args, &example_group_block)
25
+ end
26
+
27
+ def create_example_group(*args, &block)
28
+ raise ArgumentError if args.empty? || block.nil?
29
+ add_options(args)
30
+ superclass = determine_superclass(args.last)
31
+ superclass.describe(*args, &block)
32
+ end
33
+
34
+ # Registers an example group class +klass+ with the symbol +type+. For
35
+ # example:
36
+ #
37
+ # Spec::Example::ExampleGroupFactory.register(:farm, FarmExampleGroup)
38
+ #
39
+ # With that you can append a hash with :type => :farm to the describe
40
+ # method and it will load an instance of FarmExampleGroup.
41
+ #
42
+ # describe Pig, :type => :farm do
43
+ # ...
44
+ #
45
+ # If you don't use the hash explicitly, <tt>describe</tt> will
46
+ # implicitly use an instance of FarmExampleGroup for any file loaded
47
+ # from the <tt>./spec/farm</tt> directory.
48
+ def register(key, example_group_class)
49
+ @example_group_types[key.to_sym] = example_group_class
50
+ end
51
+
52
+ # Sets the default ExampleGroup class
53
+ def default(example_group_class)
54
+ Spec.__send__ :remove_const, :ExampleGroup if Spec.const_defined?(:ExampleGroup)
55
+ Spec.const_set(:ExampleGroup, example_group_class)
56
+ old = @example_group_types
57
+ @example_group_types = Hash.new(example_group_class)
58
+ @example_group_types.merge!(old) if old
59
+ end
60
+
61
+ def [](key)
62
+ @example_group_types[key]
63
+ end
64
+
65
+ protected
66
+
67
+ def determine_superclass(opts)
68
+ if type = opts[:type]
69
+ self[type]
70
+ elsif opts[:location] =~ /spec(\\|\/)(#{@example_group_types.keys.sort_by{|k| k.to_s.length}.reverse.join('|')})/
71
+ self[$2 == '' ? nil : $2.to_sym]
72
+ else
73
+ self[nil]
74
+ end
75
+ end
76
+
77
+ end
78
+ extend ClassMethods
79
+ self.reset
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,53 @@
1
+ module Spec
2
+ module Example
3
+ class ExampleGroupHierarchy < Array
4
+ def initialize(example_group_class)
5
+ push example_group_class
6
+ if example_group_class.respond_to?(:superclass) && example_group_class.superclass.respond_to?(:example_group_hierarchy)
7
+ unshift example_group_class.superclass.example_group_hierarchy
8
+ flatten!
9
+ end
10
+ end
11
+
12
+ def run_before_all(example)
13
+ example.eval_each_fail_fast(before_all_parts)
14
+ end
15
+
16
+ def run_before_each(example)
17
+ example.eval_each_fail_fast(before_each_parts)
18
+ end
19
+
20
+ def run_after_each(example)
21
+ example.eval_each_fail_slow(after_each_parts)
22
+ end
23
+
24
+ def run_after_all(example)
25
+ example.eval_each_fail_slow(after_all_parts)
26
+ end
27
+
28
+ def before_all_parts
29
+ @before_all_parts ||= collect {|klass| klass.before_all_parts}.flatten
30
+ end
31
+
32
+ def before_each_parts
33
+ @before_each_parts ||= collect {|klass| klass.before_each_parts}.flatten
34
+ end
35
+
36
+ def after_each_parts
37
+ @after_each_parts ||= reverse.collect {|klass| klass.after_each_parts}.flatten
38
+ end
39
+
40
+ def after_all_parts
41
+ @after_all_parts ||= reverse.collect {|klass| klass.after_all_parts}.flatten
42
+ end
43
+
44
+ def nested_descriptions
45
+ @nested_descriptions ||= collect {|eg| nested_description_from(eg) == "" ? nil : nested_description_from(eg) }.compact
46
+ end
47
+
48
+ def nested_description_from(example_group)
49
+ example_group.description_args.join
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,282 @@
1
+ module Spec
2
+ module Example
3
+
4
+ module ExampleGroupMethods
5
+ class << self
6
+ attr_accessor :matcher_class
7
+
8
+ def build_description_from(*args)
9
+ text = args.inject("") do |description, arg|
10
+ description << " " unless (description == "" || arg.to_s =~ /^(\s|\.|#)/)
11
+ description << arg.to_s
12
+ end
13
+ text == "" ? nil : text
14
+ end
15
+ end
16
+
17
+ include Spec::Example::BeforeAndAfterHooks
18
+ include Spec::Example::Subject::ExampleGroupMethods
19
+ include Spec::Example::PredicateMatchers
20
+ include Spec::Example::ArgsAndOptions
21
+
22
+ attr_reader :location
23
+
24
+ def options # :nodoc:
25
+ @options ||= {}
26
+ end
27
+
28
+ def inherited(klass) # :nodoc:
29
+ super
30
+ ExampleGroupFactory.register_example_group(klass)
31
+ end
32
+
33
+ # Makes the describe/it syntax available from a class. For example:
34
+ #
35
+ # class StackSpec < Spec::ExampleGroup
36
+ # describe Stack, "with no elements"
37
+ #
38
+ # before
39
+ # @stack = Stack.new
40
+ # end
41
+ #
42
+ # it "should raise on pop" do
43
+ # lambda{ @stack.pop }.should raise_error
44
+ # end
45
+ # end
46
+ #
47
+ def describe(*args, &example_group_block)
48
+ raise Spec::Example::NoDescriptionError.new("example group", caller(0)[1]) if args.empty?
49
+ if example_group_block
50
+ options = add_options(args)
51
+ set_location(options, caller(0)[1])
52
+ if options[:shared]
53
+ ExampleGroupFactory.create_shared_example_group(*args, &example_group_block)
54
+ else
55
+ subclass(*args, &example_group_block)
56
+ end
57
+ else
58
+ set_description(*args)
59
+ end
60
+ end
61
+ alias :context :describe
62
+
63
+ # Use this to pull in examples from shared example groups.
64
+ def it_should_behave_like(*shared_example_groups)
65
+ shared_example_groups.each do |group|
66
+ include_shared_example_group(group)
67
+ end
68
+ end
69
+
70
+ # Creates an instance of the current example group class and adds it to
71
+ # a collection of examples of the current example group.
72
+ def example(description=nil, options={}, backtrace=nil, &implementation)
73
+ example_proxy = ExampleProxy.new(description, options, backtrace || caller(0)[1])
74
+ example_proxies << example_proxy
75
+ example_implementations[example_proxy] = implementation || pending_implementation
76
+ example_proxy
77
+ end
78
+
79
+ def pending_implementation
80
+ lambda { raise(Spec::Example::NotYetImplementedError) }
81
+ end
82
+
83
+ alias_method :it, :example
84
+ alias_method :specify, :example
85
+
86
+ # Use this to temporarily disable an example.
87
+ def xexample(description=nil, opts={}, &block)
88
+ Kernel.warn("Example disabled: #{description}")
89
+ end
90
+
91
+ alias_method :xit, :xexample
92
+ alias_method :xspecify, :xexample
93
+
94
+ def run(run_options)
95
+ examples = examples_to_run(run_options)
96
+ notify(run_options.reporter) unless examples.empty?
97
+ return true if examples.empty?
98
+ return dry_run(examples, run_options) if run_options.dry_run?
99
+
100
+ define_methods_from_predicate_matchers
101
+
102
+ success, before_all_instance_variables = run_before_all(run_options)
103
+ success, after_all_instance_variables = run_examples(success, before_all_instance_variables, examples, run_options)
104
+ success = run_after_all(success, after_all_instance_variables, run_options)
105
+ end
106
+
107
+ def set_description(*args)
108
+ @description_args, @options = args_and_options(*args)
109
+ @backtrace = caller(1)
110
+ @location = File.expand_path(options[:location]) if options[:location]
111
+ self
112
+ end
113
+
114
+ def notify(reporter) # :nodoc:
115
+ reporter.example_group_started(ExampleGroupProxy.new(self))
116
+ end
117
+
118
+ def description
119
+ @description ||= ExampleGroupMethods.build_description_from(*description_parts) || to_s
120
+ end
121
+
122
+ def described_type
123
+ @described_type ||= description_parts.reverse.find {|part| part.is_a?(Module)}
124
+ end
125
+
126
+ def described_class
127
+ @described_class ||= Class === described_type ? described_type : nil
128
+ end
129
+
130
+ def description_args
131
+ @description_args ||= []
132
+ end
133
+
134
+ def description_parts #:nodoc:
135
+ @description_parts ||= example_group_hierarchy.inject([]) do |parts, example_group_class|
136
+ [parts << example_group_class.description_args].flatten
137
+ end
138
+ end
139
+
140
+ def example_proxies # :nodoc:
141
+ @example_proxies ||= []
142
+ end
143
+
144
+ def example_implementations # :nodoc:
145
+ @example_implementations ||= {}
146
+ end
147
+
148
+ def examples(run_options=nil) #:nodoc:
149
+ (run_options && run_options.reverse) ? example_proxies.reverse : example_proxies
150
+ end
151
+
152
+ def number_of_examples #:nodoc:
153
+ example_proxies.length
154
+ end
155
+
156
+ def example_group_hierarchy
157
+ @example_group_hierarchy ||= ExampleGroupHierarchy.new(self)
158
+ end
159
+
160
+ def nested_descriptions
161
+ example_group_hierarchy.nested_descriptions
162
+ end
163
+
164
+ def include_constants_in(mod)
165
+ include mod if (Spec::Ruby.version.to_f >= 1.9) & (Module === mod) & !(Class === mod)
166
+ end
167
+
168
+ def let(name, &block)
169
+ define_method name do
170
+ @assignments ||= {}
171
+ @assignments[name] ||= instance_eval(&block)
172
+ end
173
+ end
174
+
175
+ private
176
+
177
+ def subclass(*args, &example_group_block)
178
+ @class_count ||= 0
179
+ @class_count += 1
180
+ klass = const_set("Subclass_#{@class_count}", Class.new(self))
181
+ klass.set_description(*args)
182
+ klass.include_constants_in(args.last[:scope])
183
+ klass.module_eval(&example_group_block)
184
+ klass
185
+ end
186
+
187
+ def dry_run(examples, run_options)
188
+ examples.each do |example|
189
+ run_options.reporter.example_started(example)
190
+ run_options.reporter.example_finished(example)
191
+ end
192
+ end
193
+
194
+ def run_before_all(run_options)
195
+ return [true,{}] if example_group_hierarchy.before_all_parts.empty?
196
+ example_proxy = ExampleProxy.new("before(:all)")
197
+ before_all = new(example_proxy)
198
+ begin
199
+ example_group_hierarchy.run_before_all(before_all)
200
+ return [true, before_all.instance_variable_hash]
201
+ rescue Exception => e
202
+ run_options.reporter.example_failed(example_proxy, e)
203
+ return [false, before_all.instance_variable_hash]
204
+ end
205
+ end
206
+
207
+ def run_examples(success, instance_variables, examples, run_options)
208
+ return [success, instance_variables] unless success
209
+
210
+ after_all_instance_variables = instance_variables
211
+
212
+ examples.each do |example|
213
+ example_group_instance = new(example, &example_implementations[example])
214
+ success &= example_group_instance.execute(run_options, instance_variables)
215
+ after_all_instance_variables = example_group_instance.instance_variable_hash
216
+ end
217
+
218
+ return [success, after_all_instance_variables]
219
+ end
220
+
221
+ def run_after_all(success, instance_variables, run_options)
222
+ return success if example_group_hierarchy.after_all_parts.empty?
223
+ example_proxy = ExampleProxy.new("after(:all)")
224
+ after_all = new(example_proxy)
225
+ after_all.set_instance_variables_from_hash(instance_variables)
226
+ example_group_hierarchy.run_after_all(after_all)
227
+ success
228
+ rescue Exception => e
229
+ run_options.reporter.example_failed(example_proxy, e)
230
+ false
231
+ end
232
+
233
+ def examples_to_run(run_options)
234
+ return example_proxies unless examples_were_specified?(run_options)
235
+ if run_options.line_number_requested?
236
+ if location =~ /:#{run_options.example_line}:?/
237
+ example_proxies
238
+ else
239
+ example_proxies.select {|proxy| proxy.location =~ /:#{run_options.example_line}:?/}
240
+ end
241
+ else
242
+ example_proxies.reject do |proxy|
243
+ matcher = ExampleGroupMethods.matcher_class.
244
+ new(description.to_s, proxy.description)
245
+ !matcher.matches?(run_options.examples)
246
+ end
247
+ end
248
+ end
249
+
250
+ def examples_were_specified?(run_options)
251
+ !run_options.examples.empty?
252
+ end
253
+
254
+ def method_added(name) # :nodoc:
255
+ example(name.to_s, {}, caller(0)[1]) {__send__ name.to_s} if example_method?(name.to_s)
256
+ end
257
+
258
+ def example_method?(method_name)
259
+ should_method?(method_name)
260
+ end
261
+
262
+ def should_method?(method_name)
263
+ !(method_name =~ /^should(_not)?$/) &&
264
+ method_name =~ /^should/ &&
265
+ instance_method(method_name).arity < 1
266
+ end
267
+
268
+ def include_shared_example_group(shared_example_group)
269
+ case shared_example_group
270
+ when SharedExampleGroup
271
+ include shared_example_group
272
+ else
273
+ unless example_group = SharedExampleGroup.find(shared_example_group)
274
+ raise RuntimeError.new("Shared Example Group '#{shared_example_group}' can not be found")
275
+ end
276
+ include(example_group)
277
+ end
278
+ end
279
+ end
280
+
281
+ end
282
+ end