pupu 0.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 (567) hide show
  1. data/CHANGELOG +1 -0
  2. data/LICENSE +20 -0
  3. data/README.textile +160 -0
  4. data/Rakefile +61 -0
  5. data/TODO.txt +21 -0
  6. data/bin/pupu +73 -0
  7. data/deps.rip +6 -0
  8. data/examples/blog/Rakefile +4 -0
  9. data/examples/blog/Thorfile +9 -0
  10. data/examples/blog/bin/pupu +4 -0
  11. data/examples/blog/config.ru +22 -0
  12. data/examples/blog/config/pupu.rb +4 -0
  13. data/examples/blog/init.rb +18 -0
  14. data/examples/blog/media/javascripts/initializers/lighter.js +16 -0
  15. data/examples/blog/media/pupu/autocompleter/CHANGELOG +1 -0
  16. data/examples/blog/media/pupu/autocompleter/LICENSE +20 -0
  17. data/examples/blog/media/pupu/autocompleter/README.textile +26 -0
  18. data/examples/blog/media/pupu/autocompleter/Rakefile +29 -0
  19. data/examples/blog/media/pupu/autocompleter/TODO +1 -0
  20. data/examples/blog/media/pupu/autocompleter/config.rb +12 -0
  21. data/examples/blog/media/pupu/autocompleter/images/spinner.gif +0 -0
  22. data/examples/blog/media/pupu/autocompleter/javascripts/autocompleter.js +442 -0
  23. data/examples/blog/media/pupu/autocompleter/javascripts/autocompleter.local.js +31 -0
  24. data/examples/blog/media/pupu/autocompleter/javascripts/autocompleter.request.js +109 -0
  25. data/examples/blog/media/pupu/autocompleter/javascripts/initializers/autocompleter.js +26 -0
  26. data/examples/blog/media/pupu/autocompleter/javascripts/observer.js +69 -0
  27. data/examples/blog/media/pupu/autocompleter/metadata.yml +5 -0
  28. data/examples/blog/media/pupu/autocompleter/stylesheets/autocompleter.css +68 -0
  29. data/examples/blog/media/pupu/blueprint/CHANGELOG +1 -0
  30. data/examples/blog/media/pupu/blueprint/LICENSE +20 -0
  31. data/examples/blog/media/pupu/blueprint/README.textile +22 -0
  32. data/examples/blog/media/pupu/blueprint/Rakefile +29 -0
  33. data/examples/blog/media/pupu/blueprint/TODO +3 -0
  34. data/examples/blog/media/pupu/blueprint/config.rb +18 -0
  35. data/examples/blog/media/pupu/blueprint/metadata.yml +5 -0
  36. data/examples/blog/media/pupu/blueprint/stylesheets/ie.css +26 -0
  37. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/buttons/icons/cross.png +0 -0
  38. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/buttons/icons/key.png +0 -0
  39. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/buttons/icons/tick.png +0 -0
  40. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/buttons/readme.txt +32 -0
  41. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/buttons/screen.css +97 -0
  42. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/fancy-type/readme.txt +14 -0
  43. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/fancy-type/screen.css +71 -0
  44. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/link-icons/icons/doc.png +0 -0
  45. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/link-icons/icons/email.png +0 -0
  46. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/link-icons/icons/external.png +0 -0
  47. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/link-icons/icons/feed.png +0 -0
  48. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/link-icons/icons/im.png +0 -0
  49. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/link-icons/icons/pdf.png +0 -0
  50. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/link-icons/icons/visited.png +0 -0
  51. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/link-icons/icons/xls.png +0 -0
  52. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/link-icons/readme.txt +18 -0
  53. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/link-icons/screen.css +40 -0
  54. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/rtl/readme.txt +10 -0
  55. data/examples/blog/media/pupu/blueprint/stylesheets/plugins/rtl/screen.css +109 -0
  56. data/examples/blog/media/pupu/blueprint/stylesheets/print.css +30 -0
  57. data/examples/blog/media/pupu/blueprint/stylesheets/screen.css +251 -0
  58. data/examples/blog/media/pupu/blueprint/stylesheets/src/forms.css +49 -0
  59. data/examples/blog/media/pupu/blueprint/stylesheets/src/grid.css +212 -0
  60. data/examples/blog/media/pupu/blueprint/stylesheets/src/grid.png +0 -0
  61. data/examples/blog/media/pupu/blueprint/stylesheets/src/ie.css +59 -0
  62. data/examples/blog/media/pupu/blueprint/stylesheets/src/print.css +85 -0
  63. data/examples/blog/media/pupu/blueprint/stylesheets/src/reset.css +38 -0
  64. data/examples/blog/media/pupu/blueprint/stylesheets/src/typography.css +105 -0
  65. data/examples/blog/media/pupu/flash/CHANGELOG +1 -0
  66. data/examples/blog/media/pupu/flash/LICENSE +20 -0
  67. data/examples/blog/media/pupu/flash/README.textile +22 -0
  68. data/examples/blog/media/pupu/flash/Rakefile +37 -0
  69. data/examples/blog/media/pupu/flash/TODO +1 -0
  70. data/examples/blog/media/pupu/flash/config.rb +11 -0
  71. data/examples/blog/media/pupu/flash/javascripts/flash.js +63 -0
  72. data/examples/blog/media/pupu/flash/javascripts/initializers/flash.js +12 -0
  73. data/examples/blog/media/pupu/flash/metadata.yml +5 -0
  74. data/examples/blog/media/pupu/flash/stylesheets/initializers/flash.css +21 -0
  75. data/examples/blog/media/pupu/lighter/CHANGELOG +2 -0
  76. data/examples/blog/media/pupu/lighter/LICENSE +20 -0
  77. data/examples/blog/media/pupu/lighter/README.textile +19 -0
  78. data/examples/blog/media/pupu/lighter/TODO.txt +4 -0
  79. data/examples/blog/media/pupu/lighter/config.rb +20 -0
  80. data/examples/blog/media/pupu/lighter/initializers/lighter.js +11 -0
  81. data/examples/blog/media/pupu/lighter/javascripts/Fuel.css.js +1 -0
  82. data/examples/blog/media/pupu/lighter/javascripts/Fuel.html.js +1 -0
  83. data/examples/blog/media/pupu/lighter/javascripts/Fuel.js.js +1 -0
  84. data/examples/blog/media/pupu/lighter/javascripts/Fuel.md.js +1 -0
  85. data/examples/blog/media/pupu/lighter/javascripts/Fuel.php.js +1 -0
  86. data/examples/blog/media/pupu/lighter/javascripts/Fuel.ruby.js +1 -0
  87. data/examples/blog/media/pupu/lighter/javascripts/Fuel.shell.js +1 -0
  88. data/examples/blog/media/pupu/lighter/javascripts/Fuel.sql.js +1 -0
  89. data/examples/blog/media/pupu/lighter/javascripts/Fuel.template.js +45 -0
  90. data/examples/blog/media/pupu/lighter/javascripts/ZeroClipboard.js +1 -0
  91. data/examples/blog/media/pupu/lighter/javascripts/lighter.js +1 -0
  92. data/examples/blog/media/pupu/lighter/media/ZeroClipboard.swf +0 -0
  93. data/examples/blog/media/pupu/lighter/metadata.yml +5 -0
  94. data/examples/blog/media/pupu/lighter/stylesheets/Flame.git.css +1 -0
  95. data/examples/blog/media/pupu/lighter/stylesheets/Flame.mocha.css +1 -0
  96. data/examples/blog/media/pupu/lighter/stylesheets/Flame.panic.css +1 -0
  97. data/examples/blog/media/pupu/lighter/stylesheets/Flame.standard.css +1 -0
  98. data/examples/blog/media/pupu/lighter/stylesheets/Flame.template.css +101 -0
  99. data/examples/blog/media/pupu/lighter/stylesheets/Flame.tutti.css +1 -0
  100. data/examples/blog/media/pupu/lighter/stylesheets/Flame.twilight.css +1 -0
  101. data/examples/blog/media/pupu/mootools/CHANGELOG +2 -0
  102. data/examples/blog/media/pupu/mootools/LICENSE +20 -0
  103. data/examples/blog/media/pupu/mootools/README.textile +19 -0
  104. data/examples/blog/media/pupu/mootools/Rakefile +29 -0
  105. data/examples/blog/media/pupu/mootools/TODO +1 -0
  106. data/examples/blog/media/pupu/mootools/config.rb +8 -0
  107. data/examples/blog/media/pupu/mootools/javascripts/mootools-1.2-core.js +350 -0
  108. data/examples/blog/media/pupu/mootools/javascripts/mootools-1.2-more.js +154 -0
  109. data/examples/blog/media/pupu/mootools/metadata.yml +5 -0
  110. data/examples/blog/templates/base.html.haml +10 -0
  111. data/examples/blog/templates/examples/arguments.html.haml +7 -0
  112. data/examples/blog/templates/examples/base.html.haml +15 -0
  113. data/examples/blog/templates/examples/dependencies.html.haml +5 -0
  114. data/examples/blog/templates/examples/simple.html.haml +5 -0
  115. data/examples/blog/templates/index.html.haml +11 -0
  116. data/lib/pupu.rb +7 -0
  117. data/lib/pupu/adapters/merb.rb +14 -0
  118. data/lib/pupu/adapters/rails.rb +0 -0
  119. data/lib/pupu/adapters/rango.rb +11 -0
  120. data/lib/pupu/cli.rb +161 -0
  121. data/lib/pupu/dsl.rb +95 -0
  122. data/lib/pupu/exceptions.rb +21 -0
  123. data/lib/pupu/github.rb +121 -0
  124. data/lib/pupu/helpers.rb +13 -0
  125. data/lib/pupu/metadata.rb +15 -0
  126. data/lib/pupu/parser.rb +47 -0
  127. data/lib/pupu/pupu.rb +142 -0
  128. data/lib/pupu/tasks/pupu.rake +42 -0
  129. data/lib/pupu/tasks/pupu.thor +48 -0
  130. data/pupu.gemspec +44 -0
  131. data/script/spec +12 -0
  132. data/simple-templater.scope +6 -0
  133. data/spec/data/public/pupu/autocompleter/CHANGELOG +1 -0
  134. data/spec/data/public/pupu/autocompleter/LICENSE +20 -0
  135. data/spec/data/public/pupu/autocompleter/README.textile +26 -0
  136. data/spec/data/public/pupu/autocompleter/Rakefile +29 -0
  137. data/spec/data/public/pupu/autocompleter/TODO +1 -0
  138. data/spec/data/public/pupu/autocompleter/config.rb +12 -0
  139. data/spec/data/public/pupu/autocompleter/images/spinner.gif +0 -0
  140. data/spec/data/public/pupu/autocompleter/initializers/autocompleter.js +26 -0
  141. data/spec/data/public/pupu/autocompleter/javascripts/autocompleter.js +442 -0
  142. data/spec/data/public/pupu/autocompleter/javascripts/autocompleter.local.js +31 -0
  143. data/spec/data/public/pupu/autocompleter/javascripts/autocompleter.request.js +109 -0
  144. data/spec/data/public/pupu/autocompleter/javascripts/observer.js +69 -0
  145. data/spec/data/public/pupu/autocompleter/stylesheets/autocompleter.css +68 -0
  146. data/spec/pupu/adapters/merb_spec.rb +0 -0
  147. data/spec/pupu/adapters/rango_spec.rb +0 -0
  148. data/spec/pupu/cli_spec.rb +21 -0
  149. data/spec/pupu/dsl_spec.rb +62 -0
  150. data/spec/pupu/exceptions_spec.rb +14 -0
  151. data/spec/pupu/github_spec.rb +19 -0
  152. data/spec/pupu/helpers_spec.rb +18 -0
  153. data/spec/pupu/metadata_spec.rb +21 -0
  154. data/spec/pupu/parser_spec.rb +19 -0
  155. data/spec/pupu/pupu_spec.rb +125 -0
  156. data/spec/spec.opts +5 -0
  157. data/spec/spec_helper.rb +10 -0
  158. data/stubs/pupu/content/CHANGELOG +2 -0
  159. data/stubs/pupu/content/LICENSE.rbt +20 -0
  160. data/stubs/pupu/content/README.textile.rbt +19 -0
  161. data/stubs/pupu/content/TODO.txt +4 -0
  162. data/stubs/pupu/content/config.rb.rbt +20 -0
  163. data/stubs/pupu/content/initializers/%name%.css +0 -0
  164. data/stubs/pupu/content/initializers/%name%.js +3 -0
  165. data/stubs/pupu/content/javascripts/%javascript%.js +0 -0
  166. data/stubs/pupu/content/stylesheets/%stylesheet%.css +0 -0
  167. data/stubs/pupu/metadata.yml +3 -0
  168. data/stubs/pupu/postprocess.rb +11 -0
  169. data/stubs/pupu/setup.rb +25 -0
  170. data/url.rb +20 -0
  171. data/url_spec.rb +35 -0
  172. data/vendor/media-path/CHANGELOG +3 -0
  173. data/vendor/media-path/LICENSE +20 -0
  174. data/vendor/media-path/README.textile +40 -0
  175. data/vendor/media-path/Rakefile +61 -0
  176. data/vendor/media-path/TODO.txt +6 -0
  177. data/vendor/media-path/deps.rip +5 -0
  178. data/vendor/media-path/lib/media-path.rb +269 -0
  179. data/vendor/media-path/media-path.gemspec +38 -0
  180. data/vendor/media-path/script/spec +14 -0
  181. data/vendor/media-path/spec/media-path_spec.rb +158 -0
  182. data/vendor/media-path/spec/spec.opts +5 -0
  183. data/vendor/media-path/spec/stubs/blog/public/js/moo.js +0 -0
  184. data/vendor/rspec/History.rdoc +1510 -0
  185. data/vendor/rspec/License.txt +22 -0
  186. data/vendor/rspec/Manifest.txt +383 -0
  187. data/vendor/rspec/README.rdoc +55 -0
  188. data/vendor/rspec/Rakefile +145 -0
  189. data/vendor/rspec/Ruby1.9.rdoc +31 -0
  190. data/vendor/rspec/TODO.txt +17 -0
  191. data/vendor/rspec/Upgrade.rdoc +199 -0
  192. data/vendor/rspec/bin/autospec +4 -0
  193. data/vendor/rspec/bin/spec +5 -0
  194. data/vendor/rspec/cucumber.yml +5 -0
  195. data/vendor/rspec/examples/failing/README.txt +11 -0
  196. data/vendor/rspec/examples/failing/diffing_spec.rb +36 -0
  197. data/vendor/rspec/examples/failing/failing_implicit_docstrings_example.rb +17 -0
  198. data/vendor/rspec/examples/failing/failure_in_after.rb +10 -0
  199. data/vendor/rspec/examples/failing/failure_in_before.rb +10 -0
  200. data/vendor/rspec/examples/failing/mocking_example.rb +38 -0
  201. data/vendor/rspec/examples/failing/mocking_with_flexmock.rb +26 -0
  202. data/vendor/rspec/examples/failing/mocking_with_mocha.rb +25 -0
  203. data/vendor/rspec/examples/failing/mocking_with_rr.rb +27 -0
  204. data/vendor/rspec/examples/failing/partial_mock_example.rb +18 -0
  205. data/vendor/rspec/examples/failing/pending_example.rb +7 -0
  206. data/vendor/rspec/examples/failing/predicate_example.rb +32 -0
  207. data/vendor/rspec/examples/failing/raising_example.rb +47 -0
  208. data/vendor/rspec/examples/failing/syntax_error_example.rb +7 -0
  209. data/vendor/rspec/examples/failing/team_spec.rb +41 -0
  210. data/vendor/rspec/examples/failing/timeout_behaviour.rb +5 -0
  211. data/vendor/rspec/examples/passing/custom_formatter.rb +11 -0
  212. data/vendor/rspec/examples/passing/custom_matchers.rb +54 -0
  213. data/vendor/rspec/examples/passing/dynamic_spec.rb +7 -0
  214. data/vendor/rspec/examples/passing/file_accessor.rb +18 -0
  215. data/vendor/rspec/examples/passing/file_accessor_spec.rb +37 -0
  216. data/vendor/rspec/examples/passing/filtered_formatter.rb +17 -0
  217. data/vendor/rspec/examples/passing/filtered_formatter_example.rb +31 -0
  218. data/vendor/rspec/examples/passing/greeter_spec.rb +30 -0
  219. data/vendor/rspec/examples/passing/helper_method_example.rb +12 -0
  220. data/vendor/rspec/examples/passing/implicit_docstrings_example.rb +16 -0
  221. data/vendor/rspec/examples/passing/io_processor.rb +8 -0
  222. data/vendor/rspec/examples/passing/io_processor_spec.rb +20 -0
  223. data/vendor/rspec/examples/passing/mocking_example.rb +25 -0
  224. data/vendor/rspec/examples/passing/multi_threaded_example_group_runner.rb +26 -0
  225. data/vendor/rspec/examples/passing/nested_classes_example.rb +35 -0
  226. data/vendor/rspec/examples/passing/options_example.rb +29 -0
  227. data/vendor/rspec/examples/passing/options_formatter.rb +20 -0
  228. data/vendor/rspec/examples/passing/partial_mock_example.rb +27 -0
  229. data/vendor/rspec/examples/passing/pending_example.rb +18 -0
  230. data/vendor/rspec/examples/passing/predicate_example.rb +25 -0
  231. data/vendor/rspec/examples/passing/shared_example_group_example.rb +79 -0
  232. data/vendor/rspec/examples/passing/shared_stack_examples.rb +36 -0
  233. data/vendor/rspec/examples/passing/simple_matcher_example.rb +29 -0
  234. data/vendor/rspec/examples/passing/stack.rb +36 -0
  235. data/vendor/rspec/examples/passing/stack_spec.rb +63 -0
  236. data/vendor/rspec/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
  237. data/vendor/rspec/examples/passing/stubbing_example.rb +67 -0
  238. data/vendor/rspec/examples/passing/yielding_example.rb +31 -0
  239. data/vendor/rspec/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
  240. data/vendor/rspec/features-pending/cli/conditional_exclusion.feature +39 -0
  241. data/vendor/rspec/features-pending/heckle/heckle.feature +56 -0
  242. data/vendor/rspec/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  243. data/vendor/rspec/features/command_line/line_number_option.feature +56 -0
  244. data/vendor/rspec/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  245. data/vendor/rspec/features/example_groups/define_example_attribute.feature +41 -0
  246. data/vendor/rspec/features/example_groups/example_group_with_should_methods.feature +29 -0
  247. data/vendor/rspec/features/example_groups/implicit_docstrings.feature +59 -0
  248. data/vendor/rspec/features/example_groups/nested_groups.feature +32 -0
  249. data/vendor/rspec/features/expectations/customized_message.feature +54 -0
  250. data/vendor/rspec/features/expectations/expect_change.feature +65 -0
  251. data/vendor/rspec/features/expectations/expect_error.feature +44 -0
  252. data/vendor/rspec/features/extensions/custom_example_group.feature +19 -0
  253. data/vendor/rspec/features/formatters/custom_formatter.feature +30 -0
  254. data/vendor/rspec/features/interop/examples_and_tests_together.feature +84 -0
  255. data/vendor/rspec/features/interop/rspec_output.feature +25 -0
  256. data/vendor/rspec/features/interop/test_but_not_test_unit.feature +26 -0
  257. data/vendor/rspec/features/interop/test_case_with_should_methods.feature +46 -0
  258. data/vendor/rspec/features/load_paths/add_lib_to_load_path.feature +20 -0
  259. data/vendor/rspec/features/load_paths/add_spec_to_load_path.feature +20 -0
  260. data/vendor/rspec/features/matchers/define_diffable_matcher.feature +26 -0
  261. data/vendor/rspec/features/matchers/define_matcher.feature +179 -0
  262. data/vendor/rspec/features/matchers/define_matcher_outside_rspec.feature +38 -0
  263. data/vendor/rspec/features/matchers/define_matcher_with_fluent_interface.feature +27 -0
  264. data/vendor/rspec/features/matchers/define_wrapped_matcher.feature +29 -0
  265. data/vendor/rspec/features/matchers/match_unless_raises.feature +60 -0
  266. data/vendor/rspec/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
  267. data/vendor/rspec/features/mock_framework_integration/use_flexmock.feature +27 -0
  268. data/vendor/rspec/features/mock_framework_integration/use_mocha.feature +27 -0
  269. data/vendor/rspec/features/mock_framework_integration/use_rr.feature +27 -0
  270. data/vendor/rspec/features/mocks/block_local_expectations.feature +62 -0
  271. data/vendor/rspec/features/mocks/mix_stubs_and_mocks.feature +22 -0
  272. data/vendor/rspec/features/mocks/stub_implementation.feature +26 -0
  273. data/vendor/rspec/features/pending/pending_examples.feature +81 -0
  274. data/vendor/rspec/features/runner/specify_line_number.feature +32 -0
  275. data/vendor/rspec/features/spec_helper/spec_helper.feature +25 -0
  276. data/vendor/rspec/features/step_definitions/running_rspec_steps.rb +43 -0
  277. data/vendor/rspec/features/subject/explicit_subject.feature +31 -0
  278. data/vendor/rspec/features/subject/implicit_subject.feature +43 -0
  279. data/vendor/rspec/features/support/env.rb +82 -0
  280. data/vendor/rspec/features/support/matchers/smart_match.rb +12 -0
  281. data/vendor/rspec/geminstaller.yml +28 -0
  282. data/vendor/rspec/init.rb +9 -0
  283. data/vendor/rspec/lib/autotest/discover.rb +3 -0
  284. data/vendor/rspec/lib/autotest/rspec.rb +54 -0
  285. data/vendor/rspec/lib/spec.rb +8 -0
  286. data/vendor/rspec/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  287. data/vendor/rspec/lib/spec/adapters/mock_frameworks/mocha.rb +25 -0
  288. data/vendor/rspec/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  289. data/vendor/rspec/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  290. data/vendor/rspec/lib/spec/autorun.rb +3 -0
  291. data/vendor/rspec/lib/spec/deprecation.rb +40 -0
  292. data/vendor/rspec/lib/spec/dsl.rb +1 -0
  293. data/vendor/rspec/lib/spec/dsl/main.rb +92 -0
  294. data/vendor/rspec/lib/spec/example.rb +164 -0
  295. data/vendor/rspec/lib/spec/example/args_and_options.rb +27 -0
  296. data/vendor/rspec/lib/spec/example/before_and_after_hooks.rb +93 -0
  297. data/vendor/rspec/lib/spec/example/errors.rb +25 -0
  298. data/vendor/rspec/lib/spec/example/example_group.rb +10 -0
  299. data/vendor/rspec/lib/spec/example/example_group_factory.rb +82 -0
  300. data/vendor/rspec/lib/spec/example/example_group_hierarchy.rb +53 -0
  301. data/vendor/rspec/lib/spec/example/example_group_methods.rb +282 -0
  302. data/vendor/rspec/lib/spec/example/example_group_proxy.rb +61 -0
  303. data/vendor/rspec/lib/spec/example/example_matcher.rb +43 -0
  304. data/vendor/rspec/lib/spec/example/example_methods.rb +148 -0
  305. data/vendor/rspec/lib/spec/example/example_proxy.rb +41 -0
  306. data/vendor/rspec/lib/spec/example/module_reopening_fix.rb +43 -0
  307. data/vendor/rspec/lib/spec/example/pending.rb +18 -0
  308. data/vendor/rspec/lib/spec/example/predicate_matchers.rb +46 -0
  309. data/vendor/rspec/lib/spec/example/shared_example_group.rb +59 -0
  310. data/vendor/rspec/lib/spec/example/subject.rb +108 -0
  311. data/vendor/rspec/lib/spec/expectations.rb +35 -0
  312. data/vendor/rspec/lib/spec/expectations/errors.rb +12 -0
  313. data/vendor/rspec/lib/spec/expectations/extensions.rb +1 -0
  314. data/vendor/rspec/lib/spec/expectations/extensions/kernel.rb +52 -0
  315. data/vendor/rspec/lib/spec/expectations/fail_with.rb +45 -0
  316. data/vendor/rspec/lib/spec/expectations/handler.rb +50 -0
  317. data/vendor/rspec/lib/spec/extensions/instance_exec.rb +31 -0
  318. data/vendor/rspec/lib/spec/interop/test.rb +44 -0
  319. data/vendor/rspec/lib/spec/interop/test/unit/autorunner.rb +6 -0
  320. data/vendor/rspec/lib/spec/interop/test/unit/testcase.rb +56 -0
  321. data/vendor/rspec/lib/spec/interop/test/unit/testresult.rb +6 -0
  322. data/vendor/rspec/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
  323. data/vendor/rspec/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  324. data/vendor/rspec/lib/spec/matchers.rb +195 -0
  325. data/vendor/rspec/lib/spec/matchers/be.rb +211 -0
  326. data/vendor/rspec/lib/spec/matchers/be_close.rb +32 -0
  327. data/vendor/rspec/lib/spec/matchers/be_instance_of.rb +26 -0
  328. data/vendor/rspec/lib/spec/matchers/be_kind_of.rb +26 -0
  329. data/vendor/rspec/lib/spec/matchers/change.rb +151 -0
  330. data/vendor/rspec/lib/spec/matchers/compatibility.rb +14 -0
  331. data/vendor/rspec/lib/spec/matchers/dsl.rb +20 -0
  332. data/vendor/rspec/lib/spec/matchers/eql.rb +42 -0
  333. data/vendor/rspec/lib/spec/matchers/equal.rb +53 -0
  334. data/vendor/rspec/lib/spec/matchers/errors.rb +5 -0
  335. data/vendor/rspec/lib/spec/matchers/exist.rb +16 -0
  336. data/vendor/rspec/lib/spec/matchers/generated_descriptions.rb +36 -0
  337. data/vendor/rspec/lib/spec/matchers/has.rb +35 -0
  338. data/vendor/rspec/lib/spec/matchers/have.rb +152 -0
  339. data/vendor/rspec/lib/spec/matchers/include.rb +44 -0
  340. data/vendor/rspec/lib/spec/matchers/match.rb +21 -0
  341. data/vendor/rspec/lib/spec/matchers/match_array.rb +71 -0
  342. data/vendor/rspec/lib/spec/matchers/matcher.rb +102 -0
  343. data/vendor/rspec/lib/spec/matchers/method_missing.rb +9 -0
  344. data/vendor/rspec/lib/spec/matchers/operator_matcher.rb +78 -0
  345. data/vendor/rspec/lib/spec/matchers/pretty.rb +37 -0
  346. data/vendor/rspec/lib/spec/matchers/raise_error.rb +129 -0
  347. data/vendor/rspec/lib/spec/matchers/respond_to.rb +71 -0
  348. data/vendor/rspec/lib/spec/matchers/satisfy.rb +47 -0
  349. data/vendor/rspec/lib/spec/matchers/simple_matcher.rb +133 -0
  350. data/vendor/rspec/lib/spec/matchers/throw_symbol.rb +104 -0
  351. data/vendor/rspec/lib/spec/matchers/wrap_expectation.rb +55 -0
  352. data/vendor/rspec/lib/spec/mocks.rb +200 -0
  353. data/vendor/rspec/lib/spec/mocks/argument_expectation.rb +51 -0
  354. data/vendor/rspec/lib/spec/mocks/argument_matchers.rb +237 -0
  355. data/vendor/rspec/lib/spec/mocks/error_generator.rb +92 -0
  356. data/vendor/rspec/lib/spec/mocks/errors.rb +10 -0
  357. data/vendor/rspec/lib/spec/mocks/example_methods.rb +69 -0
  358. data/vendor/rspec/lib/spec/mocks/extensions.rb +1 -0
  359. data/vendor/rspec/lib/spec/mocks/extensions/object.rb +3 -0
  360. data/vendor/rspec/lib/spec/mocks/framework.rb +15 -0
  361. data/vendor/rspec/lib/spec/mocks/message_expectation.rb +343 -0
  362. data/vendor/rspec/lib/spec/mocks/methods.rb +89 -0
  363. data/vendor/rspec/lib/spec/mocks/mock.rb +71 -0
  364. data/vendor/rspec/lib/spec/mocks/order_group.rb +29 -0
  365. data/vendor/rspec/lib/spec/mocks/proxy.rb +245 -0
  366. data/vendor/rspec/lib/spec/mocks/space.rb +28 -0
  367. data/vendor/rspec/lib/spec/rake/spectask.rb +230 -0
  368. data/vendor/rspec/lib/spec/rake/verify_rcov.rb +52 -0
  369. data/vendor/rspec/lib/spec/ruby.rb +9 -0
  370. data/vendor/rspec/lib/spec/runner.rb +66 -0
  371. data/vendor/rspec/lib/spec/runner/backtrace_tweaker.rb +77 -0
  372. data/vendor/rspec/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  373. data/vendor/rspec/lib/spec/runner/command_line.rb +15 -0
  374. data/vendor/rspec/lib/spec/runner/configuration.rb +194 -0
  375. data/vendor/rspec/lib/spec/runner/differs/default.rb +93 -0
  376. data/vendor/rspec/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  377. data/vendor/rspec/lib/spec/runner/drb_command_line.rb +26 -0
  378. data/vendor/rspec/lib/spec/runner/example_group_runner.rb +59 -0
  379. data/vendor/rspec/lib/spec/runner/extensions/kernel.rb +9 -0
  380. data/vendor/rspec/lib/spec/runner/formatter/base_formatter.rb +139 -0
  381. data/vendor/rspec/lib/spec/runner/formatter/base_text_formatter.rb +142 -0
  382. data/vendor/rspec/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  383. data/vendor/rspec/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  384. data/vendor/rspec/lib/spec/runner/formatter/html_formatter.rb +338 -0
  385. data/vendor/rspec/lib/spec/runner/formatter/nested_text_formatter.rb +47 -0
  386. data/vendor/rspec/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  387. data/vendor/rspec/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  388. data/vendor/rspec/lib/spec/runner/formatter/progress_bar_formatter.rb +33 -0
  389. data/vendor/rspec/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  390. data/vendor/rspec/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  391. data/vendor/rspec/lib/spec/runner/formatter/specdoc_formatter.rb +33 -0
  392. data/vendor/rspec/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  393. data/vendor/rspec/lib/spec/runner/heckle_runner.rb +72 -0
  394. data/vendor/rspec/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  395. data/vendor/rspec/lib/spec/runner/line_number_query.rb +78 -0
  396. data/vendor/rspec/lib/spec/runner/option_parser.rb +223 -0
  397. data/vendor/rspec/lib/spec/runner/options.rb +400 -0
  398. data/vendor/rspec/lib/spec/runner/reporter.rb +171 -0
  399. data/vendor/rspec/lib/spec/stubs/cucumber.rb +5 -0
  400. data/vendor/rspec/lib/spec/test/unit.rb +10 -0
  401. data/vendor/rspec/lib/spec/version.rb +14 -0
  402. data/vendor/rspec/resources/helpers/cmdline.rb +8 -0
  403. data/vendor/rspec/resources/rake/examples.rake +7 -0
  404. data/vendor/rspec/resources/rake/examples_with_rcov.rake +9 -0
  405. data/vendor/rspec/resources/rake/failing_examples_with_html.rake +9 -0
  406. data/vendor/rspec/resources/rake/verify_rcov.rake +7 -0
  407. data/vendor/rspec/spec/README.jruby +15 -0
  408. data/vendor/rspec/spec/autotest/autotest_helper.rb +8 -0
  409. data/vendor/rspec/spec/autotest/autotest_matchers.rb +38 -0
  410. data/vendor/rspec/spec/autotest/discover_spec.rb +8 -0
  411. data/vendor/rspec/spec/autotest/failed_results_re_spec.rb +31 -0
  412. data/vendor/rspec/spec/autotest/rspec_spec.rb +126 -0
  413. data/vendor/rspec/spec/ruby_forker.rb +13 -0
  414. data/vendor/rspec/spec/spec.opts +6 -0
  415. data/vendor/rspec/spec/spec/dsl/main_spec.rb +95 -0
  416. data/vendor/rspec/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  417. data/vendor/rspec/spec/spec/example/example_group_factory_spec.rb +180 -0
  418. data/vendor/rspec/spec/spec/example/example_group_methods_spec.rb +759 -0
  419. data/vendor/rspec/spec/spec/example/example_group_proxy_spec.rb +107 -0
  420. data/vendor/rspec/spec/spec/example/example_group_spec.rb +643 -0
  421. data/vendor/rspec/spec/spec/example/example_matcher_spec.rb +86 -0
  422. data/vendor/rspec/spec/spec/example/example_methods_spec.rb +162 -0
  423. data/vendor/rspec/spec/spec/example/example_proxy_spec.rb +57 -0
  424. data/vendor/rspec/spec/spec/example/helper_method_spec.rb +24 -0
  425. data/vendor/rspec/spec/spec/example/nested_example_group_spec.rb +71 -0
  426. data/vendor/rspec/spec/spec/example/pending_module_spec.rb +58 -0
  427. data/vendor/rspec/spec/spec/example/predicate_matcher_spec.rb +41 -0
  428. data/vendor/rspec/spec/spec/example/shared_example_group_spec.rb +257 -0
  429. data/vendor/rspec/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  430. data/vendor/rspec/spec/spec/example/subject_spec.rb +103 -0
  431. data/vendor/rspec/spec/spec/expectations/differs/default_spec.rb +194 -0
  432. data/vendor/rspec/spec/spec/expectations/extensions/kernel_spec.rb +45 -0
  433. data/vendor/rspec/spec/spec/expectations/fail_with_spec.rb +96 -0
  434. data/vendor/rspec/spec/spec/expectations/handler_spec.rb +206 -0
  435. data/vendor/rspec/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
  436. data/vendor/rspec/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  437. data/vendor/rspec/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  438. data/vendor/rspec/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  439. data/vendor/rspec/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  440. data/vendor/rspec/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  441. data/vendor/rspec/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  442. data/vendor/rspec/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  443. data/vendor/rspec/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  444. data/vendor/rspec/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  445. data/vendor/rspec/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  446. data/vendor/rspec/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  447. data/vendor/rspec/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  448. data/vendor/rspec/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  449. data/vendor/rspec/spec/spec/matchers/be_close_spec.rb +50 -0
  450. data/vendor/rspec/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  451. data/vendor/rspec/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  452. data/vendor/rspec/spec/spec/matchers/be_spec.rb +419 -0
  453. data/vendor/rspec/spec/spec/matchers/change_spec.rb +349 -0
  454. data/vendor/rspec/spec/spec/matchers/compatibility_spec.rb +28 -0
  455. data/vendor/rspec/spec/spec/matchers/description_generation_spec.rb +160 -0
  456. data/vendor/rspec/spec/spec/matchers/dsl_spec.rb +34 -0
  457. data/vendor/rspec/spec/spec/matchers/eql_spec.rb +33 -0
  458. data/vendor/rspec/spec/spec/matchers/equal_spec.rb +57 -0
  459. data/vendor/rspec/spec/spec/matchers/exist_spec.rb +65 -0
  460. data/vendor/rspec/spec/spec/matchers/has_spec.rb +190 -0
  461. data/vendor/rspec/spec/spec/matchers/have_spec.rb +396 -0
  462. data/vendor/rspec/spec/spec/matchers/include_spec.rb +88 -0
  463. data/vendor/rspec/spec/spec/matchers/match_array_spec.rb +108 -0
  464. data/vendor/rspec/spec/spec/matchers/match_spec.rb +57 -0
  465. data/vendor/rspec/spec/spec/matchers/matcher_methods_spec.rb +63 -0
  466. data/vendor/rspec/spec/spec/matchers/matcher_spec.rb +273 -0
  467. data/vendor/rspec/spec/spec/matchers/matchers_spec.rb +2 -0
  468. data/vendor/rspec/spec/spec/matchers/operator_matcher_spec.rb +191 -0
  469. data/vendor/rspec/spec/spec/matchers/raise_error_spec.rb +333 -0
  470. data/vendor/rspec/spec/spec/matchers/respond_to_spec.rb +116 -0
  471. data/vendor/rspec/spec/spec/matchers/satisfy_spec.rb +36 -0
  472. data/vendor/rspec/spec/spec/matchers/simple_matcher_spec.rb +93 -0
  473. data/vendor/rspec/spec/spec/matchers/throw_symbol_spec.rb +96 -0
  474. data/vendor/rspec/spec/spec/mocks/and_yield_spec.rb +117 -0
  475. data/vendor/rspec/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
  476. data/vendor/rspec/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  477. data/vendor/rspec/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  478. data/vendor/rspec/spec/spec/mocks/at_least_spec.rb +97 -0
  479. data/vendor/rspec/spec/spec/mocks/at_most_spec.rb +93 -0
  480. data/vendor/rspec/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  481. data/vendor/rspec/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  482. data/vendor/rspec/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  483. data/vendor/rspec/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  484. data/vendor/rspec/spec/spec/mocks/bug_report_496_spec.rb +19 -0
  485. data/vendor/rspec/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  486. data/vendor/rspec/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  487. data/vendor/rspec/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  488. data/vendor/rspec/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  489. data/vendor/rspec/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  490. data/vendor/rspec/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  491. data/vendor/rspec/spec/spec/mocks/double_spec.rb +12 -0
  492. data/vendor/rspec/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  493. data/vendor/rspec/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  494. data/vendor/rspec/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  495. data/vendor/rspec/spec/spec/mocks/mock_ordering_spec.rb +94 -0
  496. data/vendor/rspec/spec/spec/mocks/mock_space_spec.rb +54 -0
  497. data/vendor/rspec/spec/spec/mocks/mock_spec.rb +594 -0
  498. data/vendor/rspec/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  499. data/vendor/rspec/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  500. data/vendor/rspec/spec/spec/mocks/null_object_mock_spec.rb +54 -0
  501. data/vendor/rspec/spec/spec/mocks/once_counts_spec.rb +53 -0
  502. data/vendor/rspec/spec/spec/mocks/options_hash_spec.rb +35 -0
  503. data/vendor/rspec/spec/spec/mocks/partial_mock_spec.rb +164 -0
  504. data/vendor/rspec/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  505. data/vendor/rspec/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  506. data/vendor/rspec/spec/spec/mocks/precise_counts_spec.rb +52 -0
  507. data/vendor/rspec/spec/spec/mocks/record_messages_spec.rb +26 -0
  508. data/vendor/rspec/spec/spec/mocks/stub_chain_spec.rb +42 -0
  509. data/vendor/rspec/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  510. data/vendor/rspec/spec/spec/mocks/stub_spec.rb +203 -0
  511. data/vendor/rspec/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  512. data/vendor/rspec/spec/spec/mocks/twice_counts_spec.rb +67 -0
  513. data/vendor/rspec/spec/spec/mocks/unstub_spec.rb +127 -0
  514. data/vendor/rspec/spec/spec/package/bin_spec_spec.rb +16 -0
  515. data/vendor/rspec/spec/spec/rake/spectask_spec.rb +150 -0
  516. data/vendor/rspec/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  517. data/vendor/rspec/spec/spec/runner/command_line_spec.rb +141 -0
  518. data/vendor/rspec/spec/spec/runner/configuration_spec.rb +320 -0
  519. data/vendor/rspec/spec/spec/runner/drb_command_line_spec.rb +107 -0
  520. data/vendor/rspec/spec/spec/runner/empty_file.txt +0 -0
  521. data/vendor/rspec/spec/spec/runner/example_group_runner_spec.rb +26 -0
  522. data/vendor/rspec/spec/spec/runner/examples.txt +2 -0
  523. data/vendor/rspec/spec/spec/runner/failed.txt +3 -0
  524. data/vendor/rspec/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  525. data/vendor/rspec/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  526. data/vendor/rspec/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  527. data/vendor/rspec/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  528. data/vendor/rspec/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  529. data/vendor/rspec/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  530. data/vendor/rspec/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  531. data/vendor/rspec/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  532. data/vendor/rspec/spec/spec/runner/formatter/html_formatter_spec.rb +118 -0
  533. data/vendor/rspec/spec/spec/runner/formatter/nested_text_formatter_spec.rb +305 -0
  534. data/vendor/rspec/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  535. data/vendor/rspec/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +149 -0
  536. data/vendor/rspec/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  537. data/vendor/rspec/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
  538. data/vendor/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  539. data/vendor/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  540. data/vendor/rspec/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  541. data/vendor/rspec/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  542. data/vendor/rspec/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  543. data/vendor/rspec/spec/spec/runner/heckle_runner_spec.rb +78 -0
  544. data/vendor/rspec/spec/spec/runner/heckler_spec.rb +20 -0
  545. data/vendor/rspec/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  546. data/vendor/rspec/spec/spec/runner/line_number_query_spec.rb +129 -0
  547. data/vendor/rspec/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +51 -0
  548. data/vendor/rspec/spec/spec/runner/option_parser_spec.rb +545 -0
  549. data/vendor/rspec/spec/spec/runner/options_spec.rb +547 -0
  550. data/vendor/rspec/spec/spec/runner/output_one_time_fixture.rb +7 -0
  551. data/vendor/rspec/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  552. data/vendor/rspec/spec/spec/runner/output_one_time_spec.rb +15 -0
  553. data/vendor/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +123 -0
  554. data/vendor/rspec/spec/spec/runner/reporter_spec.rb +244 -0
  555. data/vendor/rspec/spec/spec/runner/resources/a_bar.rb +0 -0
  556. data/vendor/rspec/spec/spec/runner/resources/a_foo.rb +0 -0
  557. data/vendor/rspec/spec/spec/runner/resources/a_spec.rb +1 -0
  558. data/vendor/rspec/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  559. data/vendor/rspec/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  560. data/vendor/rspec/spec/spec/runner/spec.opts +2 -0
  561. data/vendor/rspec/spec/spec/runner/spec_drb.opts +2 -0
  562. data/vendor/rspec/spec/spec/runner/spec_spaced.opts +2 -0
  563. data/vendor/rspec/spec/spec/runner_spec.rb +13 -0
  564. data/vendor/rspec/spec/spec_helper.rb +112 -0
  565. data/vendor/rspec/spec/support/macros.rb +29 -0
  566. data/vendor/rspec/spec/support/spec_classes.rb +133 -0
  567. metadata +639 -0
@@ -0,0 +1,78 @@
1
+ require 'spec_helper'
2
+ unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM} || Spec::Ruby.version.to_f == 1.9
3
+ require 'spec/runner/heckle_runner'
4
+
5
+ module Foo
6
+ class Bar
7
+ def one; end
8
+ def two; end
9
+ end
10
+
11
+ class Zap
12
+ def three; end
13
+ def four; end
14
+ end
15
+ end
16
+
17
+ describe "HeckleRunner" do
18
+ before(:each) do
19
+ @heckle = mock("heckle", :null_object => true)
20
+ @heckle_class = mock("heckle_class")
21
+ end
22
+
23
+ it "should heckle all methods in all classes in a module" do
24
+ @heckle_class.should_receive(:new).with("Foo::Bar", "one", Spec::Runner.options).and_return(@heckle)
25
+ @heckle_class.should_receive(:new).with("Foo::Bar", "two", Spec::Runner.options).and_return(@heckle)
26
+ @heckle_class.should_receive(:new).with("Foo::Zap", "three", Spec::Runner.options).and_return(@heckle)
27
+ @heckle_class.should_receive(:new).with("Foo::Zap", "four", Spec::Runner.options).and_return(@heckle)
28
+
29
+ heckle_runner = Spec::Runner::HeckleRunner.new("Foo", @heckle_class)
30
+ heckle_runner.heckle_with
31
+ end
32
+
33
+ it "should heckle all methods in a class" do
34
+ @heckle_class.should_receive(:new).with("Foo::Bar", "one", Spec::Runner.options).and_return(@heckle)
35
+ @heckle_class.should_receive(:new).with("Foo::Bar", "two", Spec::Runner.options).and_return(@heckle)
36
+
37
+ heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar", @heckle_class)
38
+ heckle_runner.heckle_with
39
+ end
40
+
41
+ it "should fail heckling when the class is not found" do
42
+ lambda do
43
+ heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bob", @heckle_class)
44
+ heckle_runner.heckle_with
45
+ end.should raise_error(StandardError, "Heckling failed - \"Foo::Bob\" is not a known class or module")
46
+ end
47
+
48
+ it "should heckle specific method in a class (with #)" do
49
+ @heckle_class.should_receive(:new).with("Foo::Bar", "two", Spec::Runner.options).and_return(@heckle)
50
+
51
+ heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar#two", @heckle_class)
52
+ heckle_runner.heckle_with
53
+ end
54
+
55
+ it "should heckle specific method in a class (with .)" do
56
+ @heckle_class.should_receive(:new).with("Foo::Bar", "two", Spec::Runner.options).and_return(@heckle)
57
+
58
+ heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar.two", @heckle_class)
59
+ heckle_runner.heckle_with
60
+ end
61
+ end
62
+
63
+ describe "Heckler" do
64
+ it "should say yes to tests_pass? if specs pass" do
65
+ options = mock("options", :null_object => true)
66
+ options.should_receive(:run_examples).and_return(true)
67
+ heckler = Spec::Runner::Heckler.new("Foo", nil, options)
68
+ heckler.tests_pass?.should be_true
69
+ end
70
+
71
+ it "should say no to tests_pass? if specs fail" do
72
+ options = mock("options", :null_object => true)
73
+ options.should_receive(:run_examples).and_return(false)
74
+ heckler = Spec::Runner::Heckler.new("Foo", nil, options)
75
+ heckler.tests_pass?.should be_false
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,20 @@
1
+ if Spec::Ruby.version.to_f < 1.9
2
+ require 'spec_helper'
3
+ unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
4
+ require 'spec/runner/heckle_runner'
5
+
6
+ describe "Heckler" do
7
+ it "should run examples on tests_pass?" do
8
+ sub = Class.new(Spec::Runner::Heckler) do
9
+ def initialize(klass_name, method_name, rspec_options)
10
+ @rspec_options = rspec_options
11
+ end
12
+ end
13
+ opts = mock('options')
14
+ opts.should_receive(:run_examples).and_return(true)
15
+ heckler = sub.new('klass','method',opts)
16
+ heckler.tests_pass?
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ describe "c" do
4
+
5
+ it "1" do
6
+ end
7
+
8
+ it "2" do
9
+ end
10
+
11
+ end
12
+
13
+ describe "d" do
14
+
15
+ it "3" do
16
+ end
17
+
18
+ it "4" do
19
+ end
20
+
21
+ end
22
+
23
+ class LineNumberQuerySubject
24
+ end
25
+
26
+ describe LineNumberQuerySubject do
27
+
28
+ it "5" do
29
+ end
30
+
31
+ end
32
+
33
+ describe LineNumberQuerySubject, "described" do
34
+
35
+ it "6" do
36
+ end
37
+
38
+ end
39
+
40
+ describe LineNumberQuerySubject, "described", :something => :something_else do
41
+
42
+ it "7" do
43
+ end
44
+
45
+ end
46
+
47
+ describe "described", :something => :something_else do
48
+
49
+ it "8" do
50
+ end
51
+
52
+ end
53
+
54
+ describe "e" do
55
+
56
+ it "9" do
57
+ end
58
+
59
+ it "10" do
60
+ end
61
+
62
+ describe "f" do
63
+ it "11" do
64
+ end
65
+
66
+ it "12" do
67
+ end
68
+ end
69
+
70
+ end
@@ -0,0 +1,129 @@
1
+ require 'spec_helper'
2
+
3
+ describe "LineNumberQuery" do
4
+ with_sandboxed_options do
5
+ attr_reader :parser, :file
6
+
7
+ before do
8
+ @parser = Spec::Runner::LineNumberQuery.new(options)
9
+ @file = "#{File.dirname(__FILE__)}/line_number_query/line_number_query_fixture.rb"
10
+ load file
11
+ end
12
+
13
+ it "should find spec name for 'specify' at same line" do
14
+ parser.spec_name_for(file, 5).should == "c 1"
15
+ end
16
+
17
+ it "should find spec name for 'specify' at end of spec line" do
18
+ parser.spec_name_for(file, 6).should == "c 1"
19
+ end
20
+
21
+ it "should find context for 'context' above all specs" do
22
+ parser.spec_name_for(file, 4).should == "c"
23
+ end
24
+
25
+ it "should find spec name for 'it' at same line" do
26
+ parser.spec_name_for(file, 15).should == "d 3"
27
+ end
28
+
29
+ it "should find spec name for 'it' at end of spec line" do
30
+ parser.spec_name_for(file, 16).should == "d 3"
31
+ end
32
+
33
+ it "should find context for 'describe' above all specs" do
34
+ parser.spec_name_for(file, 14).should == "d"
35
+ end
36
+
37
+ it "should find nearest example name between examples" do
38
+ parser.spec_name_for(file, 7).should == "c 1"
39
+ end
40
+
41
+ it "should find nothing outside a context" do
42
+ parser.spec_name_for(file, 2).should be_nil
43
+ end
44
+
45
+ it "should find context name for type" do
46
+ parser.spec_name_for(file, 26).should == "LineNumberQuerySubject"
47
+ end
48
+
49
+ it "should find context and spec name for type" do
50
+ parser.spec_name_for(file, 28).should == "LineNumberQuerySubject 5"
51
+ end
52
+
53
+ it "should find context and description for type" do
54
+ parser.spec_name_for(file, 33).should == "LineNumberQuerySubject described"
55
+ end
56
+
57
+ it "should find context and description and example for type" do
58
+ parser.spec_name_for(file, 36).should == "LineNumberQuerySubject described 6"
59
+ end
60
+
61
+ it "should find context and description for type with modifications" do
62
+ parser.spec_name_for(file, 40).should == "LineNumberQuerySubject described"
63
+ end
64
+
65
+ it "should find context and described and example for type with modifications" do
66
+ parser.spec_name_for(file, 43).should == "LineNumberQuerySubject described 7"
67
+ end
68
+
69
+ it "should find example group" do
70
+ parser.spec_name_for(file, 47).should == "described"
71
+ end
72
+
73
+ it "should find example" do
74
+ parser.spec_name_for(file, 50).should == "described 8"
75
+ end
76
+
77
+ it "should find nested example" do
78
+ parser.spec_name_for(file, 63).should == "e f 11"
79
+ end
80
+
81
+ it "should handle paths which contain colons" do
82
+ fixture =
83
+ { "c:/somepath/somefile.rb:999:in 'method'" => "c:/somepath/somefile.rb",
84
+ "./somepath/somefile:999" => "./somepath/somefile" }
85
+ fixture.each_pair do |input, expected|
86
+ parser.send(:parse_location, input ).should == [expected, 999]
87
+ end
88
+ end
89
+
90
+ it "should handle paths which contain colons and backslashes" do
91
+ fixture =
92
+ { "c:\\somepath\\somefile.rb:999:in 'method'" => "c:\\somepath\\somefile.rb",
93
+ ".\\somepath\\somefile:999" => ".\\somepath\\somefile" }
94
+ fixture.each_pair do |input, expected|
95
+ parser.send(:parse_location, input ).should == [expected, 999]
96
+ end
97
+ end
98
+
99
+ it "ignores example group base classes which have no location" do
100
+ options = stub('options', :example_groups => [
101
+ stub('example_group', :location => nil)
102
+ ])
103
+ parser = Spec::Runner::LineNumberQuery.new(options)
104
+ parser.spec_name_for('foo',37).should == nil
105
+ end
106
+
107
+ describe "#example_line_for" do
108
+ it "should find example declared on same line" do
109
+ parser.example_line_for(file, 5).should == 5
110
+ end
111
+
112
+ it "should find example declared on the line above, while still inside the example" do
113
+ parser.example_line_for(file, 6).should == 5
114
+ end
115
+
116
+ it "should find example declared from empty line below the example" do
117
+ parser.example_line_for(file, 7).should == 5
118
+ end
119
+
120
+ it "should find the group declared on the same line" do
121
+ parser.example_line_for(file, 3).should == 3
122
+ end
123
+
124
+ it "should find the group declared above the first example" do
125
+ parser.example_line_for(file, 4).should == 3
126
+ end
127
+ end
128
+ end
129
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ module Spec
4
+ module Runner
5
+ describe NoisyBacktraceTweaker do
6
+ before(:each) do
7
+ @error = RuntimeError.new
8
+ @tweaker = NoisyBacktraceTweaker.new
9
+ end
10
+
11
+ it "gracefully handles nil backtrace" do
12
+ lambda do
13
+ @tweaker.tweak_backtrace(@error)
14
+ end.should_not raise_error
15
+ end
16
+
17
+ it "cleans up double slashes" do
18
+ @error.set_backtrace(["/a//b/c//d.rb"])
19
+ @tweaker.tweak_backtrace(@error)
20
+ @error.backtrace.should include("/a/b/c/d.rb")
21
+ end
22
+
23
+ it "preserves lines in lib/spec" do
24
+ ["expectations", "mocks", "runner", "stubs"].each do |child|
25
+ @error.set_backtrace(["/lib/spec/#{child}/anything.rb"])
26
+ @tweaker.tweak_backtrace(@error)
27
+ @error.backtrace.should_not be_empty
28
+ end
29
+ end
30
+
31
+ it "preserves lines in spec/" do
32
+ @error.set_backtrace(["/lib/spec/expectations/anything.rb"])
33
+ @tweaker.tweak_backtrace(@error)
34
+ @error.backtrace.should_not be_empty
35
+ end
36
+
37
+ it "preserves lines in bin/spec" do
38
+ @error.set_backtrace(["bin/spec:"])
39
+ @tweaker.tweak_backtrace(@error)
40
+ @error.backtrace.should_not be_empty
41
+ end
42
+
43
+ it "ignores custom patterns" do
44
+ @tweaker.ignore_patterns(/custom_pattern/)
45
+ @error.set_backtrace(["custom_pattern"])
46
+ @tweaker.tweak_backtrace(@error)
47
+ @error.backtrace.should_not be_empty
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,545 @@
1
+ require 'spec_helper'
2
+ require 'spec/runner/resources/custom_example_group_runner'
3
+ require 'fakefs/safe'
4
+ require 'fakefs/spec_helpers'
5
+
6
+ describe "OptionParser" do
7
+ before(:each) do
8
+ @out = StringIO.new
9
+ @err = StringIO.new
10
+ @parser = Spec::Runner::OptionParser.new(@err, @out)
11
+ end
12
+
13
+ def parse(args)
14
+ @parser.parse(args)
15
+ @parser.options
16
+ end
17
+
18
+ # FIXME - this entire file should run w/ fakefs
19
+ describe "with fakefs" do
20
+ extend FakeFS::SpecHelpers
21
+ use_fakefs
22
+
23
+ it "should not use colour by default" do
24
+ options = parse([])
25
+ options.colour.should == false
26
+ end
27
+
28
+ it "should use progress bar formatter by default" do
29
+ options = parse([])
30
+ options.formatters[0].class.should equal(Spec::Runner::Formatter::ProgressBarFormatter)
31
+ end
32
+ end
33
+
34
+ it "should leave the submitted argv alone" do
35
+ args = ["--pattern", "foo"]
36
+ @parser.order!(args)
37
+ args.should == ["--pattern", "foo"]
38
+ end
39
+
40
+ it "should accept files to include" do
41
+ options = parse(["--pattern", "foo"])
42
+ options.filename_pattern.should == "foo"
43
+ end
44
+
45
+ it "should accept debugger option" do
46
+ options = parse(["--debugger"])
47
+ options.debug.should be_true
48
+ end
49
+
50
+ it "should accept -u form of debugger option" do
51
+ options = parse(["-u"])
52
+ options.debug.should be_true
53
+ end
54
+
55
+ it "should turn off the debugger option if drb is specified later" do
56
+ @parser.stub!(:parse_drb).with(no_args).and_return(true)
57
+ options = parse(["-u", "--drb"])
58
+ options.debug.should be_false
59
+ end
60
+
61
+ it "should turn off the debugger option if drb is specified first" do
62
+ @parser.stub!(:parse_drb).with(no_args).and_return(true)
63
+ options = parse(["--drb", "-u"])
64
+ options.debug.should be_false
65
+ end
66
+
67
+ it "should accept dry run option" do
68
+ options = parse(["--dry-run"])
69
+ options.dry_run.should be_true
70
+ end
71
+
72
+ it "should eval and use custom formatter when none of the builtins" do
73
+ options = parse(["--format", "Custom::Formatter"])
74
+ options.formatters[0].class.should be(Custom::Formatter)
75
+ end
76
+
77
+ it "should support formatters with relative and absolute paths, even on windows" do
78
+ options = parse([
79
+ "--format", "Custom::Formatter:C:\\foo\\bar",
80
+ "--format", "Custom::Formatter:foo/bar",
81
+ "--format", "Custom::Formatter:foo\\bar",
82
+ "--format", "Custom::Formatter:/foo/bar"
83
+ ])
84
+ options.formatters[0].where.should eql("C:\\foo\\bar")
85
+ options.formatters[1].where.should eql("foo/bar")
86
+ options.formatters[2].where.should eql("foo\\bar")
87
+ options.formatters[3].where.should eql("/foo/bar")
88
+ end
89
+
90
+ it "should not be verbose by default" do
91
+ options = parse([])
92
+ options.verbose.should be_nil
93
+ end
94
+
95
+ it "should print help to stdout if no args and spec_comand?" do
96
+ Spec::Runner::OptionParser.stub!(:spec_command?).and_return(true)
97
+ options = parse([])
98
+ @out.rewind
99
+ @out.read.should match(/Usage: spec \(FILE\(:LINE\)\?\|DIRECTORY\|GLOB\)\+ \[options\]/m)
100
+ end
101
+
102
+ it "should not print help to stdout if no args and NOT spec_command?" do
103
+ Spec::Runner::OptionParser.stub!(:spec_command?).and_return(false)
104
+ options = parse([])
105
+ @out.rewind
106
+ @out.read.should == ""
107
+ end
108
+
109
+ it "should print help to stdout" do
110
+ options = parse(["--help"])
111
+ @out.rewind
112
+ @out.read.should match(/Usage: spec \(FILE\(:LINE\)\?\|DIRECTORY\|GLOB\)\+ \[options\]/m)
113
+ end
114
+
115
+ it "should print instructions about how to require missing formatter" do
116
+ lambda do
117
+ options = parse(["--format", "Custom::MissingFormatter"])
118
+ options.formatters
119
+ end.should raise_error(NameError)
120
+ @err.string.should match(/Couldn't find formatter class Custom::MissingFormatter/n)
121
+ end
122
+
123
+ it "should print version to stdout" do
124
+ options = parse(["--version"])
125
+ @out.rewind
126
+ @out.read.should match(/rspec \d+\.\d+\.\d+/n)
127
+ end
128
+
129
+ it "should require file when require specified" do
130
+ lambda do
131
+ parse(["--require", "whatever"])
132
+ end.should raise_error(LoadError)
133
+ end
134
+
135
+ it "should support c option" do
136
+ options = parse(["-c"])
137
+ options.colour.should be_true
138
+ end
139
+
140
+ it "should support queens colour option" do
141
+ options = parse(["--colour"])
142
+ options.colour.should be_true
143
+ end
144
+
145
+ it "should support us color option" do
146
+ options = parse(["--color"])
147
+ options.colour.should be_true
148
+ end
149
+
150
+ it "should support single example with -e option" do
151
+ options = parse(["-e", "something or other"])
152
+ options.examples.should eql(["something or other"])
153
+ end
154
+
155
+ it "should support single example with -s option (will be removed when autotest supports -e)" do
156
+ options = parse(["-s", "something or other"])
157
+ options.examples.should eql(["something or other"])
158
+ end
159
+
160
+ it "should support single example with --example option" do
161
+ options = parse(["--example", "something or other"])
162
+ options.examples.should eql(["something or other"])
163
+ end
164
+
165
+ it "should read several example names from file if --example is given an existing file name" do
166
+ options = parse(["--example", File.dirname(__FILE__) + '/examples.txt'])
167
+ options.examples.should eql([
168
+ "Sir, if you were my husband, I would poison your drink.",
169
+ "Madam, if you were my wife, I would drink it."])
170
+ end
171
+
172
+ it "should read no examples if given an empty file" do
173
+ options = parse(["--example", File.dirname(__FILE__) + '/empty_file.txt'])
174
+ options.examples.should eql([])
175
+ end
176
+
177
+ it "should use html formatter when format is h" do
178
+ options = parse(["--format", "h"])
179
+ options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
180
+ end
181
+
182
+ it "should use html formatter when format is html" do
183
+ options = parse(["--format", "html"])
184
+ options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
185
+ end
186
+
187
+ it "should use silent formatter when format is s" do
188
+ options = parse(["--format", "l"])
189
+ options.formatters[0].class.should equal(Spec::Runner::Formatter::SilentFormatter)
190
+ end
191
+
192
+ it "should use silent formatter when format is silent" do
193
+ options = parse(["--format", "silent"])
194
+ options.formatters[0].class.should equal(Spec::Runner::Formatter::SilentFormatter)
195
+ end
196
+
197
+ it "should use html formatter with explicit output when format is html:test.html" do
198
+ FileUtils.rm 'test.html' if File.exist?('test.html')
199
+ options = parse(["--format", "html:test.html"])
200
+ options.formatters # creates the file
201
+ File.should exist('test.html')
202
+ options.formatters[0].class.should equal(Spec::Runner::Formatter::HtmlFormatter)
203
+ options.formatters[0].close
204
+ FileUtils.rm 'test.html'
205
+ end
206
+
207
+ it "should use noisy backtrace tweaker with b option" do
208
+ options = parse(["-b"])
209
+ options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
210
+ end
211
+
212
+ it "should use noisy backtrace tweaker with backtrace option" do
213
+ options = parse(["--backtrace"])
214
+ options.backtrace_tweaker.should be_instance_of(Spec::Runner::NoisyBacktraceTweaker)
215
+ end
216
+
217
+ it "should use quiet backtrace tweaker by default" do
218
+ options = parse([])
219
+ options.backtrace_tweaker.should be_instance_of(Spec::Runner::QuietBacktraceTweaker)
220
+ end
221
+
222
+ it "should use specdoc formatter when format is s" do
223
+ options = parse(["--format", "s"])
224
+ options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
225
+ end
226
+
227
+ it "should use specdoc formatter when format is specdoc" do
228
+ options = parse(["--format", "specdoc"])
229
+ options.formatters[0].class.should equal(Spec::Runner::Formatter::SpecdocFormatter)
230
+ end
231
+
232
+ it "should use nested text formatter when format is s" do
233
+ options = parse(["--format", "n"])
234
+ options.formatters[0].class.should equal(Spec::Runner::Formatter::NestedTextFormatter)
235
+ end
236
+
237
+ it "should use nested text formatter when format is nested" do
238
+ options = parse(["--format", "nested"])
239
+ options.formatters[0].class.should equal(Spec::Runner::Formatter::NestedTextFormatter)
240
+ end
241
+
242
+ it "should support diff option when format is not specified" do
243
+ options = parse(["--diff"])
244
+ options.diff_format.should == :unified
245
+ end
246
+
247
+ it "should use unified diff format option when format is unified" do
248
+ options = parse(["--diff", "unified"])
249
+ options.diff_format.should == :unified
250
+ options.differ_class.should equal(Spec::Expectations::Differs::Default)
251
+ end
252
+
253
+ it "should use context diff format option when format is context" do
254
+ options = parse(["--diff", "context"])
255
+ options.diff_format.should == :context
256
+ options.differ_class.should == Spec::Expectations::Differs::Default
257
+ end
258
+
259
+ it "should use custom diff format option when format is a custom format" do
260
+ Spec::Expectations.differ.should_not be_instance_of(Custom::Differ)
261
+
262
+ options = parse(["--diff", "Custom::Differ"])
263
+ options.parse_diff "Custom::Differ"
264
+ options.diff_format.should == :custom
265
+ options.differ_class.should == Custom::Differ
266
+ Spec::Expectations.differ.should be_instance_of(Custom::Differ)
267
+ end
268
+
269
+ it "should print instructions about how to fix missing differ" do
270
+ lambda { parse(["--diff", "Custom::MissingFormatter"]) }.should raise_error(NameError)
271
+ @err.string.should match(/Couldn't find differ class Custom::MissingFormatter/n)
272
+ end
273
+
274
+ describe "when attempting a focussed spec" do
275
+ attr_reader :file, :dir
276
+ before(:each) do
277
+ @original_rspec_options = Spec::Runner.options
278
+ @file = "#{File.dirname(__FILE__)}/line_number_query/line_number_query_fixture.rb"
279
+ @dir = File.dirname(file)
280
+ end
281
+
282
+ after(:each) do
283
+ Spec::Runner.use @original_rspec_options
284
+ end
285
+
286
+ def parse(args)
287
+ options = super
288
+ Spec::Runner.use options
289
+ options.filename_pattern = "*_fixture.rb"
290
+ options
291
+ end
292
+
293
+ describe 'with the --line flag' do
294
+ it "should correctly identify the spec" do
295
+ options = parse([file, "--line", "13"])
296
+ options.line_number.should == 13
297
+ options.examples.should be_empty
298
+ options.run_examples
299
+ options.examples.should eql(["d"])
300
+ end
301
+
302
+ it "should fail with error message if specified file is a dir" do
303
+ options = parse([dir, "--line", "169"])
304
+ options.line_number.should == 169
305
+ options.run_examples
306
+ @err.string.should match(/You must specify one file, not a directory when providing a line number/n)
307
+ end
308
+
309
+
310
+ it "should fail with error message if file does not exist" do
311
+ options = parse(["some file", "--line", "169"])
312
+ proc do
313
+ options.run_examples
314
+ end.should raise_error
315
+ end
316
+
317
+ it "should fail with error message if more than one files are specified" do
318
+ options = parse([file, file, "--line", "169"])
319
+ options.run_examples
320
+ @err.string.should match(/Only one file can be specified when providing a line number/n)
321
+ end
322
+
323
+ it "should fail with error message if using simultaneously with --example" do
324
+ options = parse([file, "--example", "some example", "--line", "169"])
325
+ options.run_examples
326
+ @err.string.should match(/You cannot use --example and specify a line number/n)
327
+ end
328
+ end
329
+
330
+ describe 'with the colon syntax (filename:LINE_NUMBER)' do
331
+
332
+ it "should strip the line number from the file name" do
333
+ options = parse(["#{file}:13"])
334
+ options.files.should include(file)
335
+ end
336
+
337
+ it "should correctly identify the spec" do
338
+ options = parse(["#{file}:13"])
339
+ options.line_number.should == 13
340
+ options.examples.should be_empty
341
+ options.run_examples
342
+ options.examples.should eql(["d"])
343
+ end
344
+
345
+ it "should fail with error message if specified file is a dir" do
346
+ options = parse(["#{dir}:169"])
347
+ options.line_number.should == 169
348
+ options.run_examples
349
+ @err.string.should match(/You must specify one file, not a directory when providing a line number/n)
350
+ end
351
+
352
+
353
+ it "should fail with error message if file does not exist" do
354
+ options = parse(["some file:169"])
355
+ proc do
356
+ options.run_examples
357
+ end.should raise_error
358
+ end
359
+
360
+ it "should fail with error message if more than one files are specified" do
361
+ options = parse([file, "#{file}:169"])
362
+ options.run_examples
363
+ @err.string.should match(/Only one file can be specified when providing a line number/n)
364
+ end
365
+
366
+ it "should fail with error message if using simultaneously with --example" do
367
+ options = parse(["#{file}:169", "--example", "some example"])
368
+ options.run_examples
369
+ @err.string.should match(/You cannot use --example and specify a line number/n)
370
+ end
371
+ end
372
+
373
+ end
374
+
375
+ if [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
376
+ it "should barf when --heckle is specified (and platform is windows)" do
377
+ lambda do
378
+ options = parse(["--heckle", "Spec"])
379
+ end.should raise_error(StandardError, /Heckle is not supported/)
380
+ end
381
+ elsif Spec::Ruby.version.to_f == 1.9
382
+ it "should barf when --heckle is specified (and platform is Ruby 1.9)" do
383
+ lambda do
384
+ options = parse(["--heckle", "Spec"])
385
+ end.should raise_error(StandardError, /Heckle is not supported/)
386
+ end
387
+ else
388
+ it "should heckle when --heckle is specified (and platform is not windows)" do
389
+ options = parse(["--heckle", "Spec"])
390
+ options.heckle_runner.should be_instance_of(Spec::Runner::HeckleRunner)
391
+ end
392
+ end
393
+
394
+ it "should read options from file when --options is specified" do
395
+ options = parse(["--options", File.dirname(__FILE__) + "/spec.opts"])
396
+ options.diff_format.should_not be_nil
397
+ options.colour.should be_true
398
+ end
399
+
400
+ it "should default the formatter to ProgressBarFormatter when using options file" do
401
+ options = parse(["--options", File.dirname(__FILE__) + "/spec.opts"])
402
+ options.formatters.first.should be_instance_of(::Spec::Runner::Formatter::ProgressBarFormatter)
403
+ end
404
+
405
+ it "should run parse drb after parsing options" do
406
+ @parser.should_receive(:parse_drb).with(no_args).and_return(true)
407
+ options = parse(["--options", File.dirname(__FILE__) + "/spec_drb.opts"])
408
+ end
409
+
410
+ it "should send all the arguments other than --drb back to the parser after parsing options" do
411
+ Spec::Runner::DrbCommandLine.should_receive(:run).and_return do |options|
412
+ options.argv.should == ["example_file.rb", "--colour"]
413
+ end
414
+ options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
415
+ end
416
+
417
+ it "runs specs locally if no drb is running when --drb is specified" do
418
+ Spec::Runner::DrbCommandLine.should_receive(:run).and_return(false)
419
+ options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
420
+ options.__send__(:examples_should_be_run?).should be_true
421
+ end
422
+
423
+ it "says its running specs locally if no drb is running when --drb is specified" do
424
+ Spec::Runner::DrbCommandLine.should_receive(:run).and_return(false)
425
+ options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
426
+ options.error_stream.rewind
427
+ options.error_stream.string.should =~ /Running specs locally/
428
+ end
429
+
430
+ it "does not run specs locally if drb is running when --drb is specified" do
431
+ Spec::Runner::DrbCommandLine.should_receive(:run).and_return(true)
432
+ options = parse(["example_file.rb", "--options", File.dirname(__FILE__) + "/spec_drb.opts"])
433
+ options.__send__(:examples_should_be_run?).should be_false
434
+ end
435
+
436
+ it "should read spaced and multi-line options from file when --options is specified" do
437
+ options = parse(["--options", File.dirname(__FILE__) + "/spec_spaced.opts"])
438
+ options.diff_format.should_not be_nil
439
+ options.colour.should be_true
440
+ options.formatters.first.should be_instance_of(::Spec::Runner::Formatter::SpecdocFormatter)
441
+ end
442
+
443
+ it "should save config to file when --generate-options is specified" do
444
+ FileUtils.rm 'test.spec.opts' if File.exist?('test.spec.opts')
445
+ options = parse(["--colour", "--generate-options", "test.spec.opts", "--diff"])
446
+ IO.read('test.spec.opts').should == "--colour\n--diff\n"
447
+ FileUtils.rm 'test.spec.opts'
448
+ end
449
+
450
+ it "should save config to file when -G is specified" do
451
+ FileUtils.rm 'test.spec.opts' if File.exist?('test.spec.opts')
452
+ options = parse(["--colour", "-G", "test.spec.opts", "--diff"])
453
+ IO.read('test.spec.opts').should == "--colour\n--diff\n"
454
+ FileUtils.rm 'test.spec.opts'
455
+ end
456
+
457
+ it "when --drb is specified, calls DrbCommandLine all of the other ARGV arguments" do
458
+ options = Spec::Runner::OptionParser.parse([
459
+ "some/spec.rb", "--diff", "--colour"
460
+ ], @err, @out)
461
+ Spec::Runner::DrbCommandLine.should_receive(:run).and_return do |options|
462
+ options.argv.should == ["some/spec.rb", "--diff", "--colour"]
463
+ end
464
+ parse(["some/spec.rb", "--diff", "--drb", "--colour"])
465
+ end
466
+
467
+ it "should reverse spec order when --reverse is specified" do
468
+ options = parse(["some/spec.rb", "--reverse"])
469
+ end
470
+
471
+ it "should set an mtime comparator when --loadby mtime" do
472
+ options = parse(["--loadby", 'mtime'])
473
+ runner = Spec::Runner::ExampleGroupRunner.new(options)
474
+ Spec::Runner::ExampleGroupRunner.should_receive(:new).
475
+ with(options).
476
+ and_return(runner)
477
+ runner.should_receive(:load_files).with(["most_recent_spec.rb", "command_line_spec.rb"])
478
+
479
+ Dir.chdir(File.dirname(__FILE__)) do
480
+ options.files << 'command_line_spec.rb'
481
+ options.files << 'most_recent_spec.rb'
482
+ FileUtils.touch "most_recent_spec.rb"
483
+ options.run_examples
484
+ FileUtils.rm "most_recent_spec.rb"
485
+ end
486
+ end
487
+
488
+ it "should use the standard runner by default" do
489
+ runner = ::Spec::Runner::ExampleGroupRunner.new(@parser.options)
490
+ ::Spec::Runner::ExampleGroupRunner.should_receive(:new).
491
+ with(@parser.options).
492
+ and_return(runner)
493
+ options = parse([])
494
+ options.run_examples
495
+ end
496
+
497
+ it "should use a custom runner when given" do
498
+ runner = Custom::ExampleGroupRunner.new(@parser.options, nil)
499
+ Custom::ExampleGroupRunner.should_receive(:new).
500
+ with(@parser.options, nil).
501
+ and_return(runner)
502
+ options = parse(["--runner", "Custom::ExampleGroupRunner"])
503
+ options.run_examples
504
+ end
505
+
506
+ it "should use a custom runner with extra options" do
507
+ runner = Custom::ExampleGroupRunner.new(@parser.options, 'something')
508
+ Custom::ExampleGroupRunner.should_receive(:new).
509
+ with(@parser.options, 'something').
510
+ and_return(runner)
511
+ options = parse(["--runner", "Custom::ExampleGroupRunner:something"])
512
+ options.run_examples
513
+ end
514
+
515
+ it "sets options.autospec to true with --autospec" do
516
+ options = parse(["--autospec"])
517
+ options.autospec.should be(true)
518
+ end
519
+
520
+ describe "implicitly loading spec/spec.opts" do
521
+ extend FakeFS::SpecHelpers
522
+ use_fakefs
523
+ it "uses spec/spec.opts if present" do
524
+ File.open('spec/spec.opts', 'w') { |f| f.write "--colour" }
525
+ options = parse(['ignore.rb'])
526
+ options.colour.should be(true)
527
+ end
528
+
529
+ it "does not try to load spec/spec.opts if not present" do
530
+ FileUtils.rm 'spec/spec.opts'
531
+ options = parse(['ignore.rb'])
532
+ options.colour.should be(false)
533
+ end
534
+
535
+ it "uses specified opts if supplied" do
536
+ options = nil
537
+ File.open("spec/spec.opts",'w') { |f| f.write "" }
538
+ File.open("spec/alternate.opts",'w') { |f| f.write "--colour" }
539
+ options = parse(['-O','spec/alternate.opts'])
540
+ options.colour.should be(true)
541
+ end
542
+ end
543
+
544
+
545
+ end