sass 3.1.21 → 3.2.0.alpha.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +5 -4
- data/REVISION +1 -1
- data/Rakefile +6 -15
- data/VERSION +1 -1
- data/VERSION_NAME +1 -1
- data/lib/sass.rb +0 -1
- data/lib/sass/cache_stores/base.rb +1 -3
- data/lib/sass/cache_stores/filesystem.rb +0 -3
- data/lib/sass/css.rb +49 -145
- data/lib/sass/engine.rb +23 -47
- data/lib/sass/environment.rb +5 -30
- data/lib/sass/exec.rb +7 -30
- data/lib/sass/importers/base.rb +1 -2
- data/lib/sass/importers/filesystem.rb +13 -18
- data/lib/sass/less.rb +1 -1
- data/lib/sass/plugin.rb +8 -4
- data/lib/sass/plugin/compiler.rb +67 -93
- data/lib/sass/plugin/configuration.rb +2 -0
- data/lib/sass/plugin/staleness_checker.rb +4 -14
- data/lib/sass/repl.rb +3 -2
- data/lib/sass/script.rb +1 -0
- data/lib/sass/script/color.rb +9 -4
- data/lib/sass/script/funcall.rb +3 -16
- data/lib/sass/script/functions.rb +55 -98
- data/lib/sass/script/interpolation.rb +0 -9
- data/lib/sass/script/lexer.rb +4 -2
- data/lib/sass/script/list.rb +0 -8
- data/lib/sass/script/literal.rb +20 -5
- data/lib/sass/script/node.rb +0 -8
- data/lib/sass/script/number.rb +11 -35
- data/lib/sass/script/operation.rb +0 -16
- data/lib/sass/script/parser.rb +5 -12
- data/lib/sass/script/string_interpolation.rb +0 -9
- data/lib/sass/script/unary_operation.rb +0 -7
- data/lib/sass/script/variable.rb +1 -5
- data/lib/sass/scss/parser.rb +54 -191
- data/lib/sass/scss/rx.rb +3 -15
- data/lib/sass/scss/static_parser.rb +3 -3
- data/lib/sass/selector.rb +3 -15
- data/lib/sass/selector/abstract_sequence.rb +2 -11
- data/lib/sass/selector/comma_sequence.rb +3 -8
- data/lib/sass/selector/sequence.rb +11 -74
- data/lib/sass/selector/simple.rb +1 -7
- data/lib/sass/selector/simple_sequence.rb +8 -28
- data/lib/sass/shared.rb +5 -3
- data/lib/sass/tree/comment_node.rb +12 -25
- data/lib/sass/tree/debug_node.rb +1 -1
- data/lib/sass/tree/directive_node.rb +0 -5
- data/lib/sass/tree/each_node.rb +1 -1
- data/lib/sass/tree/extend_node.rb +1 -1
- data/lib/sass/tree/for_node.rb +2 -2
- data/lib/sass/tree/function_node.rb +1 -1
- data/lib/sass/tree/if_node.rb +14 -1
- data/lib/sass/tree/media_node.rb +4 -4
- data/lib/sass/tree/mixin_def_node.rb +1 -1
- data/lib/sass/tree/mixin_node.rb +2 -2
- data/lib/sass/tree/node.rb +26 -10
- data/lib/sass/tree/return_node.rb +1 -1
- data/lib/sass/tree/root_node.rb +1 -1
- data/lib/sass/tree/rule_node.rb +11 -9
- data/lib/sass/tree/variable_node.rb +1 -1
- data/lib/sass/tree/visitors/base.rb +1 -1
- data/lib/sass/tree/visitors/check_nesting.rb +36 -29
- data/lib/sass/tree/visitors/convert.rb +9 -16
- data/lib/sass/tree/visitors/cssize.rb +9 -40
- data/lib/sass/tree/visitors/perform.rb +23 -79
- data/lib/sass/tree/visitors/to_css.rb +21 -23
- data/lib/sass/tree/warn_node.rb +1 -1
- data/lib/sass/tree/while_node.rb +1 -1
- data/lib/sass/util.rb +9 -147
- data/lib/sass/version.rb +0 -14
- data/test/sass/cache_test.rb +0 -15
- data/test/sass/conversion_test.rb +8 -50
- data/test/sass/css2sass_test.rb +0 -33
- data/test/sass/engine_test.rb +32 -283
- data/test/sass/extend_test.rb +0 -315
- data/test/sass/functions_test.rb +23 -60
- data/test/sass/importer_test.rb +0 -110
- data/test/sass/more_results/more_import.css +2 -2
- data/test/sass/plugin_test.rb +13 -40
- data/test/sass/results/import.css +2 -2
- data/test/sass/results/import_charset.css +0 -1
- data/test/sass/results/import_charset_1_8.css +0 -1
- data/test/sass/results/import_charset_ibm866.css +0 -1
- data/test/sass/results/scss_import.css +2 -2
- data/test/sass/results/units.css +1 -1
- data/test/sass/script_conversion_test.rb +0 -2
- data/test/sass/script_test.rb +4 -28
- data/test/sass/scss/css_test.rb +1 -79
- data/test/sass/scss/scss_test.rb +16 -96
- data/test/sass/templates/import_charset.sass +0 -2
- data/test/sass/templates/import_charset_1_8.sass +0 -2
- data/test/sass/templates/import_charset_ibm866.sass +0 -2
- data/test/sass/test_helper.rb +1 -1
- data/test/sass/util_test.rb +0 -28
- data/test/test_helper.rb +0 -2
- data/vendor/{listen → fssm}/LICENSE +1 -1
- data/vendor/fssm/README.markdown +55 -0
- data/vendor/fssm/Rakefile +59 -0
- data/vendor/fssm/VERSION.yml +5 -0
- data/vendor/fssm/example.rb +9 -0
- data/vendor/fssm/fssm.gemspec +77 -0
- data/vendor/fssm/lib/fssm.rb +33 -0
- data/vendor/fssm/lib/fssm/backends/fsevents.rb +36 -0
- data/vendor/fssm/lib/fssm/backends/inotify.rb +26 -0
- data/vendor/fssm/lib/fssm/backends/polling.rb +25 -0
- data/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +131 -0
- data/vendor/fssm/lib/fssm/monitor.rb +26 -0
- data/vendor/fssm/lib/fssm/path.rb +91 -0
- data/vendor/fssm/lib/fssm/pathname.rb +502 -0
- data/vendor/fssm/lib/fssm/state/directory.rb +57 -0
- data/vendor/fssm/lib/fssm/state/file.rb +24 -0
- data/vendor/fssm/lib/fssm/support.rb +63 -0
- data/vendor/fssm/lib/fssm/tree.rb +176 -0
- data/vendor/fssm/profile/prof-cache.rb +40 -0
- data/vendor/fssm/profile/prof-fssm-pathname.html +1231 -0
- data/vendor/fssm/profile/prof-pathname.rb +68 -0
- data/vendor/fssm/profile/prof-plain-pathname.html +988 -0
- data/vendor/fssm/profile/prof.html +2379 -0
- data/vendor/fssm/spec/path_spec.rb +75 -0
- data/vendor/fssm/spec/root/duck/quack.txt +0 -0
- data/vendor/fssm/spec/root/file.css +0 -0
- data/vendor/fssm/spec/root/file.rb +0 -0
- data/vendor/fssm/spec/root/file.yml +0 -0
- data/vendor/fssm/spec/root/moo/cow.txt +0 -0
- data/vendor/fssm/spec/spec_helper.rb +14 -0
- metadata +246 -281
- data/VERSION_DATE +0 -1
- data/lib/sass/logger.rb +0 -15
- data/lib/sass/logger/base.rb +0 -32
- data/lib/sass/logger/log_level.rb +0 -49
- data/lib/sass/tree/visitors/deep_copy.rb +0 -87
- data/lib/sass/tree/visitors/extend.rb +0 -42
- data/lib/sass/tree/visitors/set_options.rb +0 -97
- data/lib/sass/util/multibyte_string_scanner.rb +0 -134
- data/test/Gemfile +0 -4
- data/test/Gemfile.lock +0 -19
- data/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
- data/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
- data/test/sass/logger_test.rb +0 -58
- data/test/sass/templates/_double_import_loop2.sass +0 -1
- data/test/sass/templates/bork5.sass +0 -3
- data/test/sass/templates/double_import_loop1.sass +0 -1
- data/test/sass/templates/nested_bork5.sass +0 -2
- data/test/sass/templates/single_import_loop.sass +0 -1
- data/test/sass/util/multibyte_string_scanner_test.rb +0 -147
- data/vendor/listen/CHANGELOG.md +0 -147
- data/vendor/listen/Gemfile +0 -23
- data/vendor/listen/Guardfile +0 -8
- data/vendor/listen/README.md +0 -312
- data/vendor/listen/Rakefile +0 -47
- data/vendor/listen/Vagrantfile +0 -96
- data/vendor/listen/lib/listen.rb +0 -38
- data/vendor/listen/lib/listen/adapter.rb +0 -167
- data/vendor/listen/lib/listen/adapters/darwin.rb +0 -84
- data/vendor/listen/lib/listen/adapters/linux.rb +0 -110
- data/vendor/listen/lib/listen/adapters/polling.rb +0 -66
- data/vendor/listen/lib/listen/adapters/windows.rb +0 -81
- data/vendor/listen/lib/listen/directory_record.rb +0 -318
- data/vendor/listen/lib/listen/listener.rb +0 -203
- data/vendor/listen/lib/listen/multi_listener.rb +0 -121
- data/vendor/listen/lib/listen/turnstile.rb +0 -28
- data/vendor/listen/lib/listen/version.rb +0 -3
- data/vendor/listen/listen.gemspec +0 -26
- data/vendor/listen/spec/listen/adapter_spec.rb +0 -142
- data/vendor/listen/spec/listen/adapters/darwin_spec.rb +0 -31
- data/vendor/listen/spec/listen/adapters/linux_spec.rb +0 -41
- data/vendor/listen/spec/listen/adapters/polling_spec.rb +0 -68
- data/vendor/listen/spec/listen/adapters/windows_spec.rb +0 -24
- data/vendor/listen/spec/listen/directory_record_spec.rb +0 -1138
- data/vendor/listen/spec/listen/listener_spec.rb +0 -155
- data/vendor/listen/spec/listen/multi_listener_spec.rb +0 -156
- data/vendor/listen/spec/listen/turnstile_spec.rb +0 -56
- data/vendor/listen/spec/listen_spec.rb +0 -73
- data/vendor/listen/spec/spec_helper.rb +0 -18
- data/vendor/listen/spec/support/adapter_helper.rb +0 -716
- data/vendor/listen/spec/support/directory_record_helper.rb +0 -55
- data/vendor/listen/spec/support/fixtures_helper.rb +0 -29
- data/vendor/listen/spec/support/listeners_helper.rb +0 -144
- data/vendor/listen/spec/support/platform_helper.rb +0 -11
data/test/sass/importer_test.rb
CHANGED
@@ -2,8 +2,6 @@
|
|
2
2
|
require File.dirname(__FILE__) + '/../test_helper'
|
3
3
|
require File.dirname(__FILE__) + '/test_helper'
|
4
4
|
|
5
|
-
require 'sass/plugin'
|
6
|
-
|
7
5
|
class ImporterTest < Test::Unit::TestCase
|
8
6
|
|
9
7
|
class FruitImporter < Sass::Importers::Base
|
@@ -40,72 +38,6 @@ class ImporterTest < Test::Unit::TestCase
|
|
40
38
|
end
|
41
39
|
end
|
42
40
|
|
43
|
-
# This importer maps one import to another import
|
44
|
-
# based on the mappings passed to importer's constructor.
|
45
|
-
class IndirectImporter < Sass::Importers::Base
|
46
|
-
def initialize(mappings, mtimes)
|
47
|
-
@mappings = mappings
|
48
|
-
@mtimes = mtimes
|
49
|
-
end
|
50
|
-
def find_relative(uri, base, options)
|
51
|
-
nil
|
52
|
-
end
|
53
|
-
def find(name, options)
|
54
|
-
if @mappings.has_key?(name)
|
55
|
-
Sass::Engine.new(
|
56
|
-
%Q[@import "#{@mappings[name]}";],
|
57
|
-
options.merge(
|
58
|
-
:filename => name,
|
59
|
-
:syntax => :scss,
|
60
|
-
:importer => self
|
61
|
-
)
|
62
|
-
)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
def mtime(uri, options)
|
66
|
-
@mtimes.fetch(uri, @mtimes.has_key?(uri) ? Time.now : nil)
|
67
|
-
end
|
68
|
-
def key(uri, options)
|
69
|
-
[self.class.name, uri]
|
70
|
-
end
|
71
|
-
def to_s
|
72
|
-
"IndirectImporter(#{@mappings.keys.join(", ")})"
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
# This importer maps the import to single class
|
77
|
-
# based on the mappings passed to importer's constructor.
|
78
|
-
class ClassImporter < Sass::Importers::Base
|
79
|
-
def initialize(mappings, mtimes)
|
80
|
-
@mappings = mappings
|
81
|
-
@mtimes = mtimes
|
82
|
-
end
|
83
|
-
def find_relative(uri, base, options)
|
84
|
-
nil
|
85
|
-
end
|
86
|
-
def find(name, options)
|
87
|
-
if @mappings.has_key?(name)
|
88
|
-
Sass::Engine.new(
|
89
|
-
%Q[.#{name}{#{@mappings[name]}}],
|
90
|
-
options.merge(
|
91
|
-
:filename => name,
|
92
|
-
:syntax => :scss,
|
93
|
-
:importer => self
|
94
|
-
)
|
95
|
-
)
|
96
|
-
end
|
97
|
-
end
|
98
|
-
def mtime(uri, options)
|
99
|
-
@mtimes.fetch(uri, @mtimes.has_key?(uri) ? Time.now : nil)
|
100
|
-
end
|
101
|
-
def key(uri, options)
|
102
|
-
[self.class.name, uri]
|
103
|
-
end
|
104
|
-
def to_s
|
105
|
-
"ClassImporter(#{@mappings.keys.join(", ")})"
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
41
|
def test_can_resolve_generated_imports
|
110
42
|
scss_file = %Q{
|
111
43
|
$pear-color: green;
|
@@ -147,46 +79,4 @@ CSS
|
|
147
79
|
ensure
|
148
80
|
FileUtils.rm_rf(absolutize("tmp"))
|
149
81
|
end
|
150
|
-
|
151
|
-
def test_staleness_check_across_importers
|
152
|
-
file_system_importer = Sass::Importers::Filesystem.new(fixture_dir)
|
153
|
-
# Make sure the first import is older
|
154
|
-
indirect_importer = IndirectImporter.new({"apple" => "pear"}, {"apple" => Time.now - 1})
|
155
|
-
# Make css file is newer so the dependencies are the only way for the css file to be out of date.
|
156
|
-
FileUtils.touch(fixture_file("test_staleness_check_across_importers.css"))
|
157
|
-
# Make sure the first import is older
|
158
|
-
class_importer = ClassImporter.new({"pear" => %Q{color: green;}}, {"pear" => Time.now + 1})
|
159
|
-
|
160
|
-
options = {
|
161
|
-
:style => :compact,
|
162
|
-
:filename => fixture_file("test_staleness_check_across_importers.scss"),
|
163
|
-
:importer => file_system_importer,
|
164
|
-
:load_paths => [file_system_importer, indirect_importer, class_importer],
|
165
|
-
:syntax => :scss
|
166
|
-
}
|
167
|
-
|
168
|
-
assert_equal File.read(fixture_file("test_staleness_check_across_importers.css")),
|
169
|
-
Sass::Engine.new(File.read(fixture_file("test_staleness_check_across_importers.scss")), options).render
|
170
|
-
|
171
|
-
checker = Sass::Plugin::StalenessChecker.new(options)
|
172
|
-
|
173
|
-
assert checker.stylesheet_needs_update?(
|
174
|
-
fixture_file("test_staleness_check_across_importers.css"),
|
175
|
-
fixture_file("test_staleness_check_across_importers.scss"),
|
176
|
-
file_system_importer
|
177
|
-
)
|
178
|
-
end
|
179
|
-
|
180
|
-
def fixture_dir
|
181
|
-
File.join(File.dirname(__FILE__), "fixtures")
|
182
|
-
end
|
183
|
-
|
184
|
-
def fixture_file(path)
|
185
|
-
File.join(fixture_dir, path)
|
186
|
-
end
|
187
|
-
|
188
|
-
def test_absolute_files_across_template_locations
|
189
|
-
importer = Sass::Importers::Filesystem.new(absolutize 'templates')
|
190
|
-
assert_not_nil importer.mtime(absolutize('more_templates/more1.sass'), {})
|
191
|
-
end
|
192
82
|
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
@import url(basic.css);
|
2
|
-
@import url(../results/complex.css);
|
3
1
|
imported { otherconst: hello; myconst: goodbye; pre-mixin: here; }
|
4
2
|
|
5
3
|
body { font: Arial; background: blue; }
|
@@ -24,6 +22,8 @@ body { font: Arial; background: blue; }
|
|
24
22
|
#content.user.show #container.top #column.right { width: 600px; }
|
25
23
|
#content.user.show #container.bottom { background: brown; }
|
26
24
|
|
25
|
+
@import url(basic.css);
|
26
|
+
@import url(../results/complex.css);
|
27
27
|
#foo { background-color: #bbaaff; }
|
28
28
|
|
29
29
|
nonimported { myconst: hello; otherconst: goodbye; post-mixin: here; }
|
data/test/sass/plugin_test.rb
CHANGED
@@ -110,30 +110,6 @@ CSS
|
|
110
110
|
File.delete(tempfile_loc('bork1'))
|
111
111
|
end
|
112
112
|
|
113
|
-
def test_single_level_import_loop
|
114
|
-
File.delete(tempfile_loc('single_import_loop'))
|
115
|
-
check_for_updates!
|
116
|
-
File.open(tempfile_loc('single_import_loop')) do |file|
|
117
|
-
assert_equal(<<CSS.strip, file.read.split("\n")[0...2].join("\n"))
|
118
|
-
/*
|
119
|
-
Sass::SyntaxError: An @import loop has been found: #{template_loc('single_import_loop')} imports itself
|
120
|
-
CSS
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
def test_double_level_import_loop
|
125
|
-
File.delete(tempfile_loc('double_import_loop1'))
|
126
|
-
check_for_updates!
|
127
|
-
File.open(tempfile_loc('double_import_loop1')) do |file|
|
128
|
-
assert_equal(<<CSS.strip, file.read.split("\n")[0...4].join("\n"))
|
129
|
-
/*
|
130
|
-
Sass::SyntaxError: An @import loop has been found:
|
131
|
-
#{template_loc('double_import_loop1')} imports #{template_loc('_double_import_loop2')}
|
132
|
-
#{template_loc('_double_import_loop2')} imports #{template_loc('double_import_loop1')}
|
133
|
-
CSS
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
113
|
def test_nonfull_exception_handling
|
138
114
|
old_full_exception = Sass::Plugin.options[:full_exception]
|
139
115
|
Sass::Plugin.options[:full_exception] = false
|
@@ -207,7 +183,6 @@ CSS
|
|
207
183
|
|
208
184
|
def test_updating_stylesheets_callback
|
209
185
|
# Should run even when there's nothing to update
|
210
|
-
Sass::Plugin.options[:template_location] = nil
|
211
186
|
assert_callback :updating_stylesheets, []
|
212
187
|
end
|
213
188
|
|
@@ -221,25 +196,25 @@ CSS
|
|
221
196
|
assert_no_callback :updating_stylesheets
|
222
197
|
end
|
223
198
|
|
224
|
-
def
|
199
|
+
def test_updating_stylesheet_callback_for_updated_template
|
225
200
|
Sass::Plugin.options[:always_update] = false
|
226
201
|
touch 'basic'
|
227
|
-
assert_no_callback :
|
202
|
+
assert_no_callback :updating_stylesheet, template_loc("complex"), tempfile_loc("complex") do
|
228
203
|
assert_callbacks(
|
229
|
-
[:
|
230
|
-
[:
|
204
|
+
[:updating_stylesheet, template_loc("basic"), tempfile_loc("basic")],
|
205
|
+
[:updating_stylesheet, template_loc("import"), tempfile_loc("import")])
|
231
206
|
end
|
232
207
|
end
|
233
208
|
|
234
|
-
def
|
209
|
+
def test_updating_stylesheet_callback_for_fresh_template
|
235
210
|
Sass::Plugin.options[:always_update] = false
|
236
|
-
assert_no_callback :
|
211
|
+
assert_no_callback :updating_stylesheet
|
237
212
|
end
|
238
213
|
|
239
|
-
def
|
214
|
+
def test_updating_stylesheet_callback_for_error_template
|
240
215
|
Sass::Plugin.options[:always_update] = false
|
241
216
|
touch 'bork1'
|
242
|
-
assert_no_callback :
|
217
|
+
assert_no_callback :updating_stylesheet
|
243
218
|
end
|
244
219
|
|
245
220
|
def test_not_updating_stylesheet_callback_for_fresh_template
|
@@ -251,8 +226,8 @@ CSS
|
|
251
226
|
Sass::Plugin.options[:always_update] = false
|
252
227
|
assert_callback :not_updating_stylesheet, template_loc("complex"), tempfile_loc("complex") do
|
253
228
|
assert_no_callbacks(
|
254
|
-
[:
|
255
|
-
[:
|
229
|
+
[:updating_stylesheet, template_loc("basic"), tempfile_loc("basic")],
|
230
|
+
[:updating_stylesheet, template_loc("import"), tempfile_loc("import")])
|
256
231
|
end
|
257
232
|
end
|
258
233
|
|
@@ -372,11 +347,9 @@ CSS
|
|
372
347
|
|
373
348
|
def assert_callback(name, *expected_args)
|
374
349
|
run = false
|
375
|
-
received_args = nil
|
376
350
|
Sass::Plugin.send("on_#{name}") do |*args|
|
377
|
-
|
378
|
-
|
379
|
-
ea.respond_to?(:call) ? ea.call(ra) : ea == ra
|
351
|
+
run ||= expected_args.zip(args).all? do |ea, a|
|
352
|
+
ea.respond_to?(:call) ? ea.call(a) : ea == a
|
380
353
|
end
|
381
354
|
end
|
382
355
|
|
@@ -386,7 +359,7 @@ CSS
|
|
386
359
|
check_for_updates!
|
387
360
|
end
|
388
361
|
|
389
|
-
assert run, "Expected #{name} callback to be run with arguments:\n #{expected_args.inspect}
|
362
|
+
assert run, "Expected #{name} callback to be run with arguments:\n #{expected_args.inspect}"
|
390
363
|
end
|
391
364
|
|
392
365
|
def assert_no_callback(name, *unexpected_args)
|
@@ -1,5 +1,3 @@
|
|
1
|
-
@import url(basic.css);
|
2
|
-
@import url(../results/complex.css);
|
3
1
|
imported { otherconst: hello; myconst: goodbye; pre-mixin: here; }
|
4
2
|
|
5
3
|
body { font: Arial; background: blue; }
|
@@ -26,6 +24,8 @@ body { font: Arial; background: blue; }
|
|
26
24
|
#content.user.show #container.top #column.right { width: 600px; }
|
27
25
|
#content.user.show #container.bottom { background: brown; }
|
28
26
|
|
27
|
+
@import url(basic.css);
|
28
|
+
@import url(../results/complex.css);
|
29
29
|
#foo { background-color: #bbaaff; }
|
30
30
|
|
31
31
|
nonimported { myconst: hello; otherconst: goodbye; post-mixin: here; }
|
@@ -1,5 +1,3 @@
|
|
1
|
-
@import url(basic.css);
|
2
|
-
@import url(../results/complex.css);
|
3
1
|
imported { otherconst: hello; myconst: goodbye; pre-mixin: here; }
|
4
2
|
|
5
3
|
body { font: Arial; background: blue; }
|
@@ -26,6 +24,8 @@ body { font: Arial; background: blue; }
|
|
26
24
|
#content.user.show #container.top #column.right { width: 600px; }
|
27
25
|
#content.user.show #container.bottom { background: brown; }
|
28
26
|
|
27
|
+
@import url(basic.css);
|
28
|
+
@import url(../results/complex.css);
|
29
29
|
#foo { background-color: #bbaaff; }
|
30
30
|
|
31
31
|
nonimported { myconst: hello; otherconst: goodbye; post-mixin: here; }
|
data/test/sass/results/units.css
CHANGED
@@ -223,8 +223,6 @@ RUBY
|
|
223
223
|
assert_renders '#{1 + 2}, #{3 + 4}'
|
224
224
|
assert_renders '#{1 + 2} ,#{3 + 4}'
|
225
225
|
assert_renders '#{1 + 2},#{3 + 4}'
|
226
|
-
assert_renders '#{1 + 2}, #{3 + 4}, #{5 + 6}'
|
227
|
-
assert_renders '3, #{3 + 4}, 11'
|
228
226
|
|
229
227
|
assert_renders '3 / #{3 + 4}'
|
230
228
|
assert_renders '3 /#{3 + 4}'
|
data/test/sass/script_test.rb
CHANGED
@@ -7,27 +7,19 @@ module Sass::Script::Functions::UserFunctions
|
|
7
7
|
val.options[:foo]
|
8
8
|
Sass::Script::String.new("Options defined!")
|
9
9
|
end
|
10
|
-
|
11
|
-
def arg_error
|
12
|
-
assert_options
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
module Sass::Script::Functions
|
17
|
-
include Sass::Script::Functions::UserFunctions
|
18
10
|
end
|
19
11
|
|
20
12
|
class SassScriptTest < Test::Unit::TestCase
|
21
13
|
include Sass::Script
|
22
14
|
|
23
15
|
def test_color_checks_input
|
24
|
-
assert_raise_message(ArgumentError, "Blue value
|
25
|
-
assert_raise_message(ArgumentError, "Red value
|
16
|
+
assert_raise_message(ArgumentError, "Blue value must be between 0 and 255") {Color.new([1, 2, -1])}
|
17
|
+
assert_raise_message(ArgumentError, "Red value must be between 0 and 255") {Color.new([256, 2, 3])}
|
26
18
|
end
|
27
19
|
|
28
20
|
def test_color_checks_rgba_input
|
29
|
-
assert_raise_message(ArgumentError, "Alpha channel
|
30
|
-
assert_raise_message(ArgumentError, "Alpha channel
|
21
|
+
assert_raise_message(ArgumentError, "Alpha channel must be between 0 and 1") {Color.new([1, 2, 3, 1.1])}
|
22
|
+
assert_raise_message(ArgumentError, "Alpha channel must be between 0 and 1") {Color.new([1, 2, 3, -0.1])}
|
31
23
|
end
|
32
24
|
|
33
25
|
def test_string_escapes
|
@@ -138,8 +130,6 @@ class SassScriptTest < Test::Unit::TestCase
|
|
138
130
|
assert_equal '3, 7', resolve('#{1 + 2}, #{3 + 4}')
|
139
131
|
assert_equal '3 ,7', resolve('#{1 + 2} ,#{3 + 4}')
|
140
132
|
assert_equal '3,7', resolve('#{1 + 2},#{3 + 4}')
|
141
|
-
assert_equal '3, 7, 11', resolve('#{1 + 2}, #{3 + 4}, #{5 + 6}')
|
142
|
-
assert_equal '3, 7, 11', resolve('3, #{3 + 4}, 11')
|
143
133
|
|
144
134
|
assert_equal '3 / 7', resolve('3 / #{3 + 4}')
|
145
135
|
assert_equal '3 /7', resolve('3 /#{3 + 4}')
|
@@ -359,7 +349,6 @@ SASS
|
|
359
349
|
|
360
350
|
def test_operator_unit_conversion
|
361
351
|
assert_equal "1.1cm", resolve("1cm + 1mm")
|
362
|
-
assert_equal "2in", resolve("1in + 96px")
|
363
352
|
assert_equal "true", resolve("2mm < 1cm")
|
364
353
|
assert_equal "true", resolve("10mm == 1cm")
|
365
354
|
assert_equal "true", resolve("1 == 1cm")
|
@@ -425,19 +414,6 @@ SASS
|
|
425
414
|
assert_raise_message(Sass::SyntaxError, "() isn't a valid CSS value.") {resolve("nth(append((), ()), 1)")}
|
426
415
|
end
|
427
416
|
|
428
|
-
def test_deep_argument_error_not_unwrapped
|
429
|
-
assert_raise_message(ArgumentError, 'wrong number of arguments (0 for 1)') {resolve("arg-error()")}
|
430
|
-
end
|
431
|
-
|
432
|
-
def test_shallow_argument_error_unwrapped
|
433
|
-
assert_raise_message(Sass::SyntaxError, "wrong number of arguments (1 for 0) for `arg-error'") {resolve("arg-error(1)")}
|
434
|
-
end
|
435
|
-
|
436
|
-
def test_boolean_ops_short_circuit
|
437
|
-
assert_equal "false", resolve("$ie and $ie <= 7", {}, env('ie' => Sass::Script::Bool.new(false)))
|
438
|
-
assert_equal "true", resolve("$ie or $undef", {}, env('ie' => Sass::Script::Bool.new(true)))
|
439
|
-
end
|
440
|
-
|
441
417
|
# Regression Tests
|
442
418
|
|
443
419
|
def test_funcall_has_higher_precedence_than_color_name
|
data/test/sass/scss/css_test.rb
CHANGED
@@ -412,15 +412,6 @@ foo {
|
|
412
412
|
SCSS
|
413
413
|
end
|
414
414
|
|
415
|
-
def test_element_function
|
416
|
-
assert_parses <<SCSS
|
417
|
-
foo {
|
418
|
-
a: -moz-element(#foo);
|
419
|
-
b: -webkit-element(#foo);
|
420
|
-
b: -foobar-element(#foo); }
|
421
|
-
SCSS
|
422
|
-
end
|
423
|
-
|
424
415
|
def test_unary_ops
|
425
416
|
assert_equal <<CSS, render(<<SCSS)
|
426
417
|
foo {
|
@@ -595,50 +586,6 @@ CSS
|
|
595
586
|
SCSS
|
596
587
|
end
|
597
588
|
|
598
|
-
def test_moz_document_directive
|
599
|
-
assert_equal <<CSS, render(<<SCSS)
|
600
|
-
@-moz-document url(http://www.w3.org/),
|
601
|
-
url-prefix(http://www.w3.org/Style/),
|
602
|
-
domain(mozilla.org),
|
603
|
-
regexp("^https:.*") {
|
604
|
-
.foo {
|
605
|
-
a: b; } }
|
606
|
-
CSS
|
607
|
-
@-moz-document url(http://www.w3.org/),
|
608
|
-
url-prefix(http://www.w3.org/Style/),
|
609
|
-
domain(mozilla.org),
|
610
|
-
regexp("^https:.*") {
|
611
|
-
.foo {a: b}
|
612
|
-
}
|
613
|
-
SCSS
|
614
|
-
end
|
615
|
-
|
616
|
-
def test_supports
|
617
|
-
assert_equal <<CSS, render(<<SCSS)
|
618
|
-
@supports (a: b) and (c: d) or (not (d: e)) and ((not (f: g)) or (not ((h: i) and (j: k)))) {
|
619
|
-
.foo {
|
620
|
-
a: b; } }
|
621
|
-
CSS
|
622
|
-
@supports (a: b) and (c: d) or (not (d: e)) and ((not (f: g)) or (not ((h: i) and (j: k)))) {
|
623
|
-
.foo {
|
624
|
-
a: b;
|
625
|
-
}
|
626
|
-
}
|
627
|
-
SCSS
|
628
|
-
|
629
|
-
assert_equal <<CSS, render(<<SCSS)
|
630
|
-
@-prefix-supports (a: b) and (c: d) or (not (d: e)) and ((not (f: g)) or (not ((h: i) and (j: k)))) {
|
631
|
-
.foo {
|
632
|
-
a: b; } }
|
633
|
-
CSS
|
634
|
-
@-prefix-supports (a: b) and (c: d) or (not (d: e)) and ((not (f: g)) or (not ((h: i) and (j: k)))) {
|
635
|
-
.foo {
|
636
|
-
a: b;
|
637
|
-
}
|
638
|
-
}
|
639
|
-
SCSS
|
640
|
-
end
|
641
|
-
|
642
589
|
## Selectors
|
643
590
|
|
644
591
|
# Taken from http://www.w3.org/TR/css3-selectors/#selectors
|
@@ -853,12 +800,6 @@ SCSS
|
|
853
800
|
assert_selector_parses('E*:hover')
|
854
801
|
end
|
855
802
|
|
856
|
-
def test_spaceless_combo_selectors
|
857
|
-
assert_equal "E > F {\n a: b; }\n", render("E>F { a: b;} ")
|
858
|
-
assert_equal "E ~ F {\n a: b; }\n", render("E~F { a: b;} ")
|
859
|
-
assert_equal "E + F {\n a: b; }\n", render("E+F { a: b;} ")
|
860
|
-
end
|
861
|
-
|
862
803
|
## Errors
|
863
804
|
|
864
805
|
def test_invalid_directives
|
@@ -946,10 +887,6 @@ SCSS
|
|
946
887
|
|
947
888
|
## Regressions
|
948
889
|
|
949
|
-
def test_selector_without_closing_bracket
|
950
|
-
assert_not_parses('"]"', "foo[bar <err>{a: b}")
|
951
|
-
end
|
952
|
-
|
953
890
|
def test_closing_line_comment_end_with_compact_output
|
954
891
|
assert_equal(<<CSS, render(<<SCSS, :style => :compact))
|
955
892
|
/* foo */
|
@@ -962,21 +899,6 @@ bar {baz: bang}
|
|
962
899
|
SCSS
|
963
900
|
end
|
964
901
|
|
965
|
-
def test_single_line_comment_within_multiline_comment
|
966
|
-
assert_equal(<<CSS, render(<<SCSS))
|
967
|
-
body {
|
968
|
-
/*
|
969
|
-
//comment here
|
970
|
-
*/ }
|
971
|
-
CSS
|
972
|
-
body {
|
973
|
-
/*
|
974
|
-
//comment here
|
975
|
-
*/
|
976
|
-
}
|
977
|
-
SCSS
|
978
|
-
end
|
979
|
-
|
980
902
|
private
|
981
903
|
|
982
904
|
def assert_selector_parses(selector)
|
@@ -987,7 +909,7 @@ SCSS
|
|
987
909
|
end
|
988
910
|
|
989
911
|
def render(scss, options = {})
|
990
|
-
tree = Sass::SCSS::CssParser.new(scss
|
912
|
+
tree = Sass::SCSS::CssParser.new(scss).parse
|
991
913
|
tree.options = Sass::Engine::DEFAULT_OPTIONS.merge(options)
|
992
914
|
tree.render
|
993
915
|
end
|