oreorenasass 3.4.4 → 3.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +50 -70
  4. data/Rakefile +5 -26
  5. data/VERSION +1 -1
  6. data/VERSION_NAME +1 -1
  7. data/bin/sass +1 -1
  8. data/bin/scss +1 -1
  9. data/lib/sass.rb +12 -19
  10. data/lib/sass/cache_stores/base.rb +2 -2
  11. data/lib/sass/cache_stores/chain.rb +1 -2
  12. data/lib/sass/cache_stores/filesystem.rb +5 -1
  13. data/lib/sass/cache_stores/memory.rb +1 -1
  14. data/lib/sass/cache_stores/null.rb +2 -2
  15. data/lib/sass/callbacks.rb +0 -1
  16. data/lib/sass/css.rb +13 -11
  17. data/lib/sass/engine.rb +173 -424
  18. data/lib/sass/environment.rb +58 -148
  19. data/lib/sass/error.rb +14 -11
  20. data/lib/sass/exec.rb +703 -5
  21. data/lib/sass/importers/base.rb +6 -49
  22. data/lib/sass/importers/filesystem.rb +19 -44
  23. data/lib/sass/logger.rb +4 -1
  24. data/lib/sass/logger/base.rb +4 -2
  25. data/lib/sass/logger/log_level.rb +7 -3
  26. data/lib/sass/media.rb +23 -20
  27. data/lib/sass/plugin.rb +7 -7
  28. data/lib/sass/plugin/compiler.rb +145 -304
  29. data/lib/sass/plugin/configuration.rb +23 -18
  30. data/lib/sass/plugin/merb.rb +1 -1
  31. data/lib/sass/plugin/staleness_checker.rb +3 -3
  32. data/lib/sass/repl.rb +3 -3
  33. data/lib/sass/script.rb +8 -35
  34. data/lib/sass/script/{value/arg_list.rb → arg_list.rb} +25 -9
  35. data/lib/sass/script/bool.rb +18 -0
  36. data/lib/sass/script/color.rb +606 -0
  37. data/lib/sass/script/css_lexer.rb +4 -8
  38. data/lib/sass/script/css_parser.rb +2 -5
  39. data/lib/sass/script/funcall.rb +245 -0
  40. data/lib/sass/script/functions.rb +408 -1491
  41. data/lib/sass/script/interpolation.rb +79 -0
  42. data/lib/sass/script/lexer.rb +68 -172
  43. data/lib/sass/script/list.rb +85 -0
  44. data/lib/sass/script/literal.rb +221 -0
  45. data/lib/sass/script/{tree/node.rb → node.rb} +12 -22
  46. data/lib/sass/script/{value/null.rb → null.rb} +7 -14
  47. data/lib/sass/script/{value/number.rb → number.rb} +75 -152
  48. data/lib/sass/script/{tree/operation.rb → operation.rb} +24 -17
  49. data/lib/sass/script/parser.rb +110 -245
  50. data/lib/sass/script/string.rb +51 -0
  51. data/lib/sass/script/{tree/string_interpolation.rb → string_interpolation.rb} +4 -5
  52. data/lib/sass/script/{tree/unary_operation.rb → unary_operation.rb} +6 -6
  53. data/lib/sass/script/variable.rb +58 -0
  54. data/lib/sass/scss/css_parser.rb +3 -9
  55. data/lib/sass/scss/parser.rb +421 -450
  56. data/lib/sass/scss/rx.rb +11 -19
  57. data/lib/sass/scss/static_parser.rb +7 -321
  58. data/lib/sass/selector.rb +194 -68
  59. data/lib/sass/selector/abstract_sequence.rb +14 -29
  60. data/lib/sass/selector/comma_sequence.rb +25 -108
  61. data/lib/sass/selector/sequence.rb +66 -159
  62. data/lib/sass/selector/simple.rb +25 -23
  63. data/lib/sass/selector/simple_sequence.rb +63 -173
  64. data/lib/sass/shared.rb +1 -1
  65. data/lib/sass/supports.rb +15 -13
  66. data/lib/sass/tree/charset_node.rb +1 -1
  67. data/lib/sass/tree/comment_node.rb +3 -3
  68. data/lib/sass/tree/css_import_node.rb +11 -11
  69. data/lib/sass/tree/debug_node.rb +2 -2
  70. data/lib/sass/tree/directive_node.rb +4 -21
  71. data/lib/sass/tree/each_node.rb +8 -8
  72. data/lib/sass/tree/extend_node.rb +7 -14
  73. data/lib/sass/tree/for_node.rb +4 -4
  74. data/lib/sass/tree/function_node.rb +4 -9
  75. data/lib/sass/tree/if_node.rb +1 -1
  76. data/lib/sass/tree/import_node.rb +5 -4
  77. data/lib/sass/tree/media_node.rb +14 -4
  78. data/lib/sass/tree/mixin_def_node.rb +4 -4
  79. data/lib/sass/tree/mixin_node.rb +8 -21
  80. data/lib/sass/tree/node.rb +12 -54
  81. data/lib/sass/tree/prop_node.rb +20 -39
  82. data/lib/sass/tree/return_node.rb +2 -3
  83. data/lib/sass/tree/root_node.rb +3 -19
  84. data/lib/sass/tree/rule_node.rb +22 -35
  85. data/lib/sass/tree/supports_node.rb +13 -0
  86. data/lib/sass/tree/trace_node.rb +1 -2
  87. data/lib/sass/tree/variable_node.rb +3 -9
  88. data/lib/sass/tree/visitors/base.rb +8 -5
  89. data/lib/sass/tree/visitors/check_nesting.rb +19 -49
  90. data/lib/sass/tree/visitors/convert.rb +56 -74
  91. data/lib/sass/tree/visitors/cssize.rb +74 -202
  92. data/lib/sass/tree/visitors/deep_copy.rb +5 -10
  93. data/lib/sass/tree/visitors/extend.rb +7 -7
  94. data/lib/sass/tree/visitors/perform.rb +185 -278
  95. data/lib/sass/tree/visitors/set_options.rb +6 -20
  96. data/lib/sass/tree/visitors/to_css.rb +81 -234
  97. data/lib/sass/tree/warn_node.rb +2 -2
  98. data/lib/sass/tree/while_node.rb +2 -2
  99. data/lib/sass/util.rb +152 -522
  100. data/lib/sass/util/multibyte_string_scanner.rb +0 -2
  101. data/lib/sass/util/subset_map.rb +3 -4
  102. data/lib/sass/util/test.rb +1 -0
  103. data/lib/sass/version.rb +22 -20
  104. data/test/Gemfile +3 -0
  105. data/test/Gemfile.lock +10 -0
  106. data/test/sass/cache_test.rb +20 -62
  107. data/test/sass/callbacks_test.rb +1 -1
  108. data/test/sass/conversion_test.rb +2 -296
  109. data/test/sass/css2sass_test.rb +4 -23
  110. data/test/sass/engine_test.rb +354 -411
  111. data/test/sass/exec_test.rb +2 -2
  112. data/test/sass/extend_test.rb +145 -324
  113. data/test/sass/functions_test.rb +86 -873
  114. data/test/sass/importer_test.rb +21 -241
  115. data/test/sass/logger_test.rb +1 -1
  116. data/test/sass/more_results/more_import.css +1 -1
  117. data/test/sass/plugin_test.rb +26 -16
  118. data/test/sass/results/compact.css +1 -1
  119. data/test/sass/results/complex.css +4 -4
  120. data/test/sass/results/expanded.css +1 -1
  121. data/test/sass/results/import.css +1 -1
  122. data/test/sass/results/import_charset_ibm866.css +2 -2
  123. data/test/sass/results/mixins.css +17 -17
  124. data/test/sass/results/nested.css +1 -1
  125. data/test/sass/results/parent_ref.css +2 -2
  126. data/test/sass/results/script.css +3 -3
  127. data/test/sass/results/scss_import.css +1 -1
  128. data/test/sass/script_conversion_test.rb +7 -36
  129. data/test/sass/script_test.rb +53 -485
  130. data/test/sass/scss/css_test.rb +28 -143
  131. data/test/sass/scss/rx_test.rb +4 -4
  132. data/test/sass/scss/scss_test.rb +325 -2119
  133. data/test/sass/templates/scss_import.scss +1 -2
  134. data/test/sass/test_helper.rb +1 -1
  135. data/test/sass/util/multibyte_string_scanner_test.rb +1 -1
  136. data/test/sass/util/subset_map_test.rb +2 -2
  137. data/test/sass/util_test.rb +1 -86
  138. data/test/test_helper.rb +8 -37
  139. metadata +19 -66
  140. data/lib/sass/exec/base.rb +0 -187
  141. data/lib/sass/exec/sass_convert.rb +0 -264
  142. data/lib/sass/exec/sass_scss.rb +0 -424
  143. data/lib/sass/features.rb +0 -47
  144. data/lib/sass/script/tree.rb +0 -16
  145. data/lib/sass/script/tree/funcall.rb +0 -306
  146. data/lib/sass/script/tree/interpolation.rb +0 -118
  147. data/lib/sass/script/tree/list_literal.rb +0 -77
  148. data/lib/sass/script/tree/literal.rb +0 -45
  149. data/lib/sass/script/tree/map_literal.rb +0 -64
  150. data/lib/sass/script/tree/selector.rb +0 -26
  151. data/lib/sass/script/tree/variable.rb +0 -57
  152. data/lib/sass/script/value.rb +0 -11
  153. data/lib/sass/script/value/base.rb +0 -240
  154. data/lib/sass/script/value/bool.rb +0 -35
  155. data/lib/sass/script/value/color.rb +0 -680
  156. data/lib/sass/script/value/helpers.rb +0 -262
  157. data/lib/sass/script/value/list.rb +0 -113
  158. data/lib/sass/script/value/map.rb +0 -70
  159. data/lib/sass/script/value/string.rb +0 -97
  160. data/lib/sass/selector/pseudo.rb +0 -256
  161. data/lib/sass/source/map.rb +0 -210
  162. data/lib/sass/source/position.rb +0 -39
  163. data/lib/sass/source/range.rb +0 -41
  164. data/lib/sass/stack.rb +0 -120
  165. data/lib/sass/tree/at_root_node.rb +0 -83
  166. data/lib/sass/tree/error_node.rb +0 -18
  167. data/lib/sass/tree/keyframe_rule_node.rb +0 -15
  168. data/lib/sass/util/cross_platform_random.rb +0 -19
  169. data/lib/sass/util/normalized_map.rb +0 -130
  170. data/lib/sass/util/ordered_hash.rb +0 -192
  171. data/test/sass/compiler_test.rb +0 -232
  172. data/test/sass/encoding_test.rb +0 -219
  173. data/test/sass/source_map_test.rb +0 -977
  174. data/test/sass/superselector_test.rb +0 -191
  175. data/test/sass/util/normalized_map_test.rb +0 -51
  176. data/test/sass/value_helpers_test.rb +0 -179
@@ -1,57 +1,36 @@
1
1
  #!/usr/bin/env ruby
2
2
  require File.dirname(__FILE__) + '/../test_helper'
3
3
  require File.dirname(__FILE__) + '/test_helper'
4
- require 'mock_importer'
5
- require 'sass/plugin'
6
4
 
7
- class ImporterTest < MiniTest::Test
5
+ require 'sass/plugin'
8
6
 
7
+ class ImporterTest < Test::Unit::TestCase
8
+
9
9
  class FruitImporter < Sass::Importers::Base
10
10
  def find(name, context = nil)
11
- fruit = parse(name)
12
- return unless fruit
13
- color = case fruit
14
- when "apple"
15
- "red"
16
- when "orange"
17
- "orange"
18
- else
19
- "blue"
20
- end
21
- contents = %Q{
22
- $#{fruit}-color: #{color} !default;
23
- @mixin #{fruit} {
24
- color: $#{fruit}-color;
11
+ if name =~ %r{fruits/(\w+)(\.s[ac]ss)?}
12
+ fruit = $1
13
+ color = case $1
14
+ when "apple"
15
+ "red"
16
+ when "orange"
17
+ "orange"
18
+ else
19
+ "blue"
20
+ end
21
+ contents = %Q{
22
+ $#{fruit}-color: #{color} !default;
23
+ @mixin #{fruit} {
24
+ color: $#{fruit}-color;
25
+ }
25
26
  }
26
- }
27
- Sass::Engine.new(contents, :filename => name, :syntax => :scss, :importer => self)
27
+ Sass::Engine.new(contents, :filename => name, :syntax => :scss, :importer => self)
28
+ end
28
29
  end
29
30
 
30
31
  def key(name, context)
31
32
  [self.class.name, name]
32
33
  end
33
-
34
- def public_url(name, sourcemap_directory = nil)
35
- "http://#{parse(name)}.example.com/style.scss"
36
- end
37
-
38
- private
39
-
40
- def parse(name)
41
- name[%r{fruits/(\w+)(\.s[ac]ss)?}, 1]
42
- end
43
- end
44
-
45
- class NoPublicUrlImporter < FruitImporter
46
- def public_url(name, sourcemap_directory = nil)
47
- nil
48
- end
49
-
50
- private
51
-
52
- def parse(name)
53
- name[%r{ephemeral/(\w+)(\.s[ac]ss)?}, 1]
54
- end
55
34
  end
56
35
 
57
36
  # This class proves that you can override the extension scheme for importers
@@ -198,205 +177,6 @@ CSS
198
177
  )
199
178
  end
200
179
 
201
- def test_source_map_with_only_css_uri_supports_public_url_imports
202
- fruit_importer = FruitImporter.new
203
-
204
- options = {
205
- :filename => 'fruits/orange',
206
- :importer => fruit_importer,
207
- :syntax => :scss
208
- }
209
-
210
- engine = Sass::Engine.new(<<SCSS, options)
211
- .orchard {
212
- color: blue;
213
- }
214
- SCSS
215
-
216
- _, sourcemap = engine.render_with_sourcemap('sourcemap_uri')
217
- assert_equal <<JSON.strip, sourcemap.to_json(:css_uri => 'css_uri')
218
- {
219
- "version": 3,
220
- "mappings": "AAAA,QAAS;EACP,KAAK,EAAE,IAAI",
221
- "sources": ["http://orange.example.com/style.scss"],
222
- "names": [],
223
- "file": "css_uri"
224
- }
225
- JSON
226
- end
227
-
228
- def test_source_map_with_only_css_uri_can_have_no_public_url
229
- ephemeral_importer = NoPublicUrlImporter.new
230
- mock_importer = MockImporter.new
231
- def mock_importer.public_url(name, sourcemap_directory = nil)
232
- "source_uri"
233
- end
234
-
235
- options = {
236
- :filename => filename_for_test,
237
- :sourcemap_filename => sourcemap_filename_for_test,
238
- :importer => mock_importer,
239
- :syntax => :scss,
240
- :load_paths => [ephemeral_importer],
241
- :cache => false
242
- }
243
-
244
- engine = Sass::Engine.new(<<SCSS, options)
245
- @import "ephemeral/orange";
246
- .orange {
247
- @include orange;
248
- }
249
- SCSS
250
-
251
- css_output, sourcemap = engine.render_with_sourcemap('sourcemap_uri')
252
- assert_equal <<CSS.strip, css_output.strip
253
- .orange {
254
- color: orange; }
255
-
256
- /*# sourceMappingURL=sourcemap_uri */
257
- CSS
258
- map = sourcemap.to_json(:css_uri => 'css_uri')
259
- assert_equal <<JSON.strip, map
260
- {
261
- "version": 3,
262
- "mappings": "AACA,OAAQ",
263
- "sources": ["source_uri"],
264
- "names": [],
265
- "file": "css_uri"
266
- }
267
- JSON
268
- end
269
-
270
- def test_source_map_with_only_css_uri_falls_back_to_file_uris
271
- file_system_importer = Sass::Importers::Filesystem.new('.')
272
- options = {
273
- :filename => filename_for_test(:scss),
274
- :sourcemap_filename => sourcemap_filename_for_test,
275
- :importer => file_system_importer,
276
- :syntax => :scss
277
- }
278
-
279
- engine = Sass::Engine.new(<<SCSS, options)
280
- .foo {a: b}
281
- SCSS
282
-
283
- _, sourcemap = engine.render_with_sourcemap('http://1.example.com/style.map')
284
-
285
- uri = Sass::Util.file_uri_from_path(Sass::Util.absolute_path(filename_for_test(:scss)))
286
- assert_equal <<JSON.strip, sourcemap.to_json(:css_uri => 'css_uri')
287
- {
288
- "version": 3,
289
- "mappings": "AAAA,IAAK;EAAC,CAAC,EAAE,CAAC",
290
- "sources": ["#{uri}"],
291
- "names": [],
292
- "file": "css_uri"
293
- }
294
- JSON
295
- end
296
-
297
- def test_source_map_with_css_uri_and_css_path_falls_back_to_file_uris
298
- file_system_importer = Sass::Importers::Filesystem.new('.')
299
- options = {
300
- :filename => filename_for_test(:scss),
301
- :sourcemap_filename => sourcemap_filename_for_test,
302
- :importer => file_system_importer,
303
- :syntax => :scss
304
- }
305
-
306
- engine = Sass::Engine.new(<<SCSS, options)
307
- .foo {a: b}
308
- SCSS
309
-
310
- _, sourcemap = engine.render_with_sourcemap('http://1.example.com/style.map')
311
-
312
- uri = Sass::Util.file_uri_from_path(Sass::Util.absolute_path(filename_for_test(:scss)))
313
- assert_equal <<JSON.strip, sourcemap.to_json(:css_uri => 'css_uri', :css_path => 'css_path')
314
- {
315
- "version": 3,
316
- "mappings": "AAAA,IAAK;EAAC,CAAC,EAAE,CAAC",
317
- "sources": ["#{uri}"],
318
- "names": [],
319
- "file": "css_uri"
320
- }
321
- JSON
322
- end
323
-
324
- def test_source_map_with_css_uri_and_sourcemap_path_supports_filesystem_importer
325
- file_system_importer = Sass::Importers::Filesystem.new('.')
326
- css_uri = 'css_uri'
327
- sourcemap_path = 'map/style.map'
328
- options = {
329
- :filename => 'sass/style.scss',
330
- :sourcemap_filename => sourcemap_path,
331
- :importer => file_system_importer,
332
- :syntax => :scss
333
- }
334
-
335
- engine = Sass::Engine.new(<<SCSS, options)
336
- .foo {a: b}
337
- SCSS
338
-
339
- rendered, sourcemap = engine.render_with_sourcemap('http://1.example.com/style.map')
340
-
341
-
342
- rendered, sourcemap = engine.render_with_sourcemap('http://map.example.com/map/style.map')
343
- assert_equal <<JSON.strip, sourcemap.to_json(:css_uri => css_uri, :sourcemap_path => sourcemap_path)
344
- {
345
- "version": 3,
346
- "mappings": "AAAA,IAAK;EAAC,CAAC,EAAE,CAAC",
347
- "sources": ["../sass/style.scss"],
348
- "names": [],
349
- "file": "css_uri"
350
- }
351
- JSON
352
- end
353
-
354
- def test_source_map_with_css_path_and_sourcemap_path_supports_file_system_importer
355
- file_system_importer = Sass::Importers::Filesystem.new('.')
356
- sass_path = 'sass/style.scss'
357
- css_path = 'static/style.css'
358
- sourcemap_path = 'map/style.map'
359
- options = {
360
- :filename => sass_path,
361
- :sourcemap_filename => sourcemap_path,
362
- :importer => file_system_importer,
363
- :syntax => :scss
364
- }
365
-
366
- engine = Sass::Engine.new(<<SCSS, options)
367
- .foo {a: b}
368
- SCSS
369
-
370
- _, sourcemap = engine.render_with_sourcemap('http://map.example.com/map/style.map')
371
- assert_equal <<JSON.strip, sourcemap.to_json(:css_path => css_path, :sourcemap_path => sourcemap_path)
372
- {
373
- "version": 3,
374
- "mappings": "AAAA,IAAK;EAAC,CAAC,EAAE,CAAC",
375
- "sources": ["../sass/style.scss"],
376
- "names": [],
377
- "file": "../static/style.css"
378
- }
379
- JSON
380
- end
381
-
382
- def test_render_with_sourcemap_requires_filename
383
- file_system_importer = Sass::Importers::Filesystem.new('.')
384
- engine = Sass::Engine.new(".foo {a: b}", :syntax => :scss, :importer => file_system_importer)
385
- assert_raise_message(Sass::SyntaxError, <<MESSAGE) {engine.render_with_sourcemap('sourcemap_url')}
386
- Error generating source map: couldn't determine public URL for the source stylesheet.
387
- No filename is available so there's nothing for the source map to link to.
388
- MESSAGE
389
- end
390
-
391
- def test_render_with_sourcemap_requires_importer_with_public_url
392
- class_importer = ClassImporter.new({"pear" => "color: green;"}, {"pear" => Time.now})
393
- assert_raise_message(Sass::SyntaxError, <<MESSAGE) {class_importer.find("pear", {}).render_with_sourcemap('sourcemap_url')}
394
- Error generating source map: couldn't determine public URL for "pear".
395
- Without a public URL, there's nothing for the source map to link to.
396
- Custom importers should define the #public_url method.
397
- MESSAGE
398
- end
399
-
400
180
  def fixture_dir
401
181
  File.join(File.dirname(__FILE__), "fixtures")
402
182
  end
@@ -407,6 +187,6 @@ MESSAGE
407
187
 
408
188
  def test_absolute_files_across_template_locations
409
189
  importer = Sass::Importers::Filesystem.new(absolutize 'templates')
410
- refute_nil importer.mtime(absolutize('more_templates/more1.sass'), {})
190
+ assert_not_nil importer.mtime(absolutize('more_templates/more1.sass'), {})
411
191
  end
412
192
  end
@@ -2,7 +2,7 @@
2
2
  require File.dirname(__FILE__) + '/../test_helper'
3
3
  require 'pathname'
4
4
 
5
- class LoggerTest < MiniTest::Test
5
+ class LoggerTest < Test::Unit::TestCase
6
6
 
7
7
  class InterceptedLogger < Sass::Logger::Base
8
8
 
@@ -24,6 +24,6 @@ body { font: Arial; background: blue; }
24
24
  #content.user.show #container.top #column.right { width: 600px; }
25
25
  #content.user.show #container.bottom { background: brown; }
26
26
 
27
- #foo { background-color: #baf; }
27
+ #foo { background-color: #bbaaff; }
28
28
 
29
29
  nonimported { myconst: hello; otherconst: goodbye; post-mixin: here; }
@@ -7,17 +7,17 @@ require 'fileutils'
7
7
  module Sass::Script::Functions
8
8
  def filename
9
9
  filename = options[:filename].gsub(%r{.*((/[^/]+){4})}, '\1')
10
- Sass::Script::Value::String.new(filename)
10
+ Sass::Script::String.new(filename)
11
11
  end
12
12
 
13
13
  def whatever
14
14
  custom = options[:custom]
15
15
  whatever = custom && custom[:whatever]
16
- Sass::Script::Value::String.new(whatever || "incorrect")
16
+ Sass::Script::String.new(whatever || "incorrect")
17
17
  end
18
18
  end
19
19
 
20
- class SassPluginTest < MiniTest::Test
20
+ class SassPluginTest < Test::Unit::TestCase
21
21
  @@templates = %w{
22
22
  complex script parent_ref import scss_import alt
23
23
  subdir/subdir subdir/nested_subdir/nested_subdir
@@ -113,7 +113,7 @@ class SassPluginTest < MiniTest::Test
113
113
  File.open(tempfile_loc('bork1')) do |file|
114
114
  assert_equal(<<CSS.strip, file.read.split("\n")[0...6].join("\n"))
115
115
  /*
116
- Error: Undefined variable: "$bork".
116
+ Syntax error: Undefined variable: "$bork".
117
117
  on line 2 of #{template_loc('bork1')}
118
118
 
119
119
  1: bork
@@ -129,7 +129,7 @@ CSS
129
129
  File.open(tempfile_loc('bork5')) do |file|
130
130
  assert_equal(<<CSS.strip, file.read.split("\n")[0...7].join("\n"))
131
131
  /*
132
- Error: Undefined variable: "$bork".
132
+ Syntax error: Undefined variable: "$bork".
133
133
  on line 3 of #{template_loc('bork5')}
134
134
 
135
135
  1: bork
@@ -146,7 +146,7 @@ CSS
146
146
  File.open(tempfile_loc('single_import_loop')) do |file|
147
147
  assert_equal(<<CSS.strip, file.read.split("\n")[0...2].join("\n"))
148
148
  /*
149
- Error: An @import loop has been found: #{template_loc('single_import_loop')} imports itself
149
+ Syntax error: An @import loop has been found: #{template_loc('single_import_loop')} imports itself
150
150
  CSS
151
151
  end
152
152
  end
@@ -157,9 +157,9 @@ CSS
157
157
  File.open(tempfile_loc('double_import_loop1')) do |file|
158
158
  assert_equal(<<CSS.strip, file.read.split("\n")[0...4].join("\n"))
159
159
  /*
160
- Error: An @import loop has been found:
161
- #{template_loc('double_import_loop1')} imports #{template_loc('_double_import_loop2')}
162
- #{template_loc('_double_import_loop2')} imports #{template_loc('double_import_loop1')}
160
+ Syntax error: An @import loop has been found:
161
+ #{template_loc('double_import_loop1')} imports #{template_loc('_double_import_loop2')}
162
+ #{template_loc('_double_import_loop2')} imports #{template_loc('double_import_loop1')}
163
163
  CSS
164
164
  end
165
165
  end
@@ -170,8 +170,8 @@ CSS
170
170
  File.open(tempfile_loc('subdir/import_up1')) do |file|
171
171
  assert_equal(<<CSS.strip, file.read.split("\n")[0...5].join("\n"))
172
172
  /*
173
- Error: File to import not found or unreadable: ../subdir/import_up3.scss.
174
- Load path: #{template_loc}
173
+ Syntax error: File to import not found or unreadable: ../subdir/import_up3.scss.
174
+ Load path: #{template_loc}
175
175
  on line 1 of #{template_loc 'subdir/import_up2'}
176
176
  from line 1 of #{template_loc 'subdir/import_up1'}
177
177
  CSS
@@ -183,7 +183,7 @@ CSS
183
183
  Sass::Plugin.options[:full_exception] = false
184
184
 
185
185
  File.delete(tempfile_loc('bork1'))
186
- assert_raises(Sass::SyntaxError) {check_for_updates!}
186
+ assert_raise(Sass::SyntaxError) {check_for_updates!}
187
187
  ensure
188
188
  Sass::Plugin.options[:full_exception] = old_full_exception
189
189
  end
@@ -209,7 +209,7 @@ CSS
209
209
  end
210
210
 
211
211
  def test_doesnt_render_partials
212
- assert !File.exist?(tempfile_loc('_partial'))
212
+ assert !File.exists?(tempfile_loc('_partial'))
213
213
  end
214
214
 
215
215
  def test_template_location_array
@@ -261,6 +261,17 @@ WARNING
261
261
 
262
262
  # Callbacks
263
263
 
264
+ def test_updating_stylesheets_callback
265
+ # Should run even when there's nothing to update
266
+ Sass::Plugin.options[:template_location] = nil
267
+ assert_callback :updating_stylesheets, []
268
+ end
269
+
270
+ def test_updating_stylesheets_callback_with_never_update
271
+ Sass::Plugin.options[:never_update] = true
272
+ assert_no_callback :updating_stylesheets
273
+ end
274
+
264
275
  def test_updated_stylesheet_callback_for_updated_template
265
276
  Sass::Plugin.options[:always_update] = false
266
277
  touch 'basic'
@@ -507,7 +518,7 @@ WARNING
507
518
  def template_loc(name = nil, prefix = nil)
508
519
  if name
509
520
  scss = absolutize "#{prefix}templates/#{name}.scss"
510
- File.exist?(scss) ? scss : absolutize("#{prefix}templates/#{name}.sass")
521
+ File.exists?(scss) ? scss : absolutize("#{prefix}templates/#{name}.sass")
511
522
  else
512
523
  absolutize "#{prefix}templates"
513
524
  end
@@ -537,8 +548,7 @@ WARNING
537
548
  :always_update => true,
538
549
  :never_update => false,
539
550
  :full_exception => true,
540
- :cache_store => @@cache_store,
541
- :sourcemap => :none
551
+ :cache_store => @@cache_store
542
552
  )
543
553
  Sass::Plugin.options.merge!(overrides)
544
554
  end
@@ -1,4 +1,4 @@
1
- #main { width: 15em; color: #0000ff; }
1
+ #main { width: 15em; color: blue; }
2
2
  #main p { border-style: dotted; /* Nested comment More nested stuff */ border-width: 2px; }
3
3
  #main .cool { width: 100px; }
4
4
 
@@ -1,4 +1,4 @@
1
- body { margin: 0; font: 0.85em "Lucida Grande", "Trebuchet MS", Verdana, sans-serif; color: #fff; background: url(/images/global_bg.gif); }
1
+ body { margin: 0; font: 0.85em "Lucida Grande", "Trebuchet MS", Verdana, sans-serif; color: white; background: url(/images/global_bg.gif); }
2
2
 
3
3
  #page { width: 900px; margin: 0 auto; background: #440008; border-top-width: 5px; border-top-style: solid; border-top-color: #ff8500; }
4
4
 
@@ -16,8 +16,8 @@ body { margin: 0; font: 0.85em "Lucida Grande", "Trebuchet MS", Verdana, sans-se
16
16
 
17
17
  #menu { clear: both; text-align: right; height: 20px; border-bottom: 5px solid #006b95; background: #00a4e4; }
18
18
  #menu .contests ul { margin: 0 5px 0 0; padding: 0; }
19
- #menu .contests ul li { list-style-type: none; margin: 0 5px; padding: 5px 5px 0 5px; display: inline; font-size: 1.1em; color: #fff; background: #00a4e4; }
20
- #menu .contests a:link, #menu .contests a:visited { color: #fff; text-decoration: none; font-weight: bold; }
19
+ #menu .contests ul li { list-style-type: none; margin: 0 5px; padding: 5px 5px 0 5px; display: inline; font-size: 1.1em; color: white; background: #00a4e4; }
20
+ #menu .contests a:link, #menu .contests a:visited { color: white; text-decoration: none; font-weight: bold; }
21
21
  #menu .contests a:hover { text-decoration: underline; }
22
22
 
23
23
  #content { clear: both; }
@@ -81,6 +81,6 @@ body { margin: 0; font: 0.85em "Lucida Grande", "Trebuchet MS", Verdana, sans-se
81
81
 
82
82
  img { border: none; }
83
83
 
84
- button.short { width: 60px; height: 22px; padding: 0 0 2px 0; color: #fff; border: none; background: url(/images/btn_short.gif) no-repeat; }
84
+ button.short { width: 60px; height: 22px; padding: 0 0 2px 0; color: white; border: none; background: url(/images/btn_short.gif) no-repeat; }
85
85
 
86
86
  table { border-collapse: collapse; }