middleman-core 3.1.0.rc.2 → 3.1.0.rc.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. checksums.yaml +4 -4
  2. data/.simplecov +2 -1
  3. data/features/capture_html.feature +18 -0
  4. data/features/content_for.feature +3 -3
  5. data/features/v4_extension_callbacks.feature +8 -0
  6. data/fixtures/capture-html-app/config.rb +7 -0
  7. data/fixtures/capture-html-app/source/capture_html_erb.html.erb +5 -0
  8. data/fixtures/capture-html-app/source/capture_html_haml.html.haml +4 -0
  9. data/fixtures/capture-html-app/source/capture_html_slim.html.slim +4 -0
  10. data/fixtures/capture-html-app/source/layouts/capture_html.erb +4 -0
  11. data/fixtures/content-for-app/source/content_for_erb.html.erb +1 -1
  12. data/fixtures/content-for-app/source/content_for_haml.html.haml +1 -1
  13. data/fixtures/content-for-app/source/content_for_slim.html.slim +2 -1
  14. data/fixtures/v4-extension-callbacks/config.rb +26 -0
  15. data/fixtures/v4-extension-callbacks/source/index.html.erb +2 -0
  16. data/lib/middleman-core/core_extensions/extensions.rb +6 -1
  17. data/lib/middleman-core/core_extensions/file_watcher.rb +1 -0
  18. data/lib/middleman-core/core_extensions/rendering.rb +1 -2
  19. data/lib/middleman-core/core_extensions/request.rb +2 -2
  20. data/lib/middleman-core/extensions.rb +21 -0
  21. data/lib/middleman-core/meta_pages/sitemap_resource.rb +4 -1
  22. data/lib/middleman-core/version.rb +1 -1
  23. data/lib/middleman-more/core_extensions/default_helpers.rb +17 -3
  24. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/.document +0 -0
  25. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/.gitignore +0 -0
  26. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/.yardopts +0 -0
  27. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/LICENSE.txt +0 -0
  28. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/README.rdoc +0 -0
  29. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/Rakefile +0 -0
  30. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/bin/padrino +0 -0
  31. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core.rb +58 -4
  32. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application.rb +40 -16
  33. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/flash.rb +229 -0
  34. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application/rendering.rb +39 -11
  35. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering/extensions/erubis.rb +55 -0
  36. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering/extensions/haml.rb +26 -0
  37. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering/extensions/slim.rb +14 -0
  38. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application/routing.rb +133 -37
  39. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application/showexceptions.rb +0 -0
  40. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/caller.rb +0 -0
  41. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/adapter.rb +0 -0
  42. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/base.rb +41 -38
  43. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/console.rb +0 -0
  44. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/cli/rake.rb +47 -0
  45. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/rake_tasks.rb +9 -14
  46. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/command.rb +0 -0
  47. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/images/404.png +0 -0
  48. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/images/500.png +0 -0
  49. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/loader.rb +23 -9
  50. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/cs.yml +0 -0
  51. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/da.yml +0 -0
  52. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/de.yml +6 -6
  53. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/en.yml +0 -0
  54. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/es.yml +0 -0
  55. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/fr.yml +1 -1
  56. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/hu.yml +0 -0
  57. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/it.yml +0 -0
  58. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/ja.yml +0 -0
  59. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/lv.yml +0 -0
  60. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/nl.yml +0 -0
  61. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/no.yml +0 -0
  62. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/pl.yml +0 -0
  63. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/pt_br.yml +0 -0
  64. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/ro.yml +0 -0
  65. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/ru.yml +1 -1
  66. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/sv.yml +0 -0
  67. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/tr.yml +0 -0
  68. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/uk.yml +0 -0
  69. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/zh_cn.yml +11 -11
  70. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/zh_tw.yml +0 -0
  71. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/logger.rb +48 -32
  72. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/module.rb +58 -0
  73. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/mounter.rb +15 -5
  74. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/reloader.rb +139 -52
  75. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/router.rb +0 -0
  76. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/server.rb +5 -5
  77. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/support_lite.rb +59 -6
  78. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/tasks.rb +0 -0
  79. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/version.rb +1 -1
  80. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/padrino-core.gemspec +10 -5
  81. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/Gemfile +4 -0
  82. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/app/app.rb +3 -0
  83. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/app_gem.gemspec +17 -0
  84. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/lib/app_gem.rb +7 -0
  85. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/lib/app_gem/version.rb +3 -0
  86. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/.components +0 -0
  87. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/.gitignore +0 -0
  88. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/complex.rb +0 -0
  89. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/simple.rb +0 -0
  90. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/a.rb +0 -0
  91. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/b.rb +0 -0
  92. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/c.rb +0 -0
  93. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/circular/e.rb +0 -0
  94. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/circular/f.rb +0 -0
  95. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/circular/g.rb +0 -0
  96. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/d.rb +0 -0
  97. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/helper.rb +0 -0
  98. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/mini_shoulda.rb +2 -2
  99. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_application.rb +38 -21
  100. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_core.rb +0 -0
  101. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/test_csrf_protection.rb +80 -0
  102. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_dependencies.rb +0 -0
  103. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_filters.rb +70 -0
  104. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/test_flash.rb +168 -0
  105. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_locale.rb +0 -0
  106. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_logger.rb +27 -0
  107. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_mounter.rb +24 -2
  108. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_reloader_complex.rb +0 -0
  109. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_reloader_simple.rb +4 -4
  110. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_rendering.rb +75 -4
  111. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_restful_routing.rb +0 -0
  112. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_router.rb +0 -0
  113. data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_routing.rb +209 -35
  114. data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/test_support_lite.rb +56 -0
  115. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/.document +0 -0
  116. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/.gitignore +0 -0
  117. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/.yardopts +0 -0
  118. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/LICENSE.txt +0 -0
  119. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/README.rdoc +0 -0
  120. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/Rakefile +0 -0
  121. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers.rb +2 -1
  122. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/asset_tag_helpers.rb +58 -66
  123. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/breadcrumb_helpers.rb +171 -0
  124. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/form_builder/abstract_form_builder.rb +84 -26
  125. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/form_builder/standard_form_builder.rb +0 -0
  126. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/form_helpers.rb +94 -19
  127. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/format_helpers.rb +9 -5
  128. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/cs.yml +0 -0
  129. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/da.yml +0 -0
  130. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/de.yml +0 -0
  131. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/en.yml +0 -0
  132. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/es.yml +0 -0
  133. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/fr.yml +12 -12
  134. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/hu.yml +0 -0
  135. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/it.yml +0 -0
  136. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/ja.yml +0 -0
  137. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/lv.yml +0 -0
  138. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/nl.yml +0 -0
  139. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/no.yml +0 -0
  140. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/pl.yml +0 -0
  141. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/pt_br.yml +2 -2
  142. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/ro.yml +0 -0
  143. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/ru.yml +0 -0
  144. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/sv.yml +0 -0
  145. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/tr.yml +0 -0
  146. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/uk.yml +0 -0
  147. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/zh_cn.yml +13 -14
  148. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/zh_tw.yml +0 -0
  149. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/number_helpers.rb +0 -0
  150. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers.rb +45 -5
  151. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/abstract_handler.rb +0 -0
  152. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/erb_handler.rb +3 -3
  153. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/haml_handler.rb +0 -0
  154. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/slim_handler.rb +6 -7
  155. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/render_helpers.rb +2 -2
  156. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/tag_helpers.rb +34 -6
  157. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/translation_helpers.rb +0 -0
  158. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/padrino-helpers.gemspec +0 -0
  159. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/app.rb +13 -6
  160. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/capture_concat.erb +2 -2
  161. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/capture_concat.haml +2 -2
  162. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/capture_concat.slim +4 -5
  163. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_for.erb +0 -0
  164. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_for.haml +0 -0
  165. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_for.slim +4 -4
  166. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_tag.erb +0 -0
  167. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_tag.haml +0 -0
  168. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/content_tag.slim +9 -0
  169. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/current_engine.erb +0 -0
  170. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/current_engine.haml +1 -1
  171. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/current_engine.slim +0 -0
  172. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/fields_for.erb +0 -0
  173. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/fields_for.haml +0 -0
  174. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/fields_for.slim +15 -0
  175. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_for.erb +0 -0
  176. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_for.haml +0 -0
  177. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/form_for.slim +59 -0
  178. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_tag.erb +0 -0
  179. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_tag.haml +0 -0
  180. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/form_tag.slim +70 -0
  181. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/link_to.erb +0 -0
  182. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/link_to.haml +0 -0
  183. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/link_to.slim +4 -0
  184. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/mail_to.erb +0 -0
  185. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/mail_to.haml +0 -0
  186. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/mail_to.slim +3 -0
  187. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/meta_tag.erb +0 -0
  188. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/meta_tag.haml +0 -0
  189. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/meta_tag.slim +3 -0
  190. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/partials/_erb.erb +0 -0
  191. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/partials/_haml.haml +0 -0
  192. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/partials/_slim.slim +1 -0
  193. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/simple_partial.erb +0 -0
  194. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/simple_partial.haml +0 -0
  195. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/simple_partial.slim +1 -0
  196. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/app.rb +7 -0
  197. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engine.haml +0 -0
  198. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engines/_erb.erb +0 -0
  199. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engines/_haml.haml +0 -0
  200. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engines/_slim.slim +0 -0
  201. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/render_app/views/double_capture_erb.erb +3 -0
  202. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/render_app/views/double_capture_haml.haml +2 -0
  203. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/render_app/views/double_capture_slim.slim +2 -0
  204. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/erb/test.erb +0 -0
  205. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/explicit_engine.haml +0 -0
  206. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/haml/test.haml +0 -0
  207. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/template/_user.haml +0 -0
  208. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/template/haml_template.haml +0 -0
  209. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/template/some_template.haml +0 -0
  210. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/helper.rb +1 -0
  211. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_asset_tag_helpers.rb +24 -5
  212. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_form_builder.rb +41 -1
  213. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_form_helpers.rb +36 -0
  214. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_format_helpers.rb +14 -0
  215. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_locale.rb +0 -0
  216. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_number_helpers.rb +0 -0
  217. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_output_helpers.rb +5 -3
  218. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_render_helpers.rb +18 -0
  219. data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_tag_helpers.rb +11 -0
  220. data/middleman-core.gemspec +1 -1
  221. metadata +218 -184
  222. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/cli/rake.rb +0 -25
  223. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/content_tag.slim +0 -9
  224. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/fields_for.slim +0 -15
  225. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_for.slim +0 -59
  226. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_tag.slim +0 -70
  227. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/link_to.slim +0 -4
  228. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/mail_to.slim +0 -3
  229. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/meta_tag.slim +0 -3
  230. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/partials/_slim.slim +0 -1
  231. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/simple_partial.slim +0 -1
  232. data/spec/middleman-core/sitemap_spec.rb +0 -0
@@ -152,3 +152,30 @@ describe "alternate logger: stdlib logger" do
152
152
  assert_match /\e\[1m200\e\[0m OK/, @log.string
153
153
  end
154
154
  end
155
+
156
+ describe "options :colorize_logging" do
157
+ def access_to_mock_app
158
+ mock_app do
159
+ enable :logging
160
+ get("/"){ "Foo" }
161
+ end
162
+ get "/"
163
+ end
164
+ context 'default' do
165
+ should 'use colorize logging' do
166
+ Padrino::Logger.setup!
167
+
168
+ access_to_mock_app
169
+ assert_match /\e\[1m200\e\[0m OK/, Padrino.logger.log.string
170
+ end
171
+ end
172
+ context 'set value is false' do
173
+ should 'not use colorize logging' do
174
+ Padrino::Logger::Config[:test][:colorize_logging] = false
175
+ Padrino::Logger.setup!
176
+
177
+ access_to_mock_app
178
+ assert_match /200 OK/, Padrino.logger.log.string
179
+ end
180
+ end
181
+ end
@@ -113,11 +113,13 @@ describe "Mounter" do
113
113
  class ::OneApp < Padrino::Application
114
114
  get("/test") { "test" }
115
115
  get(:index, :provides => [:js, :json]) { "index" }
116
+ get(%r{/foo|/baz}) { "regexp" }
116
117
  controllers :posts do
117
118
  get(:index) { "index" }
118
119
  get(:new, :provides => :js) { "new" }
119
120
  get(:show, :provides => [:js, :html], :with => :id) { "show" }
120
121
  post(:create, :provides => :js, :with => :id) { "create" }
122
+ get(:regexp, :map => %r{/foo|/baz}) { "regexp" }
121
123
  end
122
124
  end
123
125
  class ::TwoApp < Padrino::Application
@@ -133,9 +135,9 @@ describe "Mounter" do
133
135
  Padrino.mount("one_app").to("/")
134
136
  Padrino.mount("two_app").to("/two_app")
135
137
 
136
- assert_equal 11, Padrino.mounted_apps[0].routes.size
138
+ assert_equal 15, Padrino.mounted_apps[0].routes.size
137
139
  assert_equal 7, Padrino.mounted_apps[1].routes.size
138
- assert_equal 5, Padrino.mounted_apps[0].named_routes.size
140
+ assert_equal 6, Padrino.mounted_apps[0].named_routes.size
139
141
  assert_equal 5, Padrino.mounted_apps[1].named_routes.size
140
142
 
141
143
  first_route = Padrino.mounted_apps[0].named_routes[3]
@@ -148,6 +150,10 @@ describe "Mounter" do
148
150
  assert_equal "(:users, :create)", another_route.name
149
151
  assert_equal "POST", another_route.verb
150
152
  assert_equal "/two_app/users/create", another_route.path
153
+ regexp_route = Padrino.mounted_apps[0].named_routes[5]
154
+ assert_equal "posts_regexp", regexp_route.identifier.to_s
155
+ assert_equal "(:posts, :regexp)", regexp_route.name
156
+ assert_equal "/\\/foo|\\/baz/", regexp_route.path
151
157
  end
152
158
 
153
159
  should 'correctly instantiate a new padrino application' do
@@ -173,5 +179,21 @@ describe "Mounter" do
173
179
  assert res.ok?
174
180
  assert_equal File.read(__FILE__), res.body
175
181
  end
182
+
183
+ should "load apps from gems" do
184
+ spec_file = Padrino.root("fixtures", "app_gem", "app_gem.gemspec")
185
+ spec = Gem::Specification.load(spec_file)
186
+ spec.activate
187
+ def spec.full_gem_path
188
+ Padrino.root("fixtures", "app_gem")
189
+ end
190
+
191
+ require Padrino.root("fixtures", "app_gem", "lib", "app_gem")
192
+
193
+ Padrino.mount("AppGem::App").to("/from_gem")
194
+ mounter = Padrino.mounted_apps[0]
195
+ assert_equal AppGem::App, mounter.app_obj
196
+ assert_equal Padrino.root('public'), mounter.app_obj.public_folder
197
+ end
176
198
  end
177
199
  end
@@ -78,20 +78,20 @@ describe "SimpleReloader" do
78
78
  last_body = body
79
79
  assert_equal 2, @app.filters[:before].size # one is ours the other is default_filter for content type
80
80
  assert_equal 1, @app.errors.size
81
- assert_equal 1, @app.filters[:after].size
81
+ assert_equal 2, @app.filters[:after].size # app + content-type + padrino-flash
82
82
  assert_equal 0, @app.middleware.size
83
83
  assert_equal 4, @app.routes.size # GET+HEAD of "/" + GET+HEAD of "/rand" = 4
84
- assert_equal 2, @app.extensions.size # [Padrino::Routing, Padrino::Rendering]
84
+ assert_equal 3, @app.extensions.size # [Padrino::Routing, Padrino::Rendering, Padrino::Flash]
85
85
  assert_equal 0, @app.templates.size
86
86
  @app.reload!
87
87
  get "/rand"
88
88
  assert_not_equal last_body, body
89
89
  assert_equal 2, @app.filters[:before].size # one is ours the other is default_filter for content type
90
90
  assert_equal 1, @app.errors.size
91
- assert_equal 1, @app.filters[:after].size
91
+ assert_equal 2, @app.filters[:after].size
92
92
  assert_equal 0, @app.middleware.size
93
93
  assert_equal 4, @app.routes.size # GET+HEAD of "/" = 2
94
- assert_equal 2, @app.extensions.size # [Padrino::Routing, Padrino::Rendering]
94
+ assert_equal 3, @app.extensions.size # [Padrino::Routing, Padrino::Rendering, Padrino::Flash]
95
95
  assert_equal 0, @app.templates.size
96
96
  end
97
97
  end
@@ -1,5 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/helper')
2
2
  require 'i18n'
3
+ require 'slim'
3
4
 
4
5
  describe "Rendering" do
5
6
  def setup
@@ -28,7 +29,7 @@ describe "Rendering" do
28
29
  "this is a <%= yield %>"
29
30
  end
30
31
 
31
- get("/"){ render :erb, "sinatra layout" }
32
+ get("/"){ render :erb, "sinatra layout", :layout => true }
32
33
  end
33
34
 
34
35
  get "/"
@@ -137,6 +138,7 @@ describe "Rendering" do
137
138
  should 'use correct layout with each controller' do
138
139
  create_layout :foo, "foo layout at <%= yield %>"
139
140
  create_layout :bar, "bar layout at <%= yield %>"
141
+ create_layout :baz, "baz layout at <%= yield %>"
140
142
  create_layout :application, "default layout at <%= yield %>"
141
143
  mock_app do
142
144
  get("/"){ render :erb, "application" }
@@ -148,6 +150,10 @@ describe "Rendering" do
148
150
  layout :bar
149
151
  get("/"){ render :erb, "bar" }
150
152
  end
153
+ controller :baz do
154
+ layout :baz
155
+ get("/"){ render :erb, "baz", :layout => true }
156
+ end
151
157
  controller :none do
152
158
  get("/") { render :erb, "none" }
153
159
  get("/with_foo_layout") { render :erb, "none with layout", :layout => :foo }
@@ -157,6 +163,8 @@ describe "Rendering" do
157
163
  assert_equal "foo layout at foo", body
158
164
  get "/bar"
159
165
  assert_equal "bar layout at bar", body
166
+ get "/baz"
167
+ assert_equal "baz layout at baz", body
160
168
  get "/none"
161
169
  assert_equal "default layout at none", body
162
170
  get "/none/with_foo_layout"
@@ -207,7 +215,7 @@ describe "Rendering" do
207
215
  create_view :index, "<%= foo %>"
208
216
  mock_app do
209
217
  enable :logging
210
- get("/") { render "index", { :layout => true }, { :foo => "bar" } }
218
+ get("/") { render "index", { :layout => nil }, { :foo => "bar" } }
211
219
  end
212
220
  get "/"
213
221
  assert_equal "bar", body
@@ -396,7 +404,7 @@ describe "Rendering" do
396
404
  assert_equal "Im Italian Js", body
397
405
  I18n.locale = :en
398
406
  get "/foo.pk"
399
- assert_equal 405, status
407
+ assert_equal 404, status
400
408
  end
401
409
 
402
410
  should 'resolve template content_type and locale with layout' do
@@ -438,7 +446,7 @@ describe "Rendering" do
438
446
  get "/bar.json"
439
447
  assert_equal "Im a json", body
440
448
  get "/bar.pk"
441
- assert_equal 405, status
449
+ assert_equal 404, status
442
450
  end
443
451
 
444
452
  should 'renders erb with blocks' do
@@ -457,5 +465,68 @@ describe "Rendering" do
457
465
  assert ok?
458
466
  assert_equal 'THIS. IS. SPARTA!', body
459
467
  end
468
+
469
+ should 'render erb to a SafeBuffer' do
470
+ mock_app do
471
+ layout do
472
+ "this is a <%= yield %>"
473
+ end
474
+ get '/' do
475
+ render :erb, '<p><%= %q{<script lang="ronin">alert("https://github.com/ronin-ruby/ronin")</script>} %></p>', :layout => false
476
+ end
477
+ get '/with_layout' do
478
+ render :erb, '<span>span</span>', :layout => true
479
+ end
480
+ end
481
+ get '/'
482
+ assert ok?
483
+ assert_equal '<p>&lt;script lang=&quot;ronin&quot;&gt;alert(&quot;https://github.com/ronin-ruby/ronin&quot;)&lt;/script&gt;</p>', body
484
+
485
+ get '/with_layout'
486
+ assert ok?
487
+ assert_equal 'this is a <span>span</span>', body
488
+ end
489
+
490
+ should 'render haml to a SafeBuffer' do
491
+ mock_app do
492
+ layout do
493
+ "%p= yield"
494
+ end
495
+ get '/' do
496
+ render :haml, '%p= %s{<script lang="ronin">alert("https://github.com/ronin-ruby/ronin")</script>}', :layout => false
497
+ end
498
+ get '/with_layout' do
499
+ render :haml, "%div\n foo", :layout => true
500
+ end
501
+ end
502
+ get '/'
503
+ assert ok?
504
+ assert_equal '<p>&lt;script lang=&quot;ronin&quot;&gt;alert(&quot;https://github.com/ronin-ruby/ronin&quot;)&lt;/script&gt;</p>', body.strip
505
+
506
+ get 'with_layout'
507
+ assert ok?
508
+ assert_equal '<p><div>foo</div></p>', body.gsub(/\s+/, "")
509
+ end
510
+
511
+ should 'render slim to a SafeBuffer' do
512
+ mock_app do
513
+ layout do
514
+ "p= yield"
515
+ end
516
+ get '/' do
517
+ render :slim, 'p = %q{<script lang="ronin">alert("https://github.com/ronin-ruby/ronin")</script>}', :layout => false
518
+ end
519
+ get "/with_layout" do
520
+ render :slim, 'div foo', :layout => true
521
+ end
522
+ end
523
+ get '/'
524
+ assert ok?
525
+ assert_equal '<p>&lt;script lang=&quot;ronin&quot;&gt;alert(&quot;https://github.com/ronin-ruby/ronin&quot;)&lt;/script&gt;</p>', body.strip
526
+
527
+ get '/with_layout'
528
+ assert ok?
529
+ assert_equal '<p><div>foo</div></p>', body.strip
530
+ end
460
531
  end
461
532
  end
@@ -1,3 +1,4 @@
1
+ #encoding: utf-8
1
2
  require File.expand_path(File.dirname(__FILE__) + '/helper')
2
3
 
3
4
  class FooError < RuntimeError; end
@@ -57,12 +58,12 @@ describe "Routing" do
57
58
 
58
59
  should 'accept regexp routes' do
59
60
  mock_app do
60
- get(%r{/fob|/baz}) { "regexp" }
61
+ get(%r./fob|/baz.) { "regexp" }
61
62
  get("/foo") { "str" }
62
- get %r{/([0-9]+)/} do |num|
63
- "Your lucky number: #{num} #{params[:captures].first}"
63
+ get %r./([0-9]+)/. do |num|
64
+ "Your lucky number: #{num} #{params[:captures].first}"
64
65
  end
65
- get /\/page\/([0-9]+)|\// do |num|
66
+ get %r./page/([0-9]+)|/. do |num|
66
67
  "My lucky number: #{num} #{params[:captures].first}"
67
68
  end
68
69
  end
@@ -72,8 +73,8 @@ describe "Routing" do
72
73
  assert_equal "regexp", body
73
74
  get "/baz"
74
75
  assert_equal "regexp", body
75
- get "/1234/"
76
- assert_equal "Your lucky number: 1234 1234", body
76
+ get "/321/"
77
+ assert_equal "Your lucky number: 321 321", body
77
78
  get "/page/99"
78
79
  assert_equal "My lucky number: 99 99", body
79
80
  end
@@ -100,6 +101,24 @@ describe "Routing" do
100
101
  assert_equal "no access", body
101
102
  end
102
103
 
104
+ should 'parse routes that are encoded' do
105
+ mock_app do
106
+ get('/щч') { 'success!' }
107
+ end
108
+ get(URI.escape('/щч'))
109
+ assert_equal 'success!', body
110
+ end
111
+
112
+ should 'encode params using UTF-8' do
113
+ skip unless ''.respond_to?(:encoding) # for 1.8.7
114
+
115
+ mock_app do
116
+ get('/:foo') { params[:foo].encoding.name }
117
+ end
118
+ get '/bar'
119
+ assert_equal 'UTF-8', body
120
+ end
121
+
103
122
  should 'match correctly similar paths' do
104
123
  mock_app do
105
124
  get("/my/:foo_id"){ params[:foo_id] }
@@ -138,9 +157,9 @@ describe "Routing" do
138
157
  post("/main"){ "hello" }
139
158
  end
140
159
  assert_equal 3, app.routes.size, "should generate GET, HEAD and PUT"
141
- assert_equal ["GET"], app.routes[0].conditions[:request_method]
142
- assert_equal ["HEAD"], app.routes[1].conditions[:request_method]
143
- assert_equal ["POST"], app.routes[2].conditions[:request_method]
160
+ assert_equal "GET", app.routes[0].request_methods.first
161
+ assert_equal "HEAD", app.routes[1].request_methods.first
162
+ assert_equal "POST", app.routes[2].request_methods.first
144
163
  end
145
164
 
146
165
  should 'generate basic urls' do
@@ -192,13 +211,13 @@ describe "Routing" do
192
211
  get "/b.js"
193
212
  assert_equal "/b.js", body
194
213
  get "/b.ru"
195
- assert_equal 405, status
214
+ assert_equal 404, status
196
215
  get "/c.js"
197
216
  assert_equal "/c.json", body
198
217
  get "/c.json"
199
218
  assert_equal "/c.json", body
200
219
  get "/c.ru"
201
- assert_equal 405, status
220
+ assert_equal 404, status
202
221
  get "/d"
203
222
  assert_equal "/d.js?foo=bar", body
204
223
  get "/d.js"
@@ -207,6 +226,14 @@ describe "Routing" do
207
226
  assert_equal 404, status
208
227
  end
209
228
 
229
+ should 'allow regex url with format' do
230
+ mock_app do
231
+ get(/.*/, :provides => :any) { "regexp" }
232
+ end
233
+ get "/anything"
234
+ assert_equal "regexp", body
235
+ end
236
+
210
237
  should 'use padrino url method' do
211
238
  mock_app do
212
239
  end
@@ -255,7 +282,7 @@ describe "Routing" do
255
282
  end
256
283
 
257
284
  get "/a.xml", {}, {}
258
- assert_equal 405, status
285
+ assert_equal 404, status
259
286
  end
260
287
 
261
288
  should "not set content_type to :html if Accept */* and html not in provides" do
@@ -276,15 +303,6 @@ describe "Routing" do
276
303
  assert_equal 'json', body
277
304
  end
278
305
 
279
- should "set content_type to :json if render => :json" do
280
- mock_app do
281
- get("/foo"){ render :foo => :bar }
282
- end
283
-
284
- get '/foo'
285
- assert_equal 'application/json;charset=utf-8', content_type
286
- end
287
-
288
306
  should 'set and get content_type' do
289
307
  mock_app do
290
308
  get("/foo"){ content_type(:json); content_type.to_s }
@@ -303,6 +321,7 @@ describe "Routing" do
303
321
  end
304
322
 
305
323
  should "allow .'s in param values" do
324
+ skip
306
325
  mock_app do
307
326
  get('/id/:email', :provides => [:json]) { |email, format| [email, format] * '/' }
308
327
  end
@@ -343,7 +362,7 @@ describe "Routing" do
343
362
  end
344
363
 
345
364
  get "/a.xml", {}, {"HTTP_ACCEPT" => "text/html"}
346
- assert_equal 405, status
365
+ assert_equal 404, status
347
366
  end
348
367
 
349
368
  should "generate routes for format simple" do
@@ -371,20 +390,32 @@ describe "Routing" do
371
390
  assert_equal "mini", body
372
391
  end
373
392
 
374
- should "support not_found" do
393
+ should "should inject the action name into the request" do
375
394
  mock_app do
376
- not_found do
377
- response.status = 404
378
- 'whatever'
395
+ controller :posts do
396
+ get('/omnomnom(/:id)') { request.action.inspect }
397
+ controller :mini do
398
+ get([:a, :b, :c]) { request.action.inspect }
399
+ end
379
400
  end
401
+ end
402
+ get "/posts/omnomnom"
403
+ assert_equal "\"/omnomnom(/:id)\"", body
404
+ get "/mini/a/b/c"
405
+ assert_equal ":a", body
406
+ end
407
+
408
+ should "support not_found" do
409
+ mock_app do
410
+ not_found { 'whatever' }
380
411
 
381
412
  get :index, :map => "/" do
382
413
  'index'
383
414
  end
384
415
  end
385
- get '/something'
386
- assert_equal 'whatever', body
416
+ get '/wrong'
387
417
  assert_equal 404, status
418
+ assert_equal 'whatever', body
388
419
  get '/'
389
420
  assert_equal 'index', body
390
421
  assert_equal 200, status
@@ -393,7 +424,7 @@ describe "Routing" do
393
424
  should "should inject the route into the request" do
394
425
  mock_app do
395
426
  controller :posts do
396
- get(:index) { request.route_obj.named.to_s }
427
+ get(:index) { request.route_obj.name.to_s }
397
428
  end
398
429
  end
399
430
  get "/posts"
@@ -741,7 +772,27 @@ describe "Routing" do
741
772
  assert_equal 404, status
742
773
  end
743
774
 
775
+ should "match params and format" do
776
+ app = mock_app do
777
+ get '/:id', :provides => [:json, :html] do |id, _|
778
+ id
779
+ end
780
+
781
+ get 'format/:id', :provides => [:json, :html] do |id, format|
782
+ format
783
+ end
784
+ end
785
+
786
+ get '/123.html'
787
+ assert_equal '123', body
788
+
789
+ get 'format/123.html'
790
+ assert_equal 'html', body
791
+ end
792
+
793
+
744
794
  should 'respect priorities' do
795
+ skip
745
796
  route_order = []
746
797
  mock_app do
747
798
  get(:index, :priority => :normal) { route_order << :normal; pass }
@@ -815,6 +866,55 @@ describe "Routing" do
815
866
  assert_equal "show 3 1 2", body
816
867
  end
817
868
 
869
+ should "respect parent precedence: controllers parents go before route parents" do
870
+ mock_app do
871
+ controllers :project do
872
+ get(:index, :parent => :user) { "index #{params[:user_id]}" }
873
+ end
874
+
875
+ controllers :bar, :parent => :foo do
876
+ get(:index) { "index on foo #{params[:foo_id]} @ bar" }
877
+ get(:index, :parent => :baz) { "index on foo #{params[:foo_id]} @ baz #{params[:baz_id]} @ bar" }
878
+ end
879
+ end
880
+
881
+ get "/user/1/project"
882
+ assert_equal "index 1", body
883
+ get "/foo/1/bar"
884
+ assert_equal "index on foo 1 @ bar", body
885
+ get "/foo/1/baz/2/bar"
886
+ assert_equal "index on foo 1 @ baz 2 @ bar", body
887
+ end
888
+
889
+ should "keep a reference to the parent on the route" do
890
+ mock_app do
891
+ controllers :project do
892
+ get(:index, :parent => :user) { "index #{params[:user_id]}" }
893
+ get(:index, :parent => [:user, :section]) { "index #{params[:user_id]} #{params[:section_id]}" }
894
+ get(:edit, :with => :id, :parent => :user) { "edit #{params[:id]} #{params[:user_id]}"}
895
+ get(:show, :with => :id, :parent => [:user, :product]) { "show #{params[:id]} #{params[:user_id]} #{params[:product_id]}"}
896
+ end
897
+
898
+ controllers :bar, :parent => :foo do
899
+ get(:index) { "index on foo/bar" }
900
+ get(:index, :parent => :baz) { "index on foo/baz/bar" }
901
+ end
902
+ end
903
+
904
+ # get "/user/1/project"
905
+ assert_equal :user, @app.routes[0].parent
906
+ # get "/user/1/section/3/project"
907
+ assert_equal [:user, :section], @app.routes[2].parent
908
+ # get "/user/1/project/edit/2"
909
+ assert_equal :user, @app.routes[4].parent
910
+ # get "/user/1/product/2/project/show/3"
911
+ assert_equal [:user, :product], @app.routes[6].parent
912
+ # get "/foo/1/bar"
913
+ assert_equal :foo, @app.routes[8].parent
914
+ # get "/foo/1/baz/2/bar"
915
+ assert_equal [:foo, :baz], @app.routes[10].parent
916
+ end
917
+
818
918
  should "apply parent to controller" do
819
919
  mock_app do
820
920
  controller :project, :parent => :user do
@@ -1041,6 +1141,24 @@ describe "Routing" do
1041
1141
  assert_equal 'js', body
1042
1142
  end
1043
1143
 
1144
+ should "set content_type to :html if Accept */* and provides of :any" do
1145
+ mock_app do
1146
+ get("/foo", :provides => :any) { content_type.to_s }
1147
+ end
1148
+
1149
+ get '/foo', {}, { 'HTTP_ACCEPT' => '*/*' }
1150
+ assert_equal 'html', body
1151
+ end
1152
+
1153
+ should "set content_type to :js if Accept includes both application/javascript, */*;q=0.5 and provides of :any" do
1154
+ mock_app do
1155
+ get("/foo", :provides => :any) { content_type.to_s }
1156
+ end
1157
+
1158
+ get '/foo', {}, { 'HTTP_ACCEPT' => 'application/javascript, */*;q=0.5' }
1159
+ assert_equal 'js', body
1160
+ end
1161
+
1044
1162
  should 'allows custom route-conditions to be set via route options and halt' do
1045
1163
  protector = Module.new do
1046
1164
  def protect(*args)
@@ -1323,11 +1441,11 @@ describe "Routing" do
1323
1441
  get "/.json"
1324
1442
  assert_equal "This is the get index.json", body
1325
1443
  get "/.js"
1326
- assert_equal 405, status
1444
+ assert_equal 404, status
1327
1445
  post "/.json"
1328
1446
  assert_equal "This is the post index.json", body
1329
1447
  post "/.js"
1330
- assert_equal 405, status
1448
+ assert_equal 404, status
1331
1449
  end
1332
1450
 
1333
1451
  should "allow controller level mapping" do
@@ -1349,6 +1467,33 @@ describe "Routing" do
1349
1467
  assert_equal "1, 2", body
1350
1468
  end
1351
1469
 
1470
+ should "replace name of named controller with mapping path" do
1471
+ mock_app do
1472
+ controller :ugly, :map => "/pretty/:id" do
1473
+ get(:url3) { "#{params[:id]}" }
1474
+ get(:url4, :map => 'test-:id2') { "#{params[:id]}, #{params[:id2]}" }
1475
+ end
1476
+ controller :voldemort, :map => "" do
1477
+ get(:url5) { "okay" }
1478
+ end
1479
+ end
1480
+
1481
+ url = @app.url(:ugly, :url3, :id => 1)
1482
+ assert_equal "/pretty/1/url3", url
1483
+ get url
1484
+ assert_equal "1", body
1485
+
1486
+ url = @app.url(:ugly, :url4, 3, 5)
1487
+ assert_equal "/pretty/3/test-5", url
1488
+ get url
1489
+ assert_equal "3, 5", body
1490
+
1491
+ url = @app.url(:voldemort, :url5)
1492
+ assert_equal "/url5", url
1493
+ get url
1494
+ assert_equal 'okay', body
1495
+ end
1496
+
1352
1497
  should 'use absolute and relative maps' do
1353
1498
  mock_app do
1354
1499
  controller :one do
@@ -1544,8 +1689,8 @@ describe "Routing" do
1544
1689
  end
1545
1690
 
1546
1691
  should "have overideable format" do
1692
+ ::Rack::Mime::MIME_TYPES[".other"] = "text/html"
1547
1693
  mock_app do
1548
- ::Rack::Mime::MIME_TYPES[".other"] = "text/html"
1549
1694
  before do
1550
1695
  params[:format] ||= :other
1551
1696
  end
@@ -1553,6 +1698,7 @@ describe "Routing" do
1553
1698
  end
1554
1699
  get "/format_test"
1555
1700
  assert_equal "other", body
1701
+ ::Rack::Mime::MIME_TYPES.delete('.other')
1556
1702
  end
1557
1703
 
1558
1704
  should 'invokes handlers registered with ::error when raised' do
@@ -1626,13 +1772,33 @@ describe "Routing" do
1626
1772
  assert_match /not found/, body
1627
1773
  end
1628
1774
 
1629
- should 'render a custom 404 page' do
1775
+ should 'render a custom 404 page using not_found' do
1630
1776
  mock_app do
1631
- error(404) { "not found" }
1777
+ not_found { "custom 404 not found" }
1632
1778
  end
1633
1779
  get "/"
1634
1780
  assert_equal 404, status
1635
- assert_match /not found/, body
1781
+ assert_equal "custom 404 not found", body
1782
+ end
1783
+
1784
+ should 'render a custom error page using error method' do
1785
+ skip
1786
+ mock_app do
1787
+ error(404) { "custom 404 error" }
1788
+ end
1789
+ get "/"
1790
+ assert_equal 404, status
1791
+ assert_equal "custom 404 error", body
1792
+ end
1793
+
1794
+ should 'render a custom 403 page' do
1795
+ mock_app do
1796
+ error(403) { "custom 403 not found" }
1797
+ get("/") { status 403 }
1798
+ end
1799
+ get "/"
1800
+ assert_equal 403, status
1801
+ assert_equal "custom 403 not found", body
1636
1802
  end
1637
1803
 
1638
1804
  should 'recognize paths' do
@@ -1692,4 +1858,12 @@ describe "Routing" do
1692
1858
  get @app.url(:index, :page => 10)
1693
1859
  assert_equal "/paginate/66", body
1694
1860
  end
1861
+
1862
+ should 'not route get :users, :with => :id to /users//' do
1863
+ mock_app do
1864
+ get(:users, :with => :id) { 'boo' }
1865
+ end
1866
+ get '/users//'
1867
+ assert_equal 404, status
1868
+ end
1695
1869
  end