sass 3.1.17 → 3.1.18

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -147,7 +147,7 @@ def get_version
147
147
  version.map! {|n| n =~ /^[0-9]+$/ ? n.to_i : n}
148
148
  return written_version unless version.size == 5 && version[3] == "alpha" # prerelease
149
149
 
150
- return written_version if (commit_count = `git log --pretty=oneline --first-parent stable.. | wc -l`).empty?
150
+ return written_version if (commit_count = `git log --pretty=oneline HEAD ^stable | wc -l`).empty?
151
151
  version[4] = commit_count.strip
152
152
  version.join('.')
153
153
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.17
1
+ 3.1.18
@@ -1148,8 +1148,8 @@ module Sass::Script
1148
1148
  # Rounds a number up to the nearest whole number.
1149
1149
  #
1150
1150
  # @example
1151
- # ciel(10.4px) => 11px
1152
- # ciel(10.6px) => 11px
1151
+ # ceil(10.4px) => 11px
1152
+ # ceil(10.6px) => 11px
1153
1153
  # @param value [Number] The number
1154
1154
  # @return [Number] The rounded number
1155
1155
  # @raise [ArgumentError] if `value` isn't a number
@@ -19,5 +19,10 @@ module Sass::Tree
19
19
  @value = value
20
20
  super()
21
21
  end
22
+
23
+ # @return [String] The name of the directive, including `@`.
24
+ def name
25
+ value.gsub(/ .*$/, '')
26
+ end
22
27
  end
23
28
  end
@@ -25,5 +25,17 @@ module Sass::Tree
25
25
  @selector = selector
26
26
  super()
27
27
  end
28
+
29
+ # Disables this `@extend` due to it being inside a directive.
30
+ def disable!
31
+ @disabled = true
32
+ end
33
+
34
+ # Whether this `@extend` is disabled due to it being inside a directive.
35
+ #
36
+ # @return [Boolean]
37
+ def disabled?
38
+ @disabled
39
+ end
28
40
  end
29
41
  end
@@ -33,7 +33,7 @@ module Sass::Tree::Visitors
33
33
  # @return [Object] The return value of the `visit_*` method for this node.
34
34
  def visit(node)
35
35
  method = "visit_#{node_name node}"
36
- if self.respond_to?(method)
36
+ if self.respond_to?(method, true)
37
37
  self.send(method, node) {visit_children(node)}
38
38
  else
39
39
  visit_children(node)
@@ -2,13 +2,14 @@
2
2
  class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
3
3
  protected
4
4
 
5
+ def initialize
6
+ @parents = []
7
+ end
8
+
5
9
  def visit(node)
6
- if error = (@parent && (
7
- try_send("invalid_#{node_name @parent}_child?", @parent, node) ||
8
- try_send("invalid_#{node_name node}_parent?", @parent, node))) ||
9
- (@real_parent && (
10
- try_send("invalid_#{node_name @real_parent}_real_child?", @real_parent, node) ||
11
- try_send("invalid_#{node_name node}_real_parent?", @real_parent, node)))
10
+ if error = @parent && (
11
+ try_send("invalid_#{node_name @parent}_child?", @parent, node) ||
12
+ try_send("invalid_#{node_name node}_parent?", @parent, node))
12
13
  raise Sass::SyntaxError.new(error)
13
14
  end
14
15
  super
@@ -22,11 +23,11 @@ class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
22
23
  def visit_children(parent)
23
24
  old_parent = @parent
24
25
  @parent = parent unless is_any_of?(parent, SCRIPT_NODES)
25
- old_real_parent, @real_parent = @real_parent, parent
26
+ @parents.push parent
26
27
  super
27
28
  ensure
28
29
  @parent = old_parent
29
- @real_parent = old_real_parent
30
+ @parents.pop
30
31
  end
31
32
 
32
33
  def visit_root(node)
@@ -51,7 +52,19 @@ class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
51
52
  VALID_EXTEND_PARENTS = [Sass::Tree::RuleNode, Sass::Tree::MixinDefNode]
52
53
  def invalid_extend_parent?(parent, child)
53
54
  unless is_any_of?(parent, VALID_EXTEND_PARENTS)
54
- "Extend directives may only be used within rules."
55
+ return "Extend directives may only be used within rules."
56
+ end
57
+
58
+ if !child.disabled? &&
59
+ directive = @parents.find {|p| p.is_a?(Sass::Tree::DirectiveNode)}
60
+ child.disable!
61
+ Sass::Util.sass_warn <<WARNING
62
+ DEPRECATION WARNING on line #{child.line}#{" of #{child.filename}" if child.filename}:
63
+ Using @extend within directives (e.g. #{directive.name}) is deprecated.
64
+ It will be an error in Sass 3.2.
65
+ This will only work once @extend is supported natively in the browser.
66
+ WARNING
67
+ nil
55
68
  end
56
69
  end
57
70
 
@@ -69,12 +82,9 @@ class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
69
82
  end
70
83
  end
71
84
 
72
- VALID_IMPORT_PARENTS = [
73
- Sass::Tree::IfNode, Sass::Tree::ForNode, Sass::Tree::WhileNode,
74
- Sass::Tree::EachNode, Sass::Tree::MixinDefNode
75
- ]
85
+ INVALID_IMPORT_PARENTS = CONTROL_NODES + [Sass::Tree::MixinDefNode]
76
86
  def invalid_import_parent?(parent, child)
77
- if is_any_of?(@real_parent, VALID_IMPORT_PARENTS)
87
+ unless (@parents.map {|p| p.class} & INVALID_IMPORT_PARENTS).empty?
78
88
  return "Import directives may not be used within control directives or mixins."
79
89
  end
80
90
  return if parent.is_a?(Sass::Tree::RootNode)
@@ -89,10 +99,6 @@ class Sass::Tree::Visitors::CheckNesting < Sass::Tree::Visitors::Base
89
99
  raise e
90
100
  end
91
101
 
92
- def invalid_import_real_parent?(parent, child)
93
-
94
- end
95
-
96
102
  def invalid_mixindef_parent?(parent, child)
97
103
  "Mixins may only be defined at the root of a document." unless parent.is_a?(Sass::Tree::RootNode)
98
104
  end
@@ -82,6 +82,7 @@ class Sass::Tree::Visitors::Cssize < Sass::Tree::Visitors::Base
82
82
 
83
83
  # Registers an extension in the `@extends` subset map.
84
84
  def visit_extend(node)
85
+ return [] if node.disabled?
85
86
  node.resolved_selector.members.each do |seq|
86
87
  if seq.members.size > 1
87
88
  raise Sass::SyntaxError.new("Can't extend #{seq.to_a.join}: can't extend nested selectors")
@@ -61,7 +61,9 @@ MSG
61
61
  "@import templates/basic\n foo" => "Illegal nesting: Nothing may be nested beneath import directives.",
62
62
  "foo\n @import foo.css" => "CSS import directives may only be used at the root of a document.",
63
63
  "@if true\n @import foo" => "Import directives may not be used within control directives or mixins.",
64
+ "@if true\n .foo\n @import foo" => "Import directives may not be used within control directives or mixins.",
64
65
  "@mixin foo\n @import foo" => "Import directives may not be used within control directives or mixins.",
66
+ "@mixin foo\n .foo\n @import foo" => "Import directives may not be used within control directives or mixins.",
65
67
  "@import foo;" => "Invalid @import: expected end of line, was \";\".",
66
68
  '$foo: "bar" "baz" !' => %Q{Invalid CSS after ""bar" "baz" ": expected expression (e.g. 1px, bold), was "!"},
67
69
  '$foo: "bar" "baz" $' => %Q{Invalid CSS after ""bar" "baz" ": expected expression (e.g. 1px, bold), was "$"},
@@ -1369,6 +1369,43 @@ CSS
1369
1369
  SCSS
1370
1370
  end
1371
1371
 
1372
+
1373
+ def test_extend_in_media
1374
+ assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SCSS))}
1375
+ DEPRECATION WARNING on line 3 of test_extend_in_media_inline.sass:
1376
+ Using @extend within directives (e.g. @media) is deprecated.
1377
+ It will be an error in Sass 3.2.
1378
+ This will only work once @extend is supported natively in the browser.
1379
+ WARN
1380
+ .foo {
1381
+ a: b; }
1382
+ CSS
1383
+ .foo {a: b}
1384
+ @media screen {
1385
+ .bar {@extend .foo}
1386
+ }
1387
+ SCSS
1388
+ end
1389
+
1390
+ def test_extend_in_unknown_directive
1391
+ assert_warning(<<WARN) {assert_equal(<<CSS, render(<<SCSS))}
1392
+ DEPRECATION WARNING on line 3 of test_extend_in_unknown_directive_inline.sass:
1393
+ Using @extend within directives (e.g. @flooblehoof) is deprecated.
1394
+ It will be an error in Sass 3.2.
1395
+ This will only work once @extend is supported natively in the browser.
1396
+ WARN
1397
+ .foo {
1398
+ a: b; }
1399
+
1400
+ @flooblehoof {}
1401
+ CSS
1402
+ .foo {a: b}
1403
+ @flooblehoof {
1404
+ .bar {@extend .foo}
1405
+ }
1406
+ SCSS
1407
+ end
1408
+
1372
1409
  # Regression Tests
1373
1410
 
1374
1411
  def test_duplicated_selector_with_newlines
@@ -193,6 +193,9 @@ These options can be set through `Listen.to` params or via methods (see the "Obj
193
193
  :latency => 0.5 # Set the delay (**in seconds**) between checking for changes
194
194
  # default: 0.1 sec (1.0 sec for polling)
195
195
 
196
+ :relative_paths => true # Enable the use of relative paths in the callback.
197
+ # default: false
198
+
196
199
  :force_polling => true # Force the use of the polling adapter
197
200
  # default: none
198
201
 
@@ -83,6 +83,14 @@ module Listen
83
83
  @turnstile.signal # ensure no thread is blocked
84
84
  end
85
85
 
86
+ # Returns whether the adapter is statred or not
87
+ #
88
+ # @return [Boolean] whether the adapter is started or not
89
+ #
90
+ def started?
91
+ @stop.nil? ? false : !@stop
92
+ end
93
+
86
94
  # Blocks the main thread until the poll thread
87
95
  # calls the callback.
88
96
  #
@@ -129,7 +137,7 @@ module Listen
129
137
  ensure
130
138
  Thread.kill(t) if t
131
139
  FileUtils.rm(test_file) if File.exists?(test_file)
132
- adapter.stop
140
+ adapter.stop if adapter && adapter.started?
133
141
  end
134
142
 
135
143
  private
@@ -1,22 +1,33 @@
1
1
  module Listen
2
2
  module Adapters
3
3
 
4
- # Watched INotify EVENTS
5
- #
6
- # @see http://www.tin.org/bin/man.cgi?section=7&topic=inotify
7
- # @see https://github.com/nex3/rb-inotify/blob/master/lib/rb-inotify/notifier.rb#L99-L177
8
- #
9
- EVENTS = %w[recursive attrib close modify move create delete delete_self move_self]
10
-
11
4
  # Listener implementation for Linux `inotify`.
12
5
  #
13
6
  class Linux < Adapter
14
7
 
8
+ # Watched inotify events
9
+ #
10
+ # @see http://www.tin.org/bin/man.cgi?section=7&topic=inotify
11
+ # @see https://github.com/nex3/rb-inotify/blob/master/lib/rb-inotify/notifier.rb#L99-L177
12
+ #
13
+ EVENTS = %w[recursive attrib close modify move create delete delete_self move_self]
14
+
15
+ # The message to show when the limit of inotify watchers is not enough
16
+ #
17
+ INOTIFY_LIMIT_MESSAGE = <<-EOS.gsub(/^\s*/, '')
18
+ Listen error: unable to monitor directories for changes.
19
+
20
+ Please head to https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers
21
+ for information on how to solve this issue.
22
+ EOS
23
+
15
24
  # Initializes the Adapter. See {Listen::Adapter#initialize} for more info.
16
25
  #
17
26
  def initialize(directories, options = {}, &callback)
18
27
  super
19
28
  @worker = init_worker
29
+ rescue Errno::ENOSPC
30
+ abort(INOTIFY_LIMIT_MESSAGE)
20
31
  end
21
32
 
22
33
  # Starts the adapter.
@@ -15,6 +15,15 @@ module Listen
15
15
 
16
16
  DEFAULT_IGNORED_EXTENSIONS = %w[.DS_Store]
17
17
 
18
+ # Defines the used precision based on the type of mtime returned by the
19
+ # system (whether its in milliseconds or just seconds)
20
+ #
21
+ HIGH_PRECISION_SUPPORTED = File.mtime(__FILE__).to_f.to_s[-2..-1] != '.0'
22
+
23
+ # Data structure used to save meta data about a path
24
+ #
25
+ MetaData = Struct.new(:type, :mtime)
26
+
18
27
  # Class methods
19
28
  #
20
29
  class << self
@@ -71,7 +80,7 @@ module Listen
71
80
  # Adds ignoring patterns to the record.
72
81
  #
73
82
  # @example Ignore some paths
74
- # ignore ".git", ".svn"
83
+ # ignore %r{^ignored/path/}, /man/
75
84
  #
76
85
  # @param [Regexp] regexp a pattern for ignoring paths
77
86
  #
@@ -86,8 +95,6 @@ module Listen
86
95
  #
87
96
  # @param [Regexp] regexp a pattern for filtering paths
88
97
  #
89
- # @return [Listen::Listener] the listener itself
90
- #
91
98
  def filter(*regexps)
92
99
  @filtering_patterns.merge(regexps)
93
100
  end
@@ -123,7 +130,6 @@ module Listen
123
130
  def build
124
131
  @paths = Hash.new { |h, k| h[k] = Hash.new }
125
132
  important_paths { |path| insert_path(path) }
126
- @updated_at = Time.now.to_i
127
133
  end
128
134
 
129
135
  # Detects changes in the passed directories, updates
@@ -139,13 +145,13 @@ module Listen
139
145
  def fetch_changes(directories, options = {})
140
146
  @changes = { :modified => [], :added => [], :removed => [] }
141
147
  directories = directories.sort_by { |el| el.length }.reverse # diff sub-dir first
142
- update_time = Time.now.to_i
148
+
143
149
  directories.each do |directory|
144
150
  next unless directory[@directory] # Path is or inside directory
145
151
  detect_modifications_and_removals(directory, options)
146
152
  detect_additions(directory, options)
147
153
  end
148
- @updated_at = update_time
154
+
149
155
  @changes
150
156
  end
151
157
 
@@ -174,10 +180,10 @@ module Listen
174
180
  # @option options [Boolean] relative_paths whether or not to use relative paths for changes
175
181
  #
176
182
  def detect_modifications_and_removals(directory, options = {})
177
- @paths[directory].each do |basename, type|
183
+ @paths[directory].each do |basename, meta_data|
178
184
  path = File.join(directory, basename)
179
185
 
180
- case type
186
+ case meta_data.type
181
187
  when 'Dir'
182
188
  if File.directory?(path)
183
189
  detect_modifications_and_removals(path, options) if options[:recursive]
@@ -188,8 +194,15 @@ module Listen
188
194
  end
189
195
  when 'File'
190
196
  if File.exist?(path)
191
- new_mtime = File.mtime(path).to_i
192
- if @updated_at < new_mtime || (@updated_at == new_mtime && content_modified?(path))
197
+ new_mtime = mtime_of(path)
198
+
199
+ # First check if we are in the same second (to update checksums)
200
+ # before checking the time difference
201
+ if (meta_data.mtime.to_i == new_mtime.to_i && content_modified?(path)) || meta_data.mtime < new_mtime
202
+ # Update the meta data of the files
203
+ meta_data.mtime = new_mtime
204
+ @paths[directory][basename] = meta_data
205
+
193
206
  @changes[:modified] << (options[:relative_paths] ? relative_to_base(path) : path)
194
207
  end
195
208
  else
@@ -239,12 +252,12 @@ module Listen
239
252
  #
240
253
  def content_modified?(path)
241
254
  sha1_checksum = Digest::SHA1.file(path).to_s
242
- if @sha1_checksums[path] != sha1_checksum
243
- @sha1_checksums[path] = sha1_checksum
244
- true
245
- else
246
- false
247
- end
255
+ return false if @sha1_checksums[path] == sha1_checksum
256
+
257
+ had_no_checksum = @sha1_checksums[path].nil?
258
+ @sha1_checksums[path] = sha1_checksum
259
+
260
+ had_no_checksum ? false : true
248
261
  end
249
262
 
250
263
  # Traverses the base directory looking for paths that should
@@ -275,7 +288,10 @@ module Listen
275
288
  # @param [String] path the path to insert in @paths.
276
289
  #
277
290
  def insert_path(path)
278
- @paths[File.dirname(path)][File.basename(path)] = File.directory?(path) ? 'Dir' : 'File'
291
+ meta_data = MetaData.new
292
+ meta_data.type = File.directory?(path) ? 'Dir' : 'File'
293
+ meta_data.mtime = mtime_of(path) unless meta_data.type == 'Dir' # mtimes of dirs are not used yet
294
+ @paths[File.dirname(path)][File.basename(path)] = meta_data
279
295
  end
280
296
 
281
297
  # Returns whether or not a path exists in the paths hash.
@@ -287,5 +303,15 @@ module Listen
287
303
  def existing_path?(path)
288
304
  @paths[File.dirname(path)][File.basename(path)] != nil
289
305
  end
306
+
307
+ # Returns the modification time of a file based on the precision defined by the system
308
+ #
309
+ # @param [String] file the file for which the mtime must be returned
310
+ #
311
+ # @return [Fixnum, Float] the mtime of the file
312
+ #
313
+ def mtime_of(file)
314
+ File.mtime(file).send(HIGH_PRECISION_SUPPORTED ? :to_f : :to_i)
315
+ end
290
316
  end
291
317
  end
@@ -119,7 +119,7 @@ module Listen
119
119
  self
120
120
  end
121
121
 
122
- # Defines whether the use of the polling adapter
122
+ # Sets whether the use of the polling adapter
123
123
  # should be forced or not.
124
124
  #
125
125
  # @example Forcing the use of the polling adapter
@@ -134,6 +134,21 @@ module Listen
134
134
  self
135
135
  end
136
136
 
137
+ # Sets whether the paths in the callback should be
138
+ # relative or absolute.
139
+ #
140
+ # @example Enabling relative paths in the callback
141
+ # relative_paths true
142
+ #
143
+ # @param [Boolean] value whether to enable relative paths in the callback or not
144
+ #
145
+ # @return [Listen::Listener] the listener
146
+ #
147
+ def relative_paths(value)
148
+ @use_relative_paths = value
149
+ self
150
+ end
151
+
137
152
  # Defines a custom polling fallback message of disable it.
138
153
  #
139
154
  # @example Disabling the polling fallback message
@@ -9,6 +9,17 @@ describe Listen::Adapters::Linux do
9
9
 
10
10
  it_should_behave_like 'a filesystem adapter'
11
11
  it_should_behave_like 'an adapter that call properly listener#on_change'
12
+
13
+ describe '#initialize' do
14
+ context 'when the inotify limit for watched files is not enough' do
15
+ before { INotify::Notifier.any_instance.should_receive(:watch).and_raise(Errno::ENOSPC) }
16
+
17
+ it 'fails gracefully' do
18
+ described_class.any_instance.should_receive(:abort).with(described_class::INOTIFY_LIMIT_MESSAGE)
19
+ described_class.new(File.dirname(__FILE__))
20
+ end
21
+ end
22
+ end
12
23
  else
13
24
  it "isn't usable on Linux with #{RbConfig::CONFIG['RUBY_INSTALL_NAME']}" do
14
25
  described_class.should_not be_usable
@@ -125,9 +125,9 @@ describe Listen::DirectoryRecord do
125
125
  record = described_class.new(path)
126
126
  record.build
127
127
 
128
- record.paths[path]['file.rb'].should eq 'File'
129
- record.paths[path]['a_directory'].should eq 'Dir'
130
- record.paths["#{path}/a_directory"]['file.txt'].should eq 'File'
128
+ record.paths[path]['file.rb'].type.should eq 'File'
129
+ record.paths[path]['a_directory'].type.should eq 'Dir'
130
+ record.paths["#{path}/a_directory"]['file.txt'].type.should eq 'File'
131
131
  end
132
132
  end
133
133
 
@@ -175,9 +175,9 @@ describe Listen::DirectoryRecord do
175
175
  record.build
176
176
 
177
177
  record.paths[path]['file.rb'].should be_nil
178
- record.paths[path]['file.zip'].should eq 'File'
179
- record.paths[path]['a_directory'].should eq 'Dir'
180
- record.paths["#{path}/a_directory"]['file.txt'].should eq 'File'
178
+ record.paths[path]['file.zip'].type.should eq 'File'
179
+ record.paths[path]['a_directory'].type.should eq 'Dir'
180
+ record.paths["#{path}/a_directory"]['file.txt'].type.should eq 'File'
181
181
  record.paths["#{path}/a_directory"]['file.rb'].should be_nil
182
182
  end
183
183
  end
@@ -365,13 +365,17 @@ describe Listen::DirectoryRecord do
365
365
  end
366
366
  end
367
367
 
368
- context 'during the same second' do
369
- it 'always detects the modified file the first time' do
368
+ context 'during the same second at which we are checking for changes' do
369
+ before { ensure_same_second }
370
+
371
+ # The following test can only be run on systems that report
372
+ # modification times in milliseconds.
373
+ it 'always detects the modified file the first time', :if => described_class::HIGH_PRECISION_SUPPORTED do
370
374
  fixtures do |path|
371
375
  touch 'existing_file.txt'
372
376
 
373
377
  modified, added, removed = changes(path) do
374
- small_time_difference
378
+ sleep 0.3 # make sure the mtime is changed a bit
375
379
  touch 'existing_file.txt'
376
380
  end
377
381
 
@@ -381,6 +385,23 @@ describe Listen::DirectoryRecord do
381
385
  end
382
386
  end
383
387
 
388
+ context '#27 - when a file is created and then checked for modifications at the same second' do
389
+ # This issue was the result of checking a file for content changes when
390
+ # the mtime and the checking time are the same. In this case there
391
+ # is no checksum saved, so the file was reported as being changed.
392
+ it ' does not report any changes' do
393
+ fixtures do |path|
394
+ touch 'a_file.rb'
395
+
396
+ modified, added, removed = changes(path)
397
+
398
+ added.should be_empty
399
+ modified.should be_empty
400
+ removed.should be_empty
401
+ end
402
+ end
403
+ end
404
+
384
405
  it "doesn't detects the modified file the second time if the content haven't changed" do
385
406
  fixtures do |path|
386
407
  touch 'existing_file.txt'
@@ -408,7 +429,6 @@ describe Listen::DirectoryRecord do
408
429
  end
409
430
 
410
431
  modified, added, removed = changes(path, :use_last_record => true) do
411
- small_time_difference
412
432
  open('existing_file.txt', 'w') { |f| f.write('foo') }
413
433
  end
414
434
 
@@ -869,8 +889,9 @@ describe Listen::DirectoryRecord do
869
889
  touch 'a_directory/a_file.rb'
870
890
  touch 'a_directory/b_file.rb'
871
891
 
892
+ small_time_difference
893
+
872
894
  modified, added, removed = changes(path) do
873
- small_time_difference
874
895
  touch 'b_file.rb'
875
896
  touch 'a_directory/a_file.rb'
876
897
  end
@@ -43,6 +43,31 @@ shared_examples_for 'a filesystem adapter' do
43
43
  end
44
44
  end
45
45
  end
46
+
47
+ describe '#started?' do
48
+ context 'with a new adapter' do
49
+ it 'returns false' do
50
+ subject.should_not be_started
51
+ end
52
+ end
53
+
54
+ context 'with a stopped adapter' do
55
+ before { subject.start(false); subject.stop }
56
+
57
+ it 'returns false' do
58
+ subject.should_not be_started
59
+ end
60
+ end
61
+
62
+ context 'with a started adapter' do
63
+ before { subject.start(false) }
64
+ after { subject.start }
65
+
66
+ it 'returns true' do
67
+ subject.should be_started
68
+ end
69
+ end
70
+ end
46
71
  end
47
72
 
48
73
  shared_examples_for 'an adapter that call properly listener#on_change' do |*args|
@@ -66,6 +91,24 @@ shared_examples_for 'an adapter that call properly listener#on_change' do |*args
66
91
  end
67
92
  end
68
93
 
94
+ context 'given a symlink' do
95
+ it 'detects the added file' do
96
+ fixtures do |path|
97
+ if options[:recursive]
98
+ listener.should_receive(:on_change).once.with([path], :recursive => true)
99
+ else
100
+ listener.should_receive(:on_change).once.with([path], {})
101
+ end
102
+
103
+ touch 'new_file.rb'
104
+
105
+ watch(listener, path) do
106
+ ln_s 'new_file.rb', 'new_file_symlink.rb'
107
+ end
108
+ end
109
+ end
110
+ end
111
+
69
112
  context 'given a new created directory' do
70
113
  it 'detects the added file' do
71
114
  fixtures do |path|
@@ -141,6 +184,25 @@ shared_examples_for 'an adapter that call properly listener#on_change' do |*args
141
184
  end
142
185
  end
143
186
 
187
+ context 'given a symlink' do
188
+ it 'detects the modified file' do
189
+ fixtures do |path|
190
+ if options[:recursive]
191
+ listener.should_receive(:on_change).once.with([path], :recursive => true)
192
+ else
193
+ listener.should_receive(:on_change).once.with([path], {})
194
+ end
195
+
196
+ touch 'existing_file.rb'
197
+ ln_s 'existing_file.rb', 'existing_file_symlink.rb'
198
+
199
+ watch(listener, path) do
200
+ touch 'existing_file.rb'
201
+ end
202
+ end
203
+ end
204
+ end
205
+
144
206
  context 'given a hidden file' do
145
207
  it 'detects the modified file' do
146
208
  fixtures do |path|
@@ -235,6 +297,25 @@ shared_examples_for 'an adapter that call properly listener#on_change' do |*args
235
297
  end
236
298
  end
237
299
 
300
+ context 'given a symlink' do
301
+ it 'detects the file move' do
302
+ fixtures do |path|
303
+ if options[:recursive]
304
+ listener.should_receive(:on_change).once.with([path], :recursive => true)
305
+ else
306
+ listener.should_receive(:on_change).once.with([path], {})
307
+ end
308
+
309
+ touch 'move_me.rb'
310
+ ln_s 'move_me.rb', 'move_me_symlink.rb'
311
+
312
+ watch(listener, path) do
313
+ mv 'move_me_symlink.rb', 'new_symlink.rb'
314
+ end
315
+ end
316
+ end
317
+ end
318
+
238
319
  context 'given an existing directory' do
239
320
  it 'detects the file move into the directory' do
240
321
  fixtures do |path|
@@ -335,6 +416,25 @@ shared_examples_for 'an adapter that call properly listener#on_change' do |*args
335
416
  end
336
417
  end
337
418
 
419
+ context 'given a symlink' do
420
+ it 'detects the file removal' do
421
+ fixtures do |path|
422
+ if options[:recursive]
423
+ listener.should_receive(:on_change).once.with([path], :recursive => true)
424
+ else
425
+ listener.should_receive(:on_change).once.with([path], {})
426
+ end
427
+
428
+ touch 'unnecessary.rb'
429
+ ln_s 'unnecessary.rb', 'unnecessary_symlink.rb'
430
+
431
+ watch(listener, path) do
432
+ rm 'unnecessary_symlink.rb'
433
+ end
434
+ end
435
+ end
436
+ end
437
+
338
438
  context 'given an existing directory' do
339
439
  it 'detects the file removal' do
340
440
  fixtures do |path|
@@ -19,7 +19,7 @@ def changes(root_path, options = {})
19
19
  @record.build
20
20
  end
21
21
 
22
- yield
22
+ yield if block_given?
23
23
 
24
24
  paths = options.delete(:paths) || [root_path]
25
25
  options[:recursive] = true if options[:recursive].nil?
@@ -41,3 +41,15 @@ def small_time_difference
41
41
 
42
42
  sleep( 1.5 - (diff < 0.5 ? diff : 0.4) )
43
43
  end
44
+
45
+ # Ensures that the test runs at almost the same second at which
46
+ # changes are being checked.
47
+ #
48
+ def ensure_same_second
49
+ t = Time.now
50
+ diff = t.to_f - t.to_i
51
+
52
+ if diff > 0.1 # We are not at the beginning of a second
53
+ sleep 1.1 - diff # 1.1 is used instead of 1 to account for the processing time (estimated at 0.1 sec)
54
+ end
55
+ end
@@ -115,6 +115,17 @@ shared_examples_for 'a listener to changes on a file-system' do
115
115
  end
116
116
  end
117
117
 
118
+ describe '#relative_paths' do
119
+ it 'sets the relative paths option for paths in the callback' do
120
+ subject.relative_paths(true)
121
+ subject.instance_variable_get(:@use_relative_paths).should be_true
122
+ end
123
+
124
+ it 'returns the same listener to allow chaining' do
125
+ subject.relative_paths(true).should equal subject
126
+ end
127
+ end
128
+
118
129
  describe '#polling_fallback_message' do
119
130
  it 'sets custom polling fallback message to @adapter_options' do
120
131
  subject.polling_fallback_message('custom message')
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass
3
3
  version: !ruby/object:Gem::Version
4
- hash: 33
5
- prerelease:
4
+ hash: 39
5
+ prerelease: false
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
- - 17
10
- version: 3.1.17
9
+ - 18
10
+ version: 3.1.18
11
11
  platform: ruby
12
12
  authors:
13
13
  - Nathan Weizenbaum
@@ -17,7 +17,8 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2012-05-05 00:00:00 Z
20
+ date: 2012-05-11 00:00:00 -07:00
21
+ default_executable:
21
22
  dependencies:
22
23
  - !ruby/object:Gem::Dependency
23
24
  name: yard
@@ -63,258 +64,259 @@ extra_rdoc_files: []
63
64
 
64
65
  files:
65
66
  - rails/init.rb
66
- - lib/sass/util/multibyte_string_scanner.rb
67
- - lib/sass/util/subset_map.rb
68
- - lib/sass/shared.rb
69
- - lib/sass/error.rb
70
- - lib/sass/importers.rb
71
- - lib/sass/cache_stores/filesystem.rb
72
- - lib/sass/cache_stores/chain.rb
73
- - lib/sass/cache_stores/memory.rb
74
- - lib/sass/cache_stores/null.rb
75
- - lib/sass/cache_stores/base.rb
76
- - lib/sass/environment.rb
77
- - lib/sass/plugin/rack.rb
78
- - lib/sass/plugin/staleness_checker.rb
67
+ - lib/sass.rb
68
+ - lib/sass/cache_stores.rb
79
69
  - lib/sass/plugin/compiler.rb
80
- - lib/sass/plugin/configuration.rb
81
70
  - lib/sass/plugin/merb.rb
71
+ - lib/sass/plugin/staleness_checker.rb
72
+ - lib/sass/plugin/rack.rb
82
73
  - lib/sass/plugin/rails.rb
74
+ - lib/sass/plugin/configuration.rb
83
75
  - lib/sass/plugin/generic.rb
84
- - lib/sass/railtie.rb
85
- - lib/sass/logger.rb
86
- - lib/sass/callbacks.rb
87
- - lib/sass/script/string.rb
88
- - lib/sass/script/node.rb
89
- - lib/sass/script/lexer.rb
90
- - lib/sass/script/string_interpolation.rb
91
- - lib/sass/script/css_parser.rb
92
- - lib/sass/script/variable.rb
93
- - lib/sass/script/literal.rb
94
- - lib/sass/script/bool.rb
95
- - lib/sass/script/number.rb
96
- - lib/sass/script/unary_operation.rb
97
- - lib/sass/script/css_lexer.rb
98
- - lib/sass/script/operation.rb
99
- - lib/sass/script/parser.rb
100
- - lib/sass/script/funcall.rb
101
- - lib/sass/script/color.rb
102
- - lib/sass/script/interpolation.rb
103
- - lib/sass/script/list.rb
104
- - lib/sass/script/functions.rb
105
76
  - lib/sass/version.rb
106
- - lib/sass/tree/visitors/deep_copy.rb
107
- - lib/sass/tree/visitors/set_options.rb
108
- - lib/sass/tree/visitors/cssize.rb
109
- - lib/sass/tree/visitors/to_css.rb
110
- - lib/sass/tree/visitors/perform.rb
111
- - lib/sass/tree/visitors/base.rb
112
- - lib/sass/tree/visitors/check_nesting.rb
113
- - lib/sass/tree/visitors/convert.rb
77
+ - lib/sass/cache_stores/chain.rb
78
+ - lib/sass/cache_stores/memory.rb
79
+ - lib/sass/cache_stores/null.rb
80
+ - lib/sass/cache_stores/filesystem.rb
81
+ - lib/sass/cache_stores/base.rb
82
+ - lib/sass/shared.rb
83
+ - lib/sass/repl.rb
84
+ - lib/sass/error.rb
85
+ - lib/sass/tree/import_node.rb
86
+ - lib/sass/tree/return_node.rb
114
87
  - lib/sass/tree/root_node.rb
115
- - lib/sass/tree/node.rb
116
88
  - lib/sass/tree/if_node.rb
117
89
  - lib/sass/tree/charset_node.rb
118
- - lib/sass/tree/extend_node.rb
119
- - lib/sass/tree/rule_node.rb
120
- - lib/sass/tree/mixin_def_node.rb
121
- - lib/sass/tree/return_node.rb
122
- - lib/sass/tree/mixin_node.rb
123
- - lib/sass/tree/prop_node.rb
124
- - lib/sass/tree/warn_node.rb
90
+ - lib/sass/tree/function_node.rb
91
+ - lib/sass/tree/media_node.rb
92
+ - lib/sass/tree/while_node.rb
93
+ - lib/sass/tree/for_node.rb
125
94
  - lib/sass/tree/directive_node.rb
95
+ - lib/sass/tree/rule_node.rb
126
96
  - lib/sass/tree/each_node.rb
97
+ - lib/sass/tree/node.rb
98
+ - lib/sass/tree/mixin_node.rb
99
+ - lib/sass/tree/extend_node.rb
100
+ - lib/sass/tree/mixin_def_node.rb
101
+ - lib/sass/tree/visitors/perform.rb
102
+ - lib/sass/tree/visitors/to_css.rb
103
+ - lib/sass/tree/visitors/check_nesting.rb
104
+ - lib/sass/tree/visitors/deep_copy.rb
105
+ - lib/sass/tree/visitors/set_options.rb
106
+ - lib/sass/tree/visitors/cssize.rb
107
+ - lib/sass/tree/visitors/convert.rb
108
+ - lib/sass/tree/visitors/base.rb
127
109
  - lib/sass/tree/comment_node.rb
128
- - lib/sass/tree/media_node.rb
129
- - lib/sass/tree/variable_node.rb
130
- - lib/sass/tree/function_node.rb
110
+ - lib/sass/tree/warn_node.rb
131
111
  - lib/sass/tree/debug_node.rb
132
- - lib/sass/tree/import_node.rb
133
- - lib/sass/tree/while_node.rb
134
- - lib/sass/tree/for_node.rb
112
+ - lib/sass/tree/prop_node.rb
113
+ - lib/sass/tree/variable_node.rb
114
+ - lib/sass/engine.rb
115
+ - lib/sass/plugin.rb
116
+ - lib/sass/root.rb
117
+ - lib/sass/importers.rb
118
+ - lib/sass/logger.rb
119
+ - lib/sass/util/multibyte_string_scanner.rb
120
+ - lib/sass/util/subset_map.rb
121
+ - lib/sass/scss.rb
122
+ - lib/sass/scss/static_parser.rb
123
+ - lib/sass/scss/parser.rb
135
124
  - lib/sass/scss/sass_parser.rb
136
- - lib/sass/scss/script_parser.rb
137
- - lib/sass/scss/css_parser.rb
138
125
  - lib/sass/scss/script_lexer.rb
139
126
  - lib/sass/scss/rx.rb
140
- - lib/sass/scss/parser.rb
141
- - lib/sass/scss/static_parser.rb
127
+ - lib/sass/scss/script_parser.rb
128
+ - lib/sass/scss/css_parser.rb
129
+ - lib/sass/logger/log_level.rb
130
+ - lib/sass/logger/base.rb
131
+ - lib/sass/css.rb
132
+ - lib/sass/script.rb
133
+ - lib/sass/util.rb
134
+ - lib/sass/importers/filesystem.rb
135
+ - lib/sass/importers/base.rb
136
+ - lib/sass/script/color.rb
137
+ - lib/sass/script/variable.rb
138
+ - lib/sass/script/operation.rb
139
+ - lib/sass/script/funcall.rb
140
+ - lib/sass/script/literal.rb
141
+ - lib/sass/script/parser.rb
142
+ - lib/sass/script/functions.rb
143
+ - lib/sass/script/number.rb
144
+ - lib/sass/script/string_interpolation.rb
145
+ - lib/sass/script/interpolation.rb
146
+ - lib/sass/script/node.rb
147
+ - lib/sass/script/bool.rb
148
+ - lib/sass/script/unary_operation.rb
149
+ - lib/sass/script/lexer.rb
150
+ - lib/sass/script/list.rb
151
+ - lib/sass/script/css_lexer.rb
152
+ - lib/sass/script/string.rb
153
+ - lib/sass/script/css_parser.rb
154
+ - lib/sass/selector.rb
142
155
  - lib/sass/less.rb
143
- - lib/sass/selector/simple_sequence.rb
156
+ - lib/sass/callbacks.rb
144
157
  - lib/sass/selector/simple.rb
145
158
  - lib/sass/selector/sequence.rb
146
159
  - lib/sass/selector/abstract_sequence.rb
147
160
  - lib/sass/selector/comma_sequence.rb
148
- - lib/sass/root.rb
149
- - lib/sass/importers/filesystem.rb
150
- - lib/sass/importers/base.rb
151
- - lib/sass/css.rb
152
- - lib/sass/selector.rb
153
- - lib/sass/engine.rb
154
- - lib/sass/plugin.rb
155
- - lib/sass/logger/log_level.rb
156
- - lib/sass/logger/base.rb
157
- - lib/sass/repl.rb
158
- - lib/sass/scss.rb
161
+ - lib/sass/selector/simple_sequence.rb
162
+ - lib/sass/railtie.rb
163
+ - lib/sass/environment.rb
159
164
  - lib/sass/exec.rb
160
- - lib/sass/util.rb
161
- - lib/sass/cache_stores.rb
162
- - lib/sass/script.rb
163
- - lib/sass.rb
164
- - vendor/listen/lib/listen.rb
165
+ - vendor/listen/README.md
166
+ - vendor/listen/Guardfile
167
+ - vendor/listen/Gemfile
165
168
  - vendor/listen/lib/listen/turnstile.rb
169
+ - vendor/listen/lib/listen/directory_record.rb
170
+ - vendor/listen/lib/listen/version.rb
166
171
  - vendor/listen/lib/listen/multi_listener.rb
167
- - vendor/listen/lib/listen/adapters/darwin.rb
172
+ - vendor/listen/lib/listen/listener.rb
168
173
  - vendor/listen/lib/listen/adapters/polling.rb
169
- - vendor/listen/lib/listen/adapters/windows.rb
174
+ - vendor/listen/lib/listen/adapters/darwin.rb
170
175
  - vendor/listen/lib/listen/adapters/linux.rb
176
+ - vendor/listen/lib/listen/adapters/windows.rb
171
177
  - vendor/listen/lib/listen/adapter.rb
172
- - vendor/listen/lib/listen/listener.rb
173
- - vendor/listen/lib/listen/version.rb
174
- - vendor/listen/lib/listen/directory_record.rb
175
- - vendor/listen/Vagrantfile
178
+ - vendor/listen/lib/listen.rb
176
179
  - vendor/listen/CHANGELOG.md
177
- - vendor/listen/LICENSE
178
180
  - vendor/listen/Rakefile
179
- - vendor/listen/Gemfile
180
- - vendor/listen/README.md
181
- - vendor/listen/Guardfile
181
+ - vendor/listen/LICENSE
182
182
  - vendor/listen/listen.gemspec
183
- - vendor/listen/spec/spec_helper.rb
184
- - vendor/listen/spec/listen_spec.rb
185
- - vendor/listen/spec/support/directory_record_helper.rb
186
- - vendor/listen/spec/support/fixtures_helper.rb
187
- - vendor/listen/spec/support/listeners_helper.rb
188
- - vendor/listen/spec/support/platform_helper.rb
189
- - vendor/listen/spec/support/adapter_helper.rb
190
- - vendor/listen/spec/listen/turnstile_spec.rb
191
- - vendor/listen/spec/listen/adapters/windows_spec.rb
192
- - vendor/listen/spec/listen/adapters/darwin_spec.rb
183
+ - vendor/listen/Vagrantfile
184
+ - vendor/listen/spec/listen/directory_record_spec.rb
193
185
  - vendor/listen/spec/listen/adapters/linux_spec.rb
186
+ - vendor/listen/spec/listen/adapters/darwin_spec.rb
194
187
  - vendor/listen/spec/listen/adapters/polling_spec.rb
188
+ - vendor/listen/spec/listen/adapters/windows_spec.rb
189
+ - vendor/listen/spec/listen/turnstile_spec.rb
195
190
  - vendor/listen/spec/listen/adapter_spec.rb
196
- - vendor/listen/spec/listen/directory_record_spec.rb
197
191
  - vendor/listen/spec/listen/listener_spec.rb
198
192
  - vendor/listen/spec/listen/multi_listener_spec.rb
199
- - bin/sass
200
- - bin/scss
193
+ - vendor/listen/spec/listen_spec.rb
194
+ - vendor/listen/spec/spec_helper.rb
195
+ - vendor/listen/spec/support/directory_record_helper.rb
196
+ - vendor/listen/spec/support/listeners_helper.rb
197
+ - vendor/listen/spec/support/adapter_helper.rb
198
+ - vendor/listen/spec/support/platform_helper.rb
199
+ - vendor/listen/spec/support/fixtures_helper.rb
201
200
  - bin/sass-convert
202
- - test/sass/plugin_test.rb
203
- - test/sass/util/subset_map_test.rb
204
- - test/sass/util/multibyte_string_scanner_test.rb
201
+ - bin/scss
202
+ - bin/sass
203
+ - test/Gemfile
204
+ - test/Gemfile.lock
205
+ - test/test_helper.rb
206
+ - test/sass/engine_test.rb
207
+ - test/sass/functions_test.rb
208
+ - test/sass/fixtures/test_staleness_check_across_importers.scss
209
+ - test/sass/fixtures/test_staleness_check_across_importers.css
210
+ - test/sass/data/hsl-rgb.txt
211
+ - test/sass/extend_test.rb
212
+ - test/sass/logger_test.rb
213
+ - test/sass/css2sass_test.rb
205
214
  - test/sass/templates/basic.sass
206
- - test/sass/templates/line_numbers.sass
207
- - test/sass/templates/nested_bork2.sass
208
- - test/sass/templates/_imported_charset_utf8.sass
209
- - test/sass/templates/mixin_bork.sass
210
- - test/sass/templates/import_charset.sass
215
+ - test/sass/templates/mixins.sass
216
+ - test/sass/templates/options.sass
217
+ - test/sass/templates/scss_import.scss
218
+ - test/sass/templates/subdir/subdir.sass
219
+ - test/sass/templates/subdir/nested_subdir/_nested_partial.sass
220
+ - test/sass/templates/subdir/nested_subdir/nested_subdir.sass
221
+ - test/sass/templates/alt.sass
222
+ - test/sass/templates/nested_bork1.sass
223
+ - test/sass/templates/complex.sass
224
+ - test/sass/templates/units.sass
225
+ - test/sass/templates/nested_import.sass
226
+ - test/sass/templates/importee.sass
211
227
  - test/sass/templates/importee.less
212
- - test/sass/templates/warn.sass
213
- - test/sass/templates/single_import_loop.sass
214
- - test/sass/templates/parent_ref.sass
215
- - test/sass/templates/nested_bork3.sass
216
- - test/sass/templates/script.sass
217
- - test/sass/templates/import.sass
218
228
  - test/sass/templates/scss_importee.scss
219
- - test/sass/templates/bork1.sass
220
- - test/sass/templates/compressed.sass
221
- - test/sass/templates/importee.sass
222
- - test/sass/templates/_partial.sass
223
- - test/sass/templates/units.sass
224
- - test/sass/templates/nested_bork1.sass
225
- - test/sass/templates/_double_import_loop2.sass
229
+ - test/sass/templates/line_numbers.sass
230
+ - test/sass/templates/expanded.sass
226
231
  - test/sass/templates/bork3.sass
227
- - test/sass/templates/nested_mixin_bork.sass
228
- - test/sass/templates/complex.sass
229
- - test/sass/templates/if.sass
232
+ - test/sass/templates/bork5.sass
230
233
  - test/sass/templates/nested_bork5.sass
234
+ - test/sass/templates/warn_imported.sass
231
235
  - test/sass/templates/import_charset_ibm866.sass
232
- - test/sass/templates/double_import_loop1.sass
233
- - test/sass/templates/alt.sass
234
- - test/sass/templates/scss_import.scss
236
+ - test/sass/templates/bork1.sass
237
+ - test/sass/templates/warn.sass
238
+ - test/sass/templates/bork2.sass
239
+ - test/sass/templates/nested.sass
235
240
  - test/sass/templates/compact.sass
241
+ - test/sass/templates/single_import_loop.sass
242
+ - test/sass/templates/multiline.sass
236
243
  - test/sass/templates/_imported_charset_ibm866.sass
237
- - test/sass/templates/nested.sass
238
- - test/sass/templates/subdir/subdir.sass
239
- - test/sass/templates/subdir/nested_subdir/_nested_partial.sass
240
- - test/sass/templates/subdir/nested_subdir/nested_subdir.sass
241
- - test/sass/templates/warn_imported.sass
242
- - test/sass/templates/options.sass
244
+ - test/sass/templates/double_import_loop1.sass
245
+ - test/sass/templates/_double_import_loop2.sass
246
+ - test/sass/templates/import_charset.sass
247
+ - test/sass/templates/parent_ref.sass
248
+ - test/sass/templates/import.sass
249
+ - test/sass/templates/nested_bork3.sass
250
+ - test/sass/templates/script.sass
243
251
  - test/sass/templates/bork4.sass
244
- - test/sass/templates/bork5.sass
252
+ - test/sass/templates/if.sass
253
+ - test/sass/templates/_partial.sass
254
+ - test/sass/templates/nested_mixin_bork.sass
245
255
  - test/sass/templates/import_charset_1_8.sass
256
+ - test/sass/templates/nested_bork2.sass
257
+ - test/sass/templates/mixin_bork.sass
258
+ - test/sass/templates/compressed.sass
246
259
  - test/sass/templates/nested_bork4.sass
247
- - test/sass/templates/nested_import.sass
248
- - test/sass/templates/multiline.sass
249
- - test/sass/templates/expanded.sass
250
- - test/sass/templates/mixins.sass
251
- - test/sass/templates/bork2.sass
252
- - test/sass/script_conversion_test.rb
253
- - test/sass/mock_importer.rb
254
- - test/sass/test_helper.rb
255
- - test/sass/logger_test.rb
256
- - test/sass/fixtures/test_staleness_check_across_importers.css
257
- - test/sass/fixtures/test_staleness_check_across_importers.scss
258
- - test/sass/functions_test.rb
259
- - test/sass/util_test.rb
260
- - test/sass/less_conversion_test.rb
261
- - test/sass/more_results/more1.css
262
- - test/sass/more_results/more1_with_line_comments.css
263
- - test/sass/more_results/more_import.css
264
- - test/sass/data/hsl-rgb.txt
265
- - test/sass/scss/test_helper.rb
266
- - test/sass/scss/css_test.rb
267
- - test/sass/scss/rx_test.rb
268
- - test/sass/scss/scss_test.rb
269
- - test/sass/script_test.rb
270
- - test/sass/importer_test.rb
271
- - test/sass/cache_test.rb
260
+ - test/sass/templates/_imported_charset_utf8.sass
272
261
  - test/sass/conversion_test.rb
273
- - test/sass/more_templates/more1.sass
274
- - test/sass/more_templates/_more_partial.sass
275
- - test/sass/more_templates/more_import.sass
276
- - test/sass/extend_test.rb
277
- - test/sass/engine_test.rb
278
- - test/sass/css2sass_test.rb
262
+ - test/sass/script_test.rb
263
+ - test/sass/util/subset_map_test.rb
264
+ - test/sass/util/multibyte_string_scanner_test.rb
279
265
  - test/sass/callbacks_test.rb
280
- - test/sass/results/units.css
281
- - test/sass/results/alt.css
282
- - test/sass/results/scss_importee.css
283
- - test/sass/results/line_numbers.css
284
- - test/sass/results/import_charset.css
266
+ - test/sass/importer_test.rb
267
+ - test/sass/scss/css_test.rb
268
+ - test/sass/scss/scss_test.rb
269
+ - test/sass/scss/rx_test.rb
270
+ - test/sass/scss/test_helper.rb
271
+ - test/sass/util_test.rb
272
+ - test/sass/results/mixins.css
273
+ - test/sass/results/warn_imported.css
285
274
  - test/sass/results/expanded.css
286
- - test/sass/results/warn.css
287
- - test/sass/results/script.css
288
- - test/sass/results/if.css
289
- - test/sass/results/scss_import.css
290
- - test/sass/results/nested.css
275
+ - test/sass/results/compact.css
276
+ - test/sass/results/compressed.css
277
+ - test/sass/results/scss_importee.css
278
+ - test/sass/results/basic.css
279
+ - test/sass/results/subdir/nested_subdir/nested_subdir.css
280
+ - test/sass/results/subdir/subdir.css
291
281
  - test/sass/results/options.css
292
- - test/sass/results/import_charset_1_8.css
282
+ - test/sass/results/scss_import.css
283
+ - test/sass/results/units.css
293
284
  - test/sass/results/parent_ref.css
285
+ - test/sass/results/script.css
286
+ - test/sass/results/complex.css
287
+ - test/sass/results/import_charset.css
288
+ - test/sass/results/alt.css
289
+ - test/sass/results/if.css
294
290
  - test/sass/results/multiline.css
291
+ - test/sass/results/import_charset_1_8.css
292
+ - test/sass/results/warn.css
295
293
  - test/sass/results/import_charset_ibm866.css
296
- - test/sass/results/subdir/subdir.css
297
- - test/sass/results/subdir/nested_subdir/nested_subdir.css
298
- - test/sass/results/warn_imported.css
299
- - test/sass/results/compact.css
300
- - test/sass/results/mixins.css
301
- - test/sass/results/complex.css
302
- - test/sass/results/compressed.css
303
294
  - test/sass/results/import.css
304
- - test/sass/results/basic.css
305
- - test/test_helper.rb
306
- - test/Gemfile.lock
307
- - test/Gemfile
295
+ - test/sass/results/nested.css
296
+ - test/sass/results/line_numbers.css
297
+ - test/sass/test_helper.rb
298
+ - test/sass/more_templates/_more_partial.sass
299
+ - test/sass/more_templates/more_import.sass
300
+ - test/sass/more_templates/more1.sass
301
+ - test/sass/script_conversion_test.rb
302
+ - test/sass/less_conversion_test.rb
303
+ - test/sass/more_results/more1.css
304
+ - test/sass/more_results/more1_with_line_comments.css
305
+ - test/sass/more_results/more_import.css
306
+ - test/sass/mock_importer.rb
307
+ - test/sass/cache_test.rb
308
+ - test/sass/plugin_test.rb
308
309
  - extra/update_watch.rb
309
310
  - Rakefile
310
311
  - init.rb
311
312
  - .yardopts
312
- - MIT-LICENSE
313
+ - README.md
314
+ - VERSION_NAME
313
315
  - REVISION
316
+ - MIT-LICENSE
314
317
  - VERSION
315
- - VERSION_NAME
316
- - README.md
317
318
  - CONTRIBUTING
319
+ has_rdoc: false
318
320
  homepage: http://sass-lang.com/
319
321
  licenses: []
320
322
 
@@ -346,27 +348,27 @@ required_rubygems_version: !ruby/object:Gem::Requirement
346
348
  requirements: []
347
349
 
348
350
  rubyforge_project: sass
349
- rubygems_version: 1.8.15
351
+ rubygems_version: 1.3.7
350
352
  signing_key:
351
353
  specification_version: 3
352
354
  summary: A powerful but elegant CSS compiler that makes CSS fun again.
353
355
  test_files:
354
- - test/sass/plugin_test.rb
356
+ - test/sass/engine_test.rb
357
+ - test/sass/functions_test.rb
358
+ - test/sass/extend_test.rb
359
+ - test/sass/logger_test.rb
360
+ - test/sass/css2sass_test.rb
361
+ - test/sass/conversion_test.rb
362
+ - test/sass/script_test.rb
355
363
  - test/sass/util/subset_map_test.rb
356
364
  - test/sass/util/multibyte_string_scanner_test.rb
357
- - test/sass/script_conversion_test.rb
358
- - test/sass/logger_test.rb
359
- - test/sass/functions_test.rb
360
- - test/sass/util_test.rb
361
- - test/sass/less_conversion_test.rb
365
+ - test/sass/callbacks_test.rb
366
+ - test/sass/importer_test.rb
362
367
  - test/sass/scss/css_test.rb
363
- - test/sass/scss/rx_test.rb
364
368
  - test/sass/scss/scss_test.rb
365
- - test/sass/script_test.rb
366
- - test/sass/importer_test.rb
369
+ - test/sass/scss/rx_test.rb
370
+ - test/sass/util_test.rb
371
+ - test/sass/script_conversion_test.rb
372
+ - test/sass/less_conversion_test.rb
367
373
  - test/sass/cache_test.rb
368
- - test/sass/conversion_test.rb
369
- - test/sass/extend_test.rb
370
- - test/sass/engine_test.rb
371
- - test/sass/css2sass_test.rb
372
- - test/sass/callbacks_test.rb
374
+ - test/sass/plugin_test.rb