haml 3.2.0.alpha.10 → 3.2.0.alpha.13

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of haml might be problematic. Click here for more details.

Files changed (389) hide show
  1. data/.yardopts +19 -7
  2. data/CHANGELOG.md +1224 -0
  3. data/FAQ.md +157 -0
  4. data/README.md +99 -62
  5. data/REFERENCE.md +1404 -0
  6. data/Rakefile +52 -341
  7. data/init.rb +1 -18
  8. data/lib/haml.rb +6 -30
  9. data/lib/haml/buffer.rb +37 -16
  10. data/lib/haml/compiler.rb +52 -13
  11. data/lib/haml/engine.rb +61 -44
  12. data/lib/haml/exec.rb +21 -4
  13. data/lib/haml/filters.rb +136 -166
  14. data/lib/haml/helpers.rb +37 -10
  15. data/lib/haml/helpers/action_view_extensions.rb +2 -1
  16. data/lib/haml/helpers/action_view_mods.rb +67 -181
  17. data/lib/haml/helpers/rails_323_textarea_fix.rb +39 -0
  18. data/lib/haml/helpers/xss_mods.rb +9 -11
  19. data/lib/haml/html.rb +22 -9
  20. data/lib/haml/html/erb.rb +1 -1
  21. data/lib/haml/parser.rb +22 -15
  22. data/lib/haml/railtie.rb +2 -13
  23. data/lib/haml/template.rb +18 -85
  24. data/lib/haml/template/options.rb +1 -1
  25. data/lib/haml/template/plugin.rb +15 -101
  26. data/lib/haml/util.rb +120 -603
  27. data/lib/haml/version.rb +1 -107
  28. data/test/{haml/engine_test.rb → engine_test.rb} +137 -143
  29. data/test/{haml/erb → erb}/_av_partial_1.erb +1 -1
  30. data/test/{haml/erb → erb}/_av_partial_2.erb +1 -1
  31. data/test/{haml/erb → erb}/action_view.erb +1 -1
  32. data/test/{haml/erb → erb}/standard.erb +0 -0
  33. data/test/filters_test.rb +141 -0
  34. data/test/gemfiles/Gemfile.rails-3.0.x +4 -6
  35. data/test/gemfiles/Gemfile.rails-3.1.x +5 -6
  36. data/test/gemfiles/Gemfile.rails-3.2.x +6 -0
  37. data/test/haml-spec/LICENSE +14 -0
  38. data/test/{haml/spec → haml-spec}/README.md +26 -17
  39. data/test/haml-spec/lua_haml_spec.lua +38 -0
  40. data/test/haml-spec/perl_haml_test.pl +81 -0
  41. data/test/haml-spec/ruby_haml_test.rb +23 -0
  42. data/test/{haml/spec → haml-spec}/tests.json +132 -54
  43. data/test/{haml/helper_test.rb → helper_test.rb} +50 -36
  44. data/test/{haml/html2haml → html2haml}/erb_tests.rb +0 -0
  45. data/test/{haml/html2haml_test.rb → html2haml_test.rb} +11 -5
  46. data/test/{haml/markaby → markaby}/standard.mab +0 -0
  47. data/test/{haml/mocks → mocks}/article.rb +0 -0
  48. data/test/{haml/results → results}/content_for_layout.xhtml +0 -0
  49. data/test/{haml/results → results}/eval_suppressed.xhtml +0 -0
  50. data/test/{haml/results → results}/helpers.xhtml +0 -0
  51. data/test/{haml/results → results}/helpful.xhtml +0 -0
  52. data/test/{haml/results → results}/just_stuff.xhtml +0 -0
  53. data/test/{haml/results → results}/list.xhtml +0 -0
  54. data/test/{haml/results → results}/nuke_inner_whitespace.xhtml +0 -0
  55. data/test/{haml/results → results}/nuke_outer_whitespace.xhtml +0 -0
  56. data/test/{haml/results → results}/original_engine.xhtml +0 -0
  57. data/test/{haml/results → results}/partial_layout.xhtml +0 -0
  58. data/test/{haml/results → results}/partials.xhtml +0 -0
  59. data/test/{haml/results → results}/render_layout.xhtml +0 -0
  60. data/test/{haml/results → results}/silent_script.xhtml +1 -1
  61. data/test/{haml/results → results}/standard.xhtml +0 -0
  62. data/test/{haml/results → results}/tag_parsing.xhtml +0 -0
  63. data/test/{haml/results → results}/very_basic.xhtml +0 -0
  64. data/test/{haml/results → results}/whitespace_handling.xhtml +46 -50
  65. data/test/{haml/template_test.rb → template_test.rb} +20 -81
  66. data/test/{haml/templates → templates}/_av_partial_1.haml +1 -1
  67. data/test/{haml/templates → templates}/_av_partial_1_ugly.haml +1 -1
  68. data/test/{haml/templates → templates}/_av_partial_2.haml +1 -1
  69. data/test/{haml/templates → templates}/_av_partial_2_ugly.haml +1 -1
  70. data/test/{haml/templates → templates}/_layout.erb +0 -0
  71. data/test/{haml/templates → templates}/_layout_for_partial.haml +0 -0
  72. data/test/{haml/templates → templates}/_partial.haml +0 -0
  73. data/test/{haml/templates → templates}/_text_area.haml +0 -0
  74. data/test/{haml/templates → templates}/action_view.haml +1 -1
  75. data/test/{haml/templates → templates}/action_view_ugly.haml +1 -1
  76. data/test/{haml/templates → templates}/breakage.haml +0 -0
  77. data/test/{haml/templates → templates}/content_for_layout.haml +0 -0
  78. data/test/{haml/templates → templates}/eval_suppressed.haml +0 -0
  79. data/test/{haml/templates → templates}/helpers.haml +0 -0
  80. data/test/{haml/templates → templates}/helpful.haml +0 -0
  81. data/test/{haml/templates → templates}/just_stuff.haml +0 -0
  82. data/test/{haml/templates → templates}/list.haml +0 -0
  83. data/test/{haml/templates → templates}/nuke_inner_whitespace.haml +0 -0
  84. data/test/{haml/templates → templates}/nuke_outer_whitespace.haml +0 -0
  85. data/test/{haml/templates → templates}/original_engine.haml +0 -0
  86. data/test/templates/partial_layout.haml +3 -0
  87. data/test/{haml/templates → templates}/partialize.haml +0 -0
  88. data/test/{haml/templates → templates}/partials.haml +0 -0
  89. data/test/{haml/templates → templates}/render_layout.haml +0 -0
  90. data/test/{haml/templates → templates}/silent_script.haml +2 -2
  91. data/test/{haml/templates → templates}/standard.haml +0 -0
  92. data/test/{haml/templates → templates}/standard_ugly.haml +0 -0
  93. data/test/{haml/templates → templates}/tag_parsing.haml +0 -0
  94. data/test/{haml/templates → templates}/very_basic.haml +0 -0
  95. data/test/{haml/templates → templates}/whitespace_handling.haml +0 -0
  96. data/test/test_helper.rb +42 -34
  97. data/test/util_test.rb +80 -0
  98. metadata +259 -427
  99. data/CONTRIBUTING +0 -3
  100. data/REVISION +0 -1
  101. data/VERSION +0 -1
  102. data/VERSION_NAME +0 -1
  103. data/extra/update_watch.rb +0 -13
  104. data/lib/haml/root.rb +0 -7
  105. data/lib/haml/shared.rb +0 -78
  106. data/lib/haml/template/patch.rb +0 -58
  107. data/lib/sass.rb +0 -8
  108. data/lib/sass/plugin.rb +0 -10
  109. data/lib/sass/rails2_shim.rb +0 -9
  110. data/lib/sass/rails3_shim.rb +0 -16
  111. data/test/benchmark.rb +0 -91
  112. data/test/gemfiles/Gemfile.rails-2.0.x +0 -8
  113. data/test/gemfiles/Gemfile.rails-2.0.x.lock +0 -38
  114. data/test/gemfiles/Gemfile.rails-2.1.x +0 -8
  115. data/test/gemfiles/Gemfile.rails-2.1.x.lock +0 -38
  116. data/test/gemfiles/Gemfile.rails-2.2.x +0 -8
  117. data/test/gemfiles/Gemfile.rails-2.2.x.lock +0 -38
  118. data/test/gemfiles/Gemfile.rails-2.3.x +0 -8
  119. data/test/gemfiles/Gemfile.rails-2.3.x.lock +0 -40
  120. data/test/gemfiles/Gemfile.rails-3.0.x.lock +0 -85
  121. data/test/gemfiles/Gemfile.rails-3.1.x.lock +0 -98
  122. data/test/gemfiles/Gemfile.rails-xss-2.3.x +0 -9
  123. data/test/gemfiles/Gemfile.rails-xss-2.3.x.lock +0 -42
  124. data/test/haml/results/filters.xhtml +0 -62
  125. data/test/haml/spec/lua_haml_spec.lua +0 -30
  126. data/test/haml/spec/ruby_haml_test.rb +0 -19
  127. data/test/haml/spec_test.rb +0 -44
  128. data/test/haml/templates/filters.haml +0 -66
  129. data/test/haml/templates/partial_layout.haml +0 -10
  130. data/test/haml/util_test.rb +0 -300
  131. data/test/linked_rails.rb +0 -42
  132. data/vendor/sass/CONTRIBUTING +0 -3
  133. data/vendor/sass/MIT-LICENSE +0 -20
  134. data/vendor/sass/README.md +0 -201
  135. data/vendor/sass/Rakefile +0 -339
  136. data/vendor/sass/TODO +0 -39
  137. data/vendor/sass/VERSION +0 -1
  138. data/vendor/sass/VERSION_NAME +0 -1
  139. data/vendor/sass/bin/sass +0 -8
  140. data/vendor/sass/bin/sass-convert +0 -7
  141. data/vendor/sass/bin/scss +0 -8
  142. data/vendor/sass/doc-src/FAQ.md +0 -35
  143. data/vendor/sass/doc-src/INDENTED_SYNTAX.md +0 -210
  144. data/vendor/sass/doc-src/SASS_CHANGELOG.md +0 -2327
  145. data/vendor/sass/doc-src/SASS_REFERENCE.md +0 -1965
  146. data/vendor/sass/doc-src/SCSS_FOR_SASS_USERS.md +0 -155
  147. data/vendor/sass/ext/extconf.rb +0 -10
  148. data/vendor/sass/extra/update_watch.rb +0 -13
  149. data/vendor/sass/init.rb +0 -18
  150. data/vendor/sass/lib/sass.rb +0 -73
  151. data/vendor/sass/lib/sass/cache_stores.rb +0 -15
  152. data/vendor/sass/lib/sass/cache_stores/base.rb +0 -86
  153. data/vendor/sass/lib/sass/cache_stores/chain.rb +0 -33
  154. data/vendor/sass/lib/sass/cache_stores/filesystem.rb +0 -60
  155. data/vendor/sass/lib/sass/cache_stores/memory.rb +0 -47
  156. data/vendor/sass/lib/sass/cache_stores/null.rb +0 -25
  157. data/vendor/sass/lib/sass/callbacks.rb +0 -66
  158. data/vendor/sass/lib/sass/css.rb +0 -295
  159. data/vendor/sass/lib/sass/engine.rb +0 -878
  160. data/vendor/sass/lib/sass/environment.rb +0 -166
  161. data/vendor/sass/lib/sass/error.rb +0 -201
  162. data/vendor/sass/lib/sass/exec.rb +0 -672
  163. data/vendor/sass/lib/sass/importers.rb +0 -22
  164. data/vendor/sass/lib/sass/importers/base.rb +0 -139
  165. data/vendor/sass/lib/sass/importers/filesystem.rb +0 -149
  166. data/vendor/sass/lib/sass/less.rb +0 -382
  167. data/vendor/sass/lib/sass/logger.rb +0 -15
  168. data/vendor/sass/lib/sass/logger/base.rb +0 -32
  169. data/vendor/sass/lib/sass/logger/log_level.rb +0 -49
  170. data/vendor/sass/lib/sass/plugin.rb +0 -132
  171. data/vendor/sass/lib/sass/plugin/compiler.rb +0 -383
  172. data/vendor/sass/lib/sass/plugin/configuration.rb +0 -123
  173. data/vendor/sass/lib/sass/plugin/generic.rb +0 -15
  174. data/vendor/sass/lib/sass/plugin/merb.rb +0 -48
  175. data/vendor/sass/lib/sass/plugin/rack.rb +0 -60
  176. data/vendor/sass/lib/sass/plugin/rails.rb +0 -47
  177. data/vendor/sass/lib/sass/plugin/staleness_checker.rb +0 -173
  178. data/vendor/sass/lib/sass/railtie.rb +0 -9
  179. data/vendor/sass/lib/sass/repl.rb +0 -58
  180. data/vendor/sass/lib/sass/root.rb +0 -7
  181. data/vendor/sass/lib/sass/script.rb +0 -40
  182. data/vendor/sass/lib/sass/script/bool.rb +0 -18
  183. data/vendor/sass/lib/sass/script/color.rb +0 -480
  184. data/vendor/sass/lib/sass/script/css_lexer.rb +0 -29
  185. data/vendor/sass/lib/sass/script/css_parser.rb +0 -31
  186. data/vendor/sass/lib/sass/script/funcall.rb +0 -175
  187. data/vendor/sass/lib/sass/script/functions.rb +0 -1386
  188. data/vendor/sass/lib/sass/script/interpolation.rb +0 -79
  189. data/vendor/sass/lib/sass/script/lexer.rb +0 -339
  190. data/vendor/sass/lib/sass/script/list.rb +0 -83
  191. data/vendor/sass/lib/sass/script/literal.rb +0 -250
  192. data/vendor/sass/lib/sass/script/node.rb +0 -99
  193. data/vendor/sass/lib/sass/script/number.rb +0 -452
  194. data/vendor/sass/lib/sass/script/operation.rb +0 -99
  195. data/vendor/sass/lib/sass/script/parser.rb +0 -474
  196. data/vendor/sass/lib/sass/script/string.rb +0 -51
  197. data/vendor/sass/lib/sass/script/string_interpolation.rb +0 -103
  198. data/vendor/sass/lib/sass/script/unary_operation.rb +0 -64
  199. data/vendor/sass/lib/sass/script/variable.rb +0 -59
  200. data/vendor/sass/lib/sass/scss.rb +0 -17
  201. data/vendor/sass/lib/sass/scss/css_parser.rb +0 -46
  202. data/vendor/sass/lib/sass/scss/parser.rb +0 -960
  203. data/vendor/sass/lib/sass/scss/rx.rb +0 -128
  204. data/vendor/sass/lib/sass/scss/sass_parser.rb +0 -11
  205. data/vendor/sass/lib/sass/scss/script_lexer.rb +0 -15
  206. data/vendor/sass/lib/sass/scss/script_parser.rb +0 -25
  207. data/vendor/sass/lib/sass/scss/static_parser.rb +0 -40
  208. data/vendor/sass/lib/sass/selector.rb +0 -361
  209. data/vendor/sass/lib/sass/selector/abstract_sequence.rb +0 -62
  210. data/vendor/sass/lib/sass/selector/comma_sequence.rb +0 -81
  211. data/vendor/sass/lib/sass/selector/sequence.rb +0 -233
  212. data/vendor/sass/lib/sass/selector/simple.rb +0 -113
  213. data/vendor/sass/lib/sass/selector/simple_sequence.rb +0 -134
  214. data/vendor/sass/lib/sass/shared.rb +0 -78
  215. data/vendor/sass/lib/sass/tree/charset_node.rb +0 -22
  216. data/vendor/sass/lib/sass/tree/comment_node.rb +0 -90
  217. data/vendor/sass/lib/sass/tree/debug_node.rb +0 -18
  218. data/vendor/sass/lib/sass/tree/directive_node.rb +0 -23
  219. data/vendor/sass/lib/sass/tree/each_node.rb +0 -24
  220. data/vendor/sass/lib/sass/tree/extend_node.rb +0 -29
  221. data/vendor/sass/lib/sass/tree/for_node.rb +0 -36
  222. data/vendor/sass/lib/sass/tree/function_node.rb +0 -27
  223. data/vendor/sass/lib/sass/tree/if_node.rb +0 -52
  224. data/vendor/sass/lib/sass/tree/import_node.rb +0 -68
  225. data/vendor/sass/lib/sass/tree/media_node.rb +0 -32
  226. data/vendor/sass/lib/sass/tree/mixin_def_node.rb +0 -27
  227. data/vendor/sass/lib/sass/tree/mixin_node.rb +0 -32
  228. data/vendor/sass/lib/sass/tree/node.rb +0 -201
  229. data/vendor/sass/lib/sass/tree/prop_node.rb +0 -148
  230. data/vendor/sass/lib/sass/tree/return_node.rb +0 -18
  231. data/vendor/sass/lib/sass/tree/root_node.rb +0 -28
  232. data/vendor/sass/lib/sass/tree/rule_node.rb +0 -136
  233. data/vendor/sass/lib/sass/tree/variable_node.rb +0 -30
  234. data/vendor/sass/lib/sass/tree/visitors/base.rb +0 -75
  235. data/vendor/sass/lib/sass/tree/visitors/check_nesting.rb +0 -133
  236. data/vendor/sass/lib/sass/tree/visitors/convert.rb +0 -260
  237. data/vendor/sass/lib/sass/tree/visitors/cssize.rb +0 -175
  238. data/vendor/sass/lib/sass/tree/visitors/deep_copy.rb +0 -87
  239. data/vendor/sass/lib/sass/tree/visitors/perform.rb +0 -332
  240. data/vendor/sass/lib/sass/tree/visitors/set_options.rb +0 -97
  241. data/vendor/sass/lib/sass/tree/visitors/to_css.rb +0 -210
  242. data/vendor/sass/lib/sass/tree/warn_node.rb +0 -18
  243. data/vendor/sass/lib/sass/tree/while_node.rb +0 -18
  244. data/vendor/sass/lib/sass/util.rb +0 -721
  245. data/vendor/sass/lib/sass/util/subset_map.rb +0 -101
  246. data/vendor/sass/lib/sass/version.rb +0 -112
  247. data/vendor/sass/rails/init.rb +0 -1
  248. data/vendor/sass/sass.gemspec +0 -33
  249. data/vendor/sass/test/Gemfile +0 -4
  250. data/vendor/sass/test/Gemfile.lock +0 -19
  251. data/vendor/sass/test/sass/cache_test.rb +0 -89
  252. data/vendor/sass/test/sass/callbacks_test.rb +0 -61
  253. data/vendor/sass/test/sass/conversion_test.rb +0 -1199
  254. data/vendor/sass/test/sass/css2sass_test.rb +0 -373
  255. data/vendor/sass/test/sass/data/hsl-rgb.txt +0 -319
  256. data/vendor/sass/test/sass/engine_test.rb +0 -2567
  257. data/vendor/sass/test/sass/extend_test.rb +0 -1348
  258. data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
  259. data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
  260. data/vendor/sass/test/sass/functions_test.rb +0 -1038
  261. data/vendor/sass/test/sass/importer_test.rb +0 -192
  262. data/vendor/sass/test/sass/less_conversion_test.rb +0 -653
  263. data/vendor/sass/test/sass/logger_test.rb +0 -58
  264. data/vendor/sass/test/sass/mock_importer.rb +0 -49
  265. data/vendor/sass/test/sass/more_results/more1.css +0 -9
  266. data/vendor/sass/test/sass/more_results/more1_with_line_comments.css +0 -26
  267. data/vendor/sass/test/sass/more_results/more_import.css +0 -29
  268. data/vendor/sass/test/sass/more_templates/_more_partial.sass +0 -2
  269. data/vendor/sass/test/sass/more_templates/more1.sass +0 -23
  270. data/vendor/sass/test/sass/more_templates/more_import.sass +0 -11
  271. data/vendor/sass/test/sass/plugin_test.rb +0 -472
  272. data/vendor/sass/test/sass/results/alt.css +0 -4
  273. data/vendor/sass/test/sass/results/basic.css +0 -9
  274. data/vendor/sass/test/sass/results/compact.css +0 -5
  275. data/vendor/sass/test/sass/results/complex.css +0 -86
  276. data/vendor/sass/test/sass/results/compressed.css +0 -1
  277. data/vendor/sass/test/sass/results/expanded.css +0 -19
  278. data/vendor/sass/test/sass/results/if.css +0 -3
  279. data/vendor/sass/test/sass/results/import.css +0 -31
  280. data/vendor/sass/test/sass/results/import_charset.css +0 -4
  281. data/vendor/sass/test/sass/results/import_charset_1_8.css +0 -4
  282. data/vendor/sass/test/sass/results/import_charset_ibm866.css +0 -4
  283. data/vendor/sass/test/sass/results/line_numbers.css +0 -49
  284. data/vendor/sass/test/sass/results/mixins.css +0 -95
  285. data/vendor/sass/test/sass/results/multiline.css +0 -24
  286. data/vendor/sass/test/sass/results/nested.css +0 -22
  287. data/vendor/sass/test/sass/results/options.css +0 -1
  288. data/vendor/sass/test/sass/results/parent_ref.css +0 -13
  289. data/vendor/sass/test/sass/results/script.css +0 -16
  290. data/vendor/sass/test/sass/results/scss_import.css +0 -31
  291. data/vendor/sass/test/sass/results/scss_importee.css +0 -2
  292. data/vendor/sass/test/sass/results/subdir/nested_subdir/nested_subdir.css +0 -1
  293. data/vendor/sass/test/sass/results/subdir/subdir.css +0 -3
  294. data/vendor/sass/test/sass/results/units.css +0 -11
  295. data/vendor/sass/test/sass/results/warn.css +0 -0
  296. data/vendor/sass/test/sass/results/warn_imported.css +0 -0
  297. data/vendor/sass/test/sass/script_conversion_test.rb +0 -285
  298. data/vendor/sass/test/sass/script_test.rb +0 -514
  299. data/vendor/sass/test/sass/scss/css_test.rb +0 -922
  300. data/vendor/sass/test/sass/scss/rx_test.rb +0 -156
  301. data/vendor/sass/test/sass/scss/scss_test.rb +0 -1273
  302. data/vendor/sass/test/sass/scss/test_helper.rb +0 -37
  303. data/vendor/sass/test/sass/templates/_imported_charset_ibm866.sass +0 -4
  304. data/vendor/sass/test/sass/templates/_imported_charset_utf8.sass +0 -4
  305. data/vendor/sass/test/sass/templates/_partial.sass +0 -2
  306. data/vendor/sass/test/sass/templates/alt.sass +0 -16
  307. data/vendor/sass/test/sass/templates/basic.sass +0 -23
  308. data/vendor/sass/test/sass/templates/bork1.sass +0 -2
  309. data/vendor/sass/test/sass/templates/bork2.sass +0 -2
  310. data/vendor/sass/test/sass/templates/bork3.sass +0 -2
  311. data/vendor/sass/test/sass/templates/bork4.sass +0 -2
  312. data/vendor/sass/test/sass/templates/bork5.sass +0 -3
  313. data/vendor/sass/test/sass/templates/compact.sass +0 -17
  314. data/vendor/sass/test/sass/templates/complex.sass +0 -305
  315. data/vendor/sass/test/sass/templates/compressed.sass +0 -15
  316. data/vendor/sass/test/sass/templates/expanded.sass +0 -17
  317. data/vendor/sass/test/sass/templates/if.sass +0 -11
  318. data/vendor/sass/test/sass/templates/import.sass +0 -12
  319. data/vendor/sass/test/sass/templates/import_charset.sass +0 -7
  320. data/vendor/sass/test/sass/templates/import_charset_1_8.sass +0 -4
  321. data/vendor/sass/test/sass/templates/import_charset_ibm866.sass +0 -9
  322. data/vendor/sass/test/sass/templates/importee.less +0 -2
  323. data/vendor/sass/test/sass/templates/importee.sass +0 -19
  324. data/vendor/sass/test/sass/templates/line_numbers.sass +0 -13
  325. data/vendor/sass/test/sass/templates/mixin_bork.sass +0 -5
  326. data/vendor/sass/test/sass/templates/mixins.sass +0 -76
  327. data/vendor/sass/test/sass/templates/multiline.sass +0 -20
  328. data/vendor/sass/test/sass/templates/nested.sass +0 -25
  329. data/vendor/sass/test/sass/templates/nested_bork1.sass +0 -2
  330. data/vendor/sass/test/sass/templates/nested_bork2.sass +0 -2
  331. data/vendor/sass/test/sass/templates/nested_bork3.sass +0 -2
  332. data/vendor/sass/test/sass/templates/nested_bork4.sass +0 -2
  333. data/vendor/sass/test/sass/templates/nested_bork5.sass +0 -2
  334. data/vendor/sass/test/sass/templates/nested_import.sass +0 -2
  335. data/vendor/sass/test/sass/templates/nested_mixin_bork.sass +0 -6
  336. data/vendor/sass/test/sass/templates/options.sass +0 -2
  337. data/vendor/sass/test/sass/templates/parent_ref.sass +0 -25
  338. data/vendor/sass/test/sass/templates/script.sass +0 -101
  339. data/vendor/sass/test/sass/templates/scss_import.scss +0 -11
  340. data/vendor/sass/test/sass/templates/scss_importee.scss +0 -1
  341. data/vendor/sass/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +0 -2
  342. data/vendor/sass/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +0 -3
  343. data/vendor/sass/test/sass/templates/subdir/subdir.sass +0 -6
  344. data/vendor/sass/test/sass/templates/units.sass +0 -11
  345. data/vendor/sass/test/sass/templates/warn.sass +0 -3
  346. data/vendor/sass/test/sass/templates/warn_imported.sass +0 -4
  347. data/vendor/sass/test/sass/test_helper.rb +0 -8
  348. data/vendor/sass/test/sass/util/subset_map_test.rb +0 -91
  349. data/vendor/sass/test/sass/util_test.rb +0 -266
  350. data/vendor/sass/test/test_helper.rb +0 -69
  351. data/vendor/sass/vendor/fssm/Gemfile +0 -3
  352. data/vendor/sass/vendor/fssm/LICENSE +0 -20
  353. data/vendor/sass/vendor/fssm/README.markdown +0 -83
  354. data/vendor/sass/vendor/fssm/Rakefile +0 -11
  355. data/vendor/sass/vendor/fssm/example.rb +0 -12
  356. data/vendor/sass/vendor/fssm/fssm.gemspec +0 -24
  357. data/vendor/sass/vendor/fssm/lib/fssm.rb +0 -37
  358. data/vendor/sass/vendor/fssm/lib/fssm/backends/fsevents.rb +0 -36
  359. data/vendor/sass/vendor/fssm/lib/fssm/backends/inotify.rb +0 -26
  360. data/vendor/sass/vendor/fssm/lib/fssm/backends/polling.rb +0 -25
  361. data/vendor/sass/vendor/fssm/lib/fssm/backends/rbfsevent.rb +0 -42
  362. data/vendor/sass/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +0 -131
  363. data/vendor/sass/vendor/fssm/lib/fssm/monitor.rb +0 -36
  364. data/vendor/sass/vendor/fssm/lib/fssm/path.rb +0 -94
  365. data/vendor/sass/vendor/fssm/lib/fssm/pathname.rb +0 -36
  366. data/vendor/sass/vendor/fssm/lib/fssm/state/directory.rb +0 -75
  367. data/vendor/sass/vendor/fssm/lib/fssm/state/file.rb +0 -24
  368. data/vendor/sass/vendor/fssm/lib/fssm/support.rb +0 -92
  369. data/vendor/sass/vendor/fssm/lib/fssm/tree.rb +0 -176
  370. data/vendor/sass/vendor/fssm/lib/fssm/version.rb +0 -3
  371. data/vendor/sass/vendor/fssm/profile/prof-cache.rb +0 -40
  372. data/vendor/sass/vendor/fssm/profile/prof-fssm-pathname.html +0 -1231
  373. data/vendor/sass/vendor/fssm/profile/prof-pathname-rubinius.rb +0 -35
  374. data/vendor/sass/vendor/fssm/profile/prof-pathname.rb +0 -68
  375. data/vendor/sass/vendor/fssm/profile/prof-plain-pathname.html +0 -988
  376. data/vendor/sass/vendor/fssm/profile/prof.html +0 -2379
  377. data/vendor/sass/vendor/fssm/spec/count_down_latch.rb +0 -151
  378. data/vendor/sass/vendor/fssm/spec/monitor_spec.rb +0 -202
  379. data/vendor/sass/vendor/fssm/spec/path_spec.rb +0 -96
  380. data/vendor/sass/vendor/fssm/spec/root/duck/quack.txt +0 -0
  381. data/vendor/sass/vendor/fssm/spec/root/file.css +0 -0
  382. data/vendor/sass/vendor/fssm/spec/root/file.rb +0 -0
  383. data/vendor/sass/vendor/fssm/spec/root/file.yml +0 -0
  384. data/vendor/sass/vendor/fssm/spec/root/moo/cow.txt +0 -0
  385. data/vendor/sass/vendor/fssm/spec/spec_helper.rb +0 -14
  386. data/vendor/sass/yard/callbacks.rb +0 -29
  387. data/vendor/sass/yard/default/fulldoc/html/css/common.sass +0 -26
  388. data/vendor/sass/yard/default/layout/html/footer.erb +0 -12
  389. data/vendor/sass/yard/inherited_hash.rb +0 -41
@@ -1,58 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.dirname(__FILE__) + '/../test_helper'
3
- require 'pathname'
4
-
5
- class LoggerTest < Test::Unit::TestCase
6
-
7
- class InterceptedLogger < Sass::Logger::Base
8
-
9
- attr_accessor :messages
10
-
11
- def initialize(*args)
12
- super
13
- self.messages = []
14
- end
15
-
16
- def reset!
17
- self.messages = []
18
- end
19
-
20
- def _log(*args)
21
- messages << [args]
22
- end
23
-
24
- end
25
-
26
- def test_global_sass_logger_instance_exists
27
- assert Sass.logger.respond_to?(:warn)
28
- end
29
-
30
- def test_log_level_orders
31
- logged_levels = {
32
- :trace => [ [], [:trace, :debug, :info, :warn, :error]],
33
- :debug => [ [:trace], [:debug, :info, :warn, :error]],
34
- :info => [ [:trace, :debug], [:info, :warn, :error]],
35
- :warn => [ [:trace, :debug, :info], [:warn, :error]],
36
- :error => [ [:trace, :debug, :info, :warn], [:error]]
37
- }
38
- logged_levels.each do |level, (should_not_be_logged, should_be_logged)|
39
- logger = Sass::Logger::Base.new(level)
40
- should_not_be_logged.each do |should_level|
41
- assert !logger.logging_level?(should_level)
42
- end
43
- should_be_logged.each do |should_level|
44
- assert logger.logging_level?(should_level)
45
- end
46
- end
47
- end
48
-
49
- def test_logging_can_be_disabled
50
- logger = InterceptedLogger.new
51
- logger.error("message #1")
52
- assert_equal 1, logger.messages.size
53
- logger.reset!
54
- logger.disabled = true
55
- logger.error("message #2")
56
- assert_equal 0, logger.messages.size
57
- end
58
- end
@@ -1,49 +0,0 @@
1
- class MockImporter < Sass::Importers::Base
2
- def initialize(name = "mock")
3
- @name = name
4
- @imports = Hash.new({})
5
- end
6
-
7
- def find_relative(uri, base, options)
8
- nil
9
- end
10
-
11
- def find(uri, options)
12
- contents = @imports[uri][:contents]
13
- return unless contents
14
- options[:syntax] = @imports[uri][:syntax]
15
- options[:filename] = uri
16
- options[:importer] = self
17
- @imports[uri][:engine] = Sass::Engine.new(contents, options)
18
- end
19
-
20
- def mtime(uri, options)
21
- @imports[uri][:mtime]
22
- end
23
-
24
- def key(uri, options)
25
- ["mock", uri]
26
- end
27
-
28
- def to_s
29
- @name
30
- end
31
-
32
- # Methods for testing
33
-
34
- def add_import(uri, contents, syntax = :scss, mtime = Time.now - 10)
35
- @imports[uri] = {
36
- :contents => contents,
37
- :mtime => mtime,
38
- :syntax => syntax
39
- }
40
- end
41
-
42
- def touch(uri)
43
- @imports[uri][:mtime] = Time.now
44
- end
45
-
46
- def engine(uri)
47
- @imports[uri][:engine]
48
- end
49
- end
@@ -1,9 +0,0 @@
1
- body { font: Arial; background: blue; }
2
-
3
- #page { width: 700px; height: 100; }
4
- #page #header { height: 300px; }
5
- #page #header h1 { font-size: 50px; color: blue; }
6
-
7
- #content.user.show #container.top #column.left { width: 100px; }
8
- #content.user.show #container.top #column.right { width: 600px; }
9
- #content.user.show #container.bottom { background: brown; }
@@ -1,26 +0,0 @@
1
- /* line 3, ../more_templates/more1.sass */
2
- body {
3
- font: Arial;
4
- background: blue; }
5
-
6
- /* line 7, ../more_templates/more1.sass */
7
- #page {
8
- width: 700px;
9
- height: 100; }
10
- /* line 10, ../more_templates/more1.sass */
11
- #page #header {
12
- height: 300px; }
13
- /* line 12, ../more_templates/more1.sass */
14
- #page #header h1 {
15
- font-size: 50px;
16
- color: blue; }
17
-
18
- /* line 18, ../more_templates/more1.sass */
19
- #content.user.show #container.top #column.left {
20
- width: 100px; }
21
- /* line 20, ../more_templates/more1.sass */
22
- #content.user.show #container.top #column.right {
23
- width: 600px; }
24
- /* line 22, ../more_templates/more1.sass */
25
- #content.user.show #container.bottom {
26
- background: brown; }
@@ -1,29 +0,0 @@
1
- imported { otherconst: hello; myconst: goodbye; pre-mixin: here; }
2
-
3
- body { font: Arial; background: blue; }
4
-
5
- #page { width: 700px; height: 100; }
6
- #page #header { height: 300px; }
7
- #page #header h1 { font-size: 50px; color: blue; }
8
-
9
- #content.user.show #container.top #column.left { width: 100px; }
10
- #content.user.show #container.top #column.right { width: 600px; }
11
- #content.user.show #container.bottom { background: brown; }
12
-
13
- midrule { inthe: middle; }
14
-
15
- body { font: Arial; background: blue; }
16
-
17
- #page { width: 700px; height: 100; }
18
- #page #header { height: 300px; }
19
- #page #header h1 { font-size: 50px; color: blue; }
20
-
21
- #content.user.show #container.top #column.left { width: 100px; }
22
- #content.user.show #container.top #column.right { width: 600px; }
23
- #content.user.show #container.bottom { background: brown; }
24
-
25
- @import url(basic.css);
26
- @import url(../results/complex.css);
27
- #foo { background-color: #bbaaff; }
28
-
29
- nonimported { myconst: hello; otherconst: goodbye; post-mixin: here; }
@@ -1,2 +0,0 @@
1
- #foo
2
- :background-color #baf
@@ -1,23 +0,0 @@
1
-
2
-
3
- body
4
- :font Arial
5
- :background blue
6
-
7
- #page
8
- :width 700px
9
- :height 100
10
- #header
11
- :height 300px
12
- h1
13
- :font-size 50px
14
- :color blue
15
-
16
- #content.user.show
17
- #container.top
18
- #column.left
19
- :width 100px
20
- #column.right
21
- :width 600px
22
- #container.bottom
23
- :background brown
@@ -1,11 +0,0 @@
1
- $preconst: hello
2
-
3
- =premixin
4
- pre-mixin: here
5
-
6
- @import importee, basic, basic.css, ../results/complex.css, more_partial
7
-
8
- nonimported
9
- :myconst $preconst
10
- :otherconst $postconst
11
- +postmixin
@@ -1,472 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.dirname(__FILE__) + '/../test_helper'
3
- require File.dirname(__FILE__) + '/test_helper'
4
- require 'sass/plugin'
5
- require 'fileutils'
6
-
7
- class SassPluginTest < Test::Unit::TestCase
8
- @@templates = %w{
9
- complex script parent_ref import scss_import alt
10
- subdir/subdir subdir/nested_subdir/nested_subdir
11
- options
12
- }
13
- @@templates += %w[import_charset import_charset_ibm866] unless Sass::Util.ruby1_8?
14
- @@templates << 'import_charset_1_8' if Sass::Util.ruby1_8?
15
-
16
- @@cache_store = Sass::CacheStores::Memory.new
17
-
18
- def setup
19
- FileUtils.mkdir_p tempfile_loc
20
- FileUtils.mkdir_p tempfile_loc(nil,"more_")
21
- set_plugin_opts
22
- check_for_updates!
23
- reset_mtimes
24
- end
25
-
26
- def teardown
27
- clean_up_sassc
28
- Sass::Plugin.reset!
29
- FileUtils.rm_r tempfile_loc
30
- FileUtils.rm_r tempfile_loc(nil,"more_")
31
- end
32
-
33
- @@templates.each do |name|
34
- define_method("test_template_renders_correctly (#{name})") do
35
- assert_renders_correctly(name)
36
- end
37
- end
38
-
39
- def test_no_update
40
- File.delete(tempfile_loc('basic'))
41
- assert_needs_update 'basic'
42
- check_for_updates!
43
- assert_stylesheet_updated 'basic'
44
- end
45
-
46
- def test_update_needed_when_modified
47
- touch 'basic'
48
- assert_needs_update 'basic'
49
- check_for_updates!
50
- assert_stylesheet_updated 'basic'
51
- end
52
-
53
- def test_update_needed_when_dependency_modified
54
- touch 'basic'
55
- assert_needs_update 'import'
56
- check_for_updates!
57
- assert_stylesheet_updated 'basic'
58
- assert_stylesheet_updated 'import'
59
- end
60
-
61
- def test_update_needed_when_scss_dependency_modified
62
- touch 'scss_importee'
63
- assert_needs_update 'import'
64
- check_for_updates!
65
- assert_stylesheet_updated 'scss_importee'
66
- assert_stylesheet_updated 'import'
67
- end
68
-
69
- def test_scss_update_needed_when_dependency_modified
70
- touch 'basic'
71
- assert_needs_update 'scss_import'
72
- check_for_updates!
73
- assert_stylesheet_updated 'basic'
74
- assert_stylesheet_updated 'scss_import'
75
- end
76
-
77
- def test_update_needed_when_nested_import_dependency_modified
78
- touch 'basic'
79
- assert_needs_update 'nested_import'
80
- check_for_updates!
81
- assert_stylesheet_updated 'basic'
82
- assert_stylesheet_updated 'scss_import'
83
- end
84
-
85
- def test_no_updates_when_always_check_and_always_update_both_false
86
- Sass::Plugin.options[:always_update] = false
87
- Sass::Plugin.options[:always_check] = false
88
-
89
- touch 'basic'
90
- assert_needs_update 'basic'
91
- check_for_updates!
92
-
93
- # Check it's still stale
94
- assert_needs_update 'basic'
95
- end
96
-
97
- def test_full_exception_handling
98
- File.delete(tempfile_loc('bork1'))
99
- check_for_updates!
100
- File.open(tempfile_loc('bork1')) do |file|
101
- assert_equal(<<CSS.strip, file.read.split("\n")[0...6].join("\n"))
102
- /*
103
- Syntax error: Undefined variable: "$bork".
104
- on line 2 of #{template_loc('bork1')}
105
-
106
- 1: bork
107
- 2: :bork $bork
108
- CSS
109
- end
110
- File.delete(tempfile_loc('bork1'))
111
- end
112
-
113
- def test_nonfull_exception_handling
114
- old_full_exception = Sass::Plugin.options[:full_exception]
115
- Sass::Plugin.options[:full_exception] = false
116
-
117
- File.delete(tempfile_loc('bork1'))
118
- assert_raise(Sass::SyntaxError) {check_for_updates!}
119
- ensure
120
- Sass::Plugin.options[:full_exception] = old_full_exception
121
- end
122
-
123
- def test_two_template_directories
124
- set_plugin_opts :template_location => {
125
- template_loc => tempfile_loc,
126
- template_loc(nil,'more_') => tempfile_loc(nil,'more_')
127
- }
128
- check_for_updates!
129
- ['more1', 'more_import'].each { |name| assert_renders_correctly(name, :prefix => 'more_') }
130
- end
131
-
132
- def test_two_template_directories_with_line_annotations
133
- set_plugin_opts :line_comments => true,
134
- :style => :nested,
135
- :template_location => {
136
- template_loc => tempfile_loc,
137
- template_loc(nil,'more_') => tempfile_loc(nil,'more_')
138
- }
139
- check_for_updates!
140
- assert_renders_correctly('more1_with_line_comments', 'more1', :prefix => 'more_')
141
- end
142
-
143
- def test_doesnt_render_partials
144
- assert !File.exists?(tempfile_loc('_partial'))
145
- end
146
-
147
- def test_template_location_array
148
- assert_equal [[template_loc, tempfile_loc]], Sass::Plugin.template_location_array
149
- end
150
-
151
- def test_add_template_location
152
- Sass::Plugin.add_template_location(template_loc(nil, "more_"), tempfile_loc(nil, "more_"))
153
- assert_equal(
154
- [[template_loc, tempfile_loc], [template_loc(nil, "more_"), tempfile_loc(nil, "more_")]],
155
- Sass::Plugin.template_location_array)
156
-
157
- touch 'more1', 'more_'
158
- touch 'basic'
159
- assert_needs_update "more1", "more_"
160
- assert_needs_update "basic"
161
- check_for_updates!
162
- assert_doesnt_need_update "more1", "more_"
163
- assert_doesnt_need_update "basic"
164
- end
165
-
166
- def test_remove_template_location
167
- Sass::Plugin.add_template_location(template_loc(nil, "more_"), tempfile_loc(nil, "more_"))
168
- Sass::Plugin.remove_template_location(template_loc, tempfile_loc)
169
- assert_equal(
170
- [[template_loc(nil, "more_"), tempfile_loc(nil, "more_")]],
171
- Sass::Plugin.template_location_array)
172
-
173
- touch 'more1', 'more_'
174
- touch 'basic'
175
- assert_needs_update "more1", "more_"
176
- assert_needs_update "basic"
177
- check_for_updates!
178
- assert_doesnt_need_update "more1", "more_"
179
- assert_needs_update "basic"
180
- end
181
-
182
- # Callbacks
183
-
184
- def test_updating_stylesheets_callback
185
- # Should run even when there's nothing to update
186
- Sass::Plugin.options[:template_location] = nil
187
- assert_callback :updating_stylesheets, []
188
- end
189
-
190
- def test_updating_stylesheets_callback_with_individual_files
191
- files = [[template_loc("basic"), tempfile_loc("basic")]]
192
- assert_callback(:updating_stylesheets, files) {Sass::Util.silence_sass_warnings{Sass::Plugin.update_stylesheets(files)}}
193
- end
194
-
195
- def test_updating_stylesheets_callback_with_never_update
196
- Sass::Plugin.options[:never_update] = true
197
- assert_no_callback :updating_stylesheets
198
- end
199
-
200
- def test_updated_stylesheet_callback_for_updated_template
201
- Sass::Plugin.options[:always_update] = false
202
- touch 'basic'
203
- assert_no_callback :updated_stylesheet, template_loc("complex"), tempfile_loc("complex") do
204
- assert_callbacks(
205
- [:updated_stylesheet, template_loc("basic"), tempfile_loc("basic")],
206
- [:updated_stylesheet, template_loc("import"), tempfile_loc("import")])
207
- end
208
- end
209
-
210
- def test_updated_stylesheet_callback_for_fresh_template
211
- Sass::Plugin.options[:always_update] = false
212
- assert_no_callback :updated_stylesheet
213
- end
214
-
215
- def test_updated_stylesheet_callback_for_error_template
216
- Sass::Plugin.options[:always_update] = false
217
- touch 'bork1'
218
- assert_no_callback :updated_stylesheet
219
- end
220
-
221
- def test_not_updating_stylesheet_callback_for_fresh_template
222
- Sass::Plugin.options[:always_update] = false
223
- assert_callback :not_updating_stylesheet, template_loc("basic"), tempfile_loc("basic")
224
- end
225
-
226
- def test_not_updating_stylesheet_callback_for_updated_template
227
- Sass::Plugin.options[:always_update] = false
228
- assert_callback :not_updating_stylesheet, template_loc("complex"), tempfile_loc("complex") do
229
- assert_no_callbacks(
230
- [:updated_stylesheet, template_loc("basic"), tempfile_loc("basic")],
231
- [:updated_stylesheet, template_loc("import"), tempfile_loc("import")])
232
- end
233
- end
234
-
235
- def test_not_updating_stylesheet_callback_with_never_update
236
- Sass::Plugin.options[:never_update] = true
237
- assert_no_callback :not_updating_stylesheet
238
- end
239
-
240
- def test_not_updating_stylesheet_callback_for_partial
241
- Sass::Plugin.options[:always_update] = false
242
- assert_no_callback :not_updating_stylesheet, template_loc("_partial"), tempfile_loc("_partial")
243
- end
244
-
245
- def test_not_updating_stylesheet_callback_for_error
246
- Sass::Plugin.options[:always_update] = false
247
- touch 'bork1'
248
- assert_no_callback :not_updating_stylesheet, template_loc("bork1"), tempfile_loc("bork1")
249
- end
250
-
251
- def test_compilation_error_callback
252
- Sass::Plugin.options[:always_update] = false
253
- touch 'bork1'
254
- assert_callback(:compilation_error,
255
- lambda {|e| e.message == 'Undefined variable: "$bork".'},
256
- template_loc("bork1"), tempfile_loc("bork1"))
257
- end
258
-
259
- def test_compilation_error_callback_for_file_access
260
- Sass::Plugin.options[:always_update] = false
261
- assert_callback(:compilation_error,
262
- lambda {|e| e.is_a?(Errno::ENOENT)},
263
- template_loc("nonexistent"), tempfile_loc("nonexistent")) do
264
- Sass::Plugin.update_stylesheets([[template_loc("nonexistent"), tempfile_loc("nonexistent")]])
265
- end
266
- end
267
-
268
- def test_creating_directory_callback
269
- Sass::Plugin.options[:always_update] = false
270
- dir = File.join(tempfile_loc, "subdir", "nested_subdir")
271
- FileUtils.rm_r dir
272
- assert_callback :creating_directory, dir
273
- end
274
-
275
- ## Regression
276
-
277
- def test_cached_dependencies_update
278
- FileUtils.mv(template_loc("basic"), template_loc("basic", "more_"))
279
- set_plugin_opts :load_paths => [template_loc(nil, "more_")]
280
-
281
- touch 'basic', 'more_'
282
- assert_needs_update "import"
283
- check_for_updates!
284
- assert_renders_correctly("import")
285
- ensure
286
- FileUtils.mv(template_loc("basic", "more_"), template_loc("basic"))
287
- end
288
-
289
- def test_cached_relative_import
290
- old_always_update = Sass::Plugin.options[:always_update]
291
- Sass::Plugin.options[:always_update] = true
292
- check_for_updates!
293
- assert_renders_correctly('subdir/subdir')
294
- ensure
295
- Sass::Plugin.options[:always_update] = old_always_update
296
- end
297
-
298
- def test_cached_if
299
- set_plugin_opts :cache_store => Sass::CacheStores::Filesystem.new(tempfile_loc + '/cache')
300
- check_for_updates!
301
- assert_renders_correctly 'if'
302
- check_for_updates!
303
- assert_renders_correctly 'if'
304
- ensure
305
- set_plugin_opts :cache_store => @@cache_store
306
- end
307
-
308
- private
309
-
310
- def assert_renders_correctly(*arguments)
311
- options = arguments.last.is_a?(Hash) ? arguments.pop : {}
312
- prefix = options[:prefix]
313
- result_name = arguments.shift
314
- tempfile_name = arguments.shift || result_name
315
-
316
- expected_str = File.read(result_loc(result_name, prefix))
317
- actual_str = File.read(tempfile_loc(tempfile_name, prefix))
318
- unless Sass::Util.ruby1_8?
319
- expected_str = expected_str.force_encoding('IBM866') if result_name == 'import_charset_ibm866'
320
- actual_str = actual_str.force_encoding('IBM866') if tempfile_name == 'import_charset_ibm866'
321
- end
322
- expected_lines = expected_str.split("\n")
323
- actual_lines = actual_str.split("\n")
324
-
325
- if actual_lines.first == "/*" && expected_lines.first != "/*"
326
- assert(false, actual_lines[0..Sass::Util.enum_with_index(actual_lines).find {|l, i| l == "*/"}.last].join("\n"))
327
- end
328
-
329
- expected_lines.zip(actual_lines).each_with_index do |pair, line|
330
- message = "template: #{result_name}\nline: #{line + 1}"
331
- assert_equal(pair.first, pair.last, message)
332
- end
333
- if expected_lines.size < actual_lines.size
334
- assert(false, "#{actual_lines.size - expected_lines.size} Trailing lines found in #{tempfile_name}.css: #{actual_lines[expected_lines.size..-1].join('\n')}")
335
- end
336
- end
337
-
338
- def assert_stylesheet_updated(name)
339
- assert_doesnt_need_update name
340
-
341
- # Make sure it isn't an exception
342
- expected_lines = File.read(result_loc(name)).split("\n")
343
- actual_lines = File.read(tempfile_loc(name)).split("\n")
344
- if actual_lines.first == "/*" && expected_lines.first != "/*"
345
- assert(false, actual_lines[0..actual_lines.enum_with_index.find {|l, i| l == "*/"}.last].join("\n"))
346
- end
347
- end
348
-
349
- def assert_callback(name, *expected_args)
350
- run = false
351
- received_args = nil
352
- Sass::Plugin.send("on_#{name}") do |*args|
353
- received_args = args
354
- run ||= expected_args.zip(received_args).all? do |ea, ra|
355
- ea.respond_to?(:call) ? ea.call(ra) : ea == ra
356
- end
357
- end
358
-
359
- if block_given?
360
- yield
361
- else
362
- check_for_updates!
363
- end
364
-
365
- assert run, "Expected #{name} callback to be run with arguments:\n #{expected_args.inspect}\nHowever, it got:\n #{received_args.inspect}"
366
- end
367
-
368
- def assert_no_callback(name, *unexpected_args)
369
- Sass::Plugin.send("on_#{name}") do |*a|
370
- next unless unexpected_args.empty? || a == unexpected_args
371
-
372
- msg = "Expected #{name} callback not to be run"
373
- if !unexpected_args.empty?
374
- msg << " with arguments #{unexpected_args.inspect}"
375
- elsif !a.empty?
376
- msg << ",\n was run with arguments #{a.inspect}"
377
- end
378
-
379
- flunk msg
380
- end
381
-
382
- if block_given?
383
- yield
384
- else
385
- check_for_updates!
386
- end
387
- end
388
-
389
- def assert_callbacks(*args)
390
- return check_for_updates! if args.empty?
391
- assert_callback(*args.pop) {assert_callbacks(*args)}
392
- end
393
-
394
- def assert_no_callbacks(*args)
395
- return check_for_updates! if args.empty?
396
- assert_no_callback(*args.pop) {assert_no_callbacks(*args)}
397
- end
398
-
399
- def check_for_updates!
400
- Sass::Util.silence_sass_warnings do
401
- Sass::Plugin.check_for_updates
402
- end
403
- end
404
-
405
- def assert_needs_update(*args)
406
- assert(Sass::Plugin::StalenessChecker.stylesheet_needs_update?(tempfile_loc(*args), template_loc(*args)),
407
- "Expected #{template_loc(*args)} to need an update.")
408
- end
409
-
410
- def assert_doesnt_need_update(*args)
411
- assert(!Sass::Plugin::StalenessChecker.stylesheet_needs_update?(tempfile_loc(*args), template_loc(*args)),
412
- "Expected #{template_loc(*args)} not to need an update.")
413
- end
414
-
415
- def touch(*args)
416
- FileUtils.touch(template_loc(*args))
417
- end
418
-
419
- def reset_mtimes
420
- Sass::Plugin::StalenessChecker.dependencies_cache = {}
421
- atime = Time.now
422
- mtime = Time.now - 5
423
- Dir["{#{template_loc},#{tempfile_loc}}/**/*.{css,sass,scss}"].each {|f| File.utime(atime, mtime, f)}
424
- end
425
-
426
- def template_loc(name = nil, prefix = nil)
427
- if name
428
- scss = absolutize "#{prefix}templates/#{name}.scss"
429
- File.exists?(scss) ? scss : absolutize("#{prefix}templates/#{name}.sass")
430
- else
431
- absolutize "#{prefix}templates"
432
- end
433
- end
434
-
435
- def tempfile_loc(name = nil, prefix = nil)
436
- if name
437
- absolutize "#{prefix}tmp/#{name}.css"
438
- else
439
- absolutize "#{prefix}tmp"
440
- end
441
- end
442
-
443
- def result_loc(name = nil, prefix = nil)
444
- if name
445
- absolutize "#{prefix}results/#{name}.css"
446
- else
447
- absolutize "#{prefix}results"
448
- end
449
- end
450
-
451
- def set_plugin_opts(overrides = {})
452
- Sass::Plugin.options.merge!(
453
- :template_location => template_loc,
454
- :css_location => tempfile_loc,
455
- :style => :compact,
456
- :always_update => true,
457
- :never_update => false,
458
- :full_exception => true,
459
- :cache_store => @@cache_store
460
- )
461
- Sass::Plugin.options.merge!(overrides)
462
- end
463
- end
464
-
465
- class Sass::Engine
466
- alias_method :old_render, :render
467
-
468
- def render
469
- raise "bork bork bork!" if @template[0] == "{bork now!}"
470
- old_render
471
- end
472
- end