sass 3.2.5 → 3.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/VERSION_DATE +1 -1
- data/bin/sass +2 -1
- data/bin/sass-convert +2 -1
- data/bin/scss +2 -1
- data/lib/sass/cache_stores/chain.rb +1 -1
- data/lib/sass/cache_stores/filesystem.rb +0 -1
- data/lib/sass/engine.rb +7 -1
- data/lib/sass/importers/filesystem.rb +1 -1
- data/lib/sass/media.rb +1 -4
- data/lib/sass/script/funcall.rb +43 -8
- data/lib/sass/script/lexer.rb +0 -2
- data/lib/sass/script/parser.rb +0 -2
- data/lib/sass/scss/parser.rb +13 -1
- data/lib/sass/selector/simple_sequence.rb +1 -1
- data/lib/sass/tree/comment_node.rb +2 -2
- data/lib/sass/tree/visitors/cssize.rb +10 -1
- data/lib/sass/tree/visitors/perform.rb +4 -2
- data/lib/sass/util.rb +54 -1
- data/lib/sass/util/multibyte_string_scanner.rb +29 -8
- data/test/sass/engine_test.rb +16 -0
- data/test/sass/extend_test.rb +15 -0
- data/test/sass/script_test.rb +3 -1
- data/vendor/listen/CHANGELOG.md +76 -2
- data/vendor/listen/CONTRIBUTING.md +38 -0
- data/vendor/listen/Gemfile +8 -1
- data/vendor/listen/Guardfile +1 -1
- data/vendor/listen/LICENSE +1 -1
- data/vendor/listen/README.md +8 -5
- data/vendor/listen/lib/listen.rb +7 -5
- data/vendor/listen/lib/listen/adapter.rb +76 -29
- data/vendor/listen/lib/listen/adapters/bsd.rb +112 -0
- data/vendor/listen/lib/listen/adapters/darwin.rb +11 -10
- data/vendor/listen/lib/listen/adapters/linux.rb +33 -30
- data/vendor/listen/lib/listen/adapters/polling.rb +2 -1
- data/vendor/listen/lib/listen/adapters/windows.rb +27 -21
- data/vendor/listen/lib/listen/dependency_manager.rb +126 -0
- data/vendor/listen/lib/listen/directory_record.rb +63 -10
- data/vendor/listen/lib/listen/listener.rb +22 -0
- data/vendor/listen/lib/listen/multi_listener.rb +22 -0
- data/vendor/listen/lib/listen/version.rb +1 -1
- data/vendor/listen/listen.gemspec +0 -4
- data/vendor/listen/spec/listen/adapter_spec.rb +45 -4
- data/vendor/listen/spec/listen/adapters/bsd_spec.rb +36 -0
- data/vendor/listen/spec/listen/adapters/darwin_spec.rb +6 -0
- data/vendor/listen/spec/listen/adapters/linux_spec.rb +6 -0
- data/vendor/listen/spec/listen/adapters/windows_spec.rb +7 -1
- data/vendor/listen/spec/listen/dependency_manager_spec.rb +107 -0
- data/vendor/listen/spec/listen/directory_record_spec.rb +91 -4
- data/vendor/listen/spec/listen/listener_spec.rb +14 -0
- data/vendor/listen/spec/listen/multi_listener_spec.rb +19 -1
- data/vendor/listen/spec/spec_helper.rb +6 -3
- data/vendor/listen/spec/support/adapter_helper.rb +125 -212
- data/vendor/listen/spec/support/listeners_helper.rb +13 -1
- data/vendor/listen/spec/support/platform_helper.rb +4 -0
- metadata +9 -3
@@ -93,6 +93,17 @@ module Listen
|
|
93
93
|
self
|
94
94
|
end
|
95
95
|
|
96
|
+
# Replaces ignoring patterns in the listener.
|
97
|
+
#
|
98
|
+
# @param (see Listen::DirectoryRecord#ignore!)
|
99
|
+
#
|
100
|
+
# @return [Listen::Listener] the listener
|
101
|
+
#
|
102
|
+
def ignore!(*regexps)
|
103
|
+
@directory_record.ignore!(*regexps)
|
104
|
+
self
|
105
|
+
end
|
106
|
+
|
96
107
|
# Adds filtering patterns to the listener.
|
97
108
|
#
|
98
109
|
# @param (see Listen::DirectoryRecord#filter)
|
@@ -104,6 +115,17 @@ module Listen
|
|
104
115
|
self
|
105
116
|
end
|
106
117
|
|
118
|
+
# Replacing filtering patterns in the listener.
|
119
|
+
#
|
120
|
+
# @param (see Listen::DirectoryRecord#filter!)
|
121
|
+
#
|
122
|
+
# @return [Listen::Listener] the listener
|
123
|
+
#
|
124
|
+
def filter!(*regexps)
|
125
|
+
@directory_record.filter!(*regexps)
|
126
|
+
self
|
127
|
+
end
|
128
|
+
|
107
129
|
# Sets the latency for the adapter. This is a helper method
|
108
130
|
# to simplify changing the latency directly from the listener.
|
109
131
|
#
|
@@ -65,6 +65,17 @@ module Listen
|
|
65
65
|
self
|
66
66
|
end
|
67
67
|
|
68
|
+
# Replaces ignored paths in the listener.
|
69
|
+
#
|
70
|
+
# @param (see Listen::DirectoryRecord#ignore!)
|
71
|
+
#
|
72
|
+
# @return [Listen::Listener] the listener
|
73
|
+
#
|
74
|
+
def ignore!(*paths)
|
75
|
+
@directories_records.each { |r| r.ignore!(*paths) }
|
76
|
+
self
|
77
|
+
end
|
78
|
+
|
68
79
|
# Adds file filters to the listener.
|
69
80
|
#
|
70
81
|
# @param (see Listen::DirectoryRecord#filter)
|
@@ -76,6 +87,17 @@ module Listen
|
|
76
87
|
self
|
77
88
|
end
|
78
89
|
|
90
|
+
# Replaces file filters in the listener.
|
91
|
+
#
|
92
|
+
# @param (see Listen::DirectoryRecord#filter!)
|
93
|
+
#
|
94
|
+
# @return [Listen::Listener] the listener
|
95
|
+
#
|
96
|
+
def filter!(*regexps)
|
97
|
+
@directories_records.each { |r| r.filter!(*regexps) }
|
98
|
+
self
|
99
|
+
end
|
100
|
+
|
79
101
|
# Runs the callback passing it the changes if there are any.
|
80
102
|
#
|
81
103
|
# @param (see Listen::DirectoryRecord#fetch_changes)
|
@@ -15,10 +15,6 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.required_rubygems_version = '>= 1.3.6'
|
16
16
|
s.rubyforge_project = 'listen'
|
17
17
|
|
18
|
-
s.add_dependency 'rb-fsevent', '~> 0.9.1'
|
19
|
-
s.add_dependency 'rb-inotify', '~> 0.8.8'
|
20
|
-
s.add_dependency 'rb-fchange', '~> 0.0.5'
|
21
|
-
|
22
18
|
s.add_development_dependency 'bundler'
|
23
19
|
|
24
20
|
s.files = Dir.glob('{lib}/**/*') + %w[CHANGELOG.md LICENSE README.md]
|
@@ -21,6 +21,7 @@ describe Listen::Adapter do
|
|
21
21
|
before do
|
22
22
|
Listen::Adapters::Darwin.stub(:usable_and_works?) { false }
|
23
23
|
Listen::Adapters::Linux.stub(:usable_and_works?) { false }
|
24
|
+
Listen::Adapters::BSD.stub(:usable_and_works?) { false }
|
24
25
|
Listen::Adapters::Windows.stub(:usable_and_works?) { false }
|
25
26
|
end
|
26
27
|
|
@@ -31,14 +32,28 @@ describe Listen::Adapter do
|
|
31
32
|
described_class.select_and_initialize('dir')
|
32
33
|
end
|
33
34
|
|
34
|
-
it
|
35
|
-
Kernel.should_receive(:warn).with(Listen::Adapter::POLLING_FALLBACK_MESSAGE)
|
35
|
+
it 'warns with the default polling fallback message' do
|
36
|
+
Kernel.should_receive(:warn).with(/#{Listen::Adapter::POLLING_FALLBACK_MESSAGE}/)
|
36
37
|
described_class.select_and_initialize('dir')
|
37
38
|
end
|
38
39
|
|
40
|
+
context 'when the dependencies of an adapter are not satisfied' do
|
41
|
+
before do
|
42
|
+
Listen::Adapters::Darwin.stub(:usable_and_works?).and_raise(Listen::DependencyManager::Error)
|
43
|
+
Listen::Adapters::Linux.stub(:usable_and_works?).and_raise(Listen::DependencyManager::Error)
|
44
|
+
Listen::Adapters::BSD.stub(:usable_and_works?).and_raise(Listen::DependencyManager::Error)
|
45
|
+
Listen::Adapters::Windows.stub(:usable_and_works?).and_raise(Listen::DependencyManager::Error)
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'invites the user to satisfy the dependencies of the adapter in the warning' do
|
49
|
+
Kernel.should_receive(:warn).with(/#{Listen::Adapter::MISSING_DEPENDENCY_MESSAGE}/)
|
50
|
+
described_class.select_and_initialize('dir')
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
39
54
|
context "with custom polling_fallback_message option" do
|
40
55
|
it "warns with the custom polling fallback message" do
|
41
|
-
Kernel.should_receive(:warn).with(
|
56
|
+
Kernel.should_receive(:warn).with(/custom/)
|
42
57
|
described_class.select_and_initialize('dir', :polling_fallback_message => 'custom')
|
43
58
|
end
|
44
59
|
end
|
@@ -83,6 +98,22 @@ describe Listen::Adapter do
|
|
83
98
|
end
|
84
99
|
end
|
85
100
|
|
101
|
+
context "on BSD" do
|
102
|
+
before { Listen::Adapters::BSD.stub(:usable_and_works?) { true } }
|
103
|
+
|
104
|
+
it "uses Listen::Adapters::BSD" do
|
105
|
+
Listen::Adapters::BSD.should_receive(:new).with('dir', {})
|
106
|
+
described_class.select_and_initialize('dir')
|
107
|
+
end
|
108
|
+
|
109
|
+
context 'when the use of the polling adapter is forced' do
|
110
|
+
it 'uses Listen::Adapters::Polling' do
|
111
|
+
Listen::Adapters::Polling.should_receive(:new).with('dir', {})
|
112
|
+
described_class.select_and_initialize('dir', :force_polling => true)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
86
117
|
context "on Windows" do
|
87
118
|
before { Listen::Adapters::Windows.stub(:usable_and_works?) { true } }
|
88
119
|
|
@@ -100,8 +131,18 @@ describe Listen::Adapter do
|
|
100
131
|
end
|
101
132
|
end
|
102
133
|
|
103
|
-
[Listen::Adapters::Darwin, Listen::Adapters::Linux,
|
134
|
+
[Listen::Adapters::Darwin, Listen::Adapters::Linux,
|
135
|
+
Listen::Adapters::BSD, Listen::Adapters::Windows].each do
|
136
|
+
|adapter_class|
|
104
137
|
if adapter_class.usable?
|
138
|
+
describe '.usable?' do
|
139
|
+
it 'checks the dependencies' do
|
140
|
+
adapter_class.should_receive(:load_depenencies)
|
141
|
+
adapter_class.should_receive(:dependencies_loaded?)
|
142
|
+
adapter_class.usable?
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
105
146
|
describe '.usable_and_works?' do
|
106
147
|
it 'checks if the adapter is usable' do
|
107
148
|
adapter_class.stub(:works?)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Listen::Adapters::BSD do
|
4
|
+
if bsd?
|
5
|
+
if Listen::Adapters::BSD.usable?
|
6
|
+
it "is usable on BSD" do
|
7
|
+
described_class.should be_usable
|
8
|
+
end
|
9
|
+
|
10
|
+
it_should_behave_like 'a filesystem adapter'
|
11
|
+
it_should_behave_like 'an adapter that call properly listener#on_change'
|
12
|
+
else
|
13
|
+
it "isn't usable on BSD with #{RbConfig::CONFIG['RUBY_INSTALL_NAME']}" do
|
14
|
+
described_class.should_not be_usable
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
if linux?
|
20
|
+
it "isn't usable on Linux" do
|
21
|
+
described_class.should_not be_usable
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
if mac?
|
26
|
+
it "isn't usable on Mac OS X" do
|
27
|
+
described_class.should_not be_usable
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
if windows?
|
32
|
+
it "isn't usable on Windows" do
|
33
|
+
described_class.should_not be_usable
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -7,7 +7,7 @@ describe Listen::Adapters::Windows do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it_should_behave_like 'a filesystem adapter'
|
10
|
-
it_should_behave_like 'an adapter that call properly listener#on_change'
|
10
|
+
it_should_behave_like 'an adapter that call properly listener#on_change'
|
11
11
|
end
|
12
12
|
|
13
13
|
if mac?
|
@@ -16,6 +16,12 @@ describe Listen::Adapters::Windows do
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
if bsd?
|
20
|
+
it "isn't usable on BSD" do
|
21
|
+
described_class.should_not be_usable
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
19
25
|
if linux?
|
20
26
|
it "isn't usable on Linux" do
|
21
27
|
described_class.should_not be_usable
|
@@ -0,0 +1,107 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Listen::DependencyManager do
|
4
|
+
let(:dependency) { Listen::DependencyManager::Dependency.new('listen', '~> 0.0.1') }
|
5
|
+
|
6
|
+
subject { Class.new { extend Listen::DependencyManager } }
|
7
|
+
|
8
|
+
before { described_class.clear_loaded }
|
9
|
+
|
10
|
+
describe '.add_loaded' do
|
11
|
+
it 'adds a dependency to the list of loaded dependencies' do
|
12
|
+
described_class.add_loaded dependency
|
13
|
+
described_class.already_loaded?(dependency).should be_true
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '.already_loaded?' do
|
18
|
+
it 'returns false when a dependency is not in the list of loaded dependencies' do
|
19
|
+
described_class.already_loaded?(dependency).should be_false
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'returns true when a dependency is in the list of loaded dependencies' do
|
23
|
+
described_class.add_loaded dependency
|
24
|
+
described_class.already_loaded?(dependency).should be_true
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '.clear_loaded' do
|
29
|
+
it 'clears the whole list of loaded dependencies' do
|
30
|
+
described_class.add_loaded dependency
|
31
|
+
described_class.already_loaded?(dependency).should be_true
|
32
|
+
described_class.clear_loaded
|
33
|
+
described_class.already_loaded?(dependency).should be_false
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe '#dependency' do
|
38
|
+
it 'registers a new dependency for the managed class' do
|
39
|
+
subject.dependency 'listen', '~> 0.0.1'
|
40
|
+
subject.dependencies_loaded?.should be_false
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#load_depenencies' do
|
45
|
+
before { subject.dependency 'listen', '~> 0.0.1' }
|
46
|
+
|
47
|
+
context 'when dependencies can be loaded' do
|
48
|
+
before { subject.stub(:gem, :require) }
|
49
|
+
|
50
|
+
it 'loads all the registerd dependencies' do
|
51
|
+
subject.load_depenencies
|
52
|
+
subject.dependencies_loaded?.should be_true
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when dependencies can not be loaded' do
|
57
|
+
it 'raises an error' do
|
58
|
+
expect {
|
59
|
+
subject.load_depenencies
|
60
|
+
}.to raise_error(described_class::Error)
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'when running under bundler' do
|
64
|
+
before { subject.should_receive(:running_under_bundler?).and_return(true) }
|
65
|
+
|
66
|
+
it 'includes the Gemfile declaration to satisfy the dependency' do
|
67
|
+
begin
|
68
|
+
subject.load_depenencies
|
69
|
+
rescue described_class::Error => e
|
70
|
+
e.message.should include("gem 'listen', '~> 0.0.1'")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'when not running under bundler' do
|
76
|
+
before { subject.should_receive(:running_under_bundler?).and_return(false) }
|
77
|
+
|
78
|
+
it 'includes the command to install the dependency' do
|
79
|
+
begin
|
80
|
+
subject.load_depenencies
|
81
|
+
rescue described_class::Error => e
|
82
|
+
e.message.should include("gem install --version '~> 0.0.1' listen")
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
describe '#dependencies_loaded?' do
|
90
|
+
it 'return false when dependencies are not loaded' do
|
91
|
+
subject.dependency 'listen', '~> 0.0.1'
|
92
|
+
subject.dependencies_loaded?.should be_false
|
93
|
+
end
|
94
|
+
|
95
|
+
it 'return true when dependencies are loaded' do
|
96
|
+
subject.stub(:gem, :require)
|
97
|
+
|
98
|
+
subject.dependency 'listen', '~> 0.0.1'
|
99
|
+
subject.load_depenencies
|
100
|
+
subject.dependencies_loaded?.should be_true
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'return true when there are no dependencies to load' do
|
104
|
+
subject.dependencies_loaded?.should be_true
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
describe Listen::DirectoryRecord do
|
@@ -41,12 +42,19 @@ describe Listen::DirectoryRecord do
|
|
41
42
|
end
|
42
43
|
|
43
44
|
describe '#ignore' do
|
44
|
-
it 'adds the passed paths to the list of
|
45
|
+
it 'adds the passed paths to the list of ignored paths in the record' do
|
45
46
|
subject.ignore(%r{^\.old/}, %r{\.pid$})
|
46
47
|
subject.ignoring_patterns.should include(%r{^\.old/}, %r{\.pid$})
|
47
48
|
end
|
48
49
|
end
|
49
50
|
|
51
|
+
describe '#ignore!' do
|
52
|
+
it 'replace the ignored paths in the record' do
|
53
|
+
subject.ignore!(%r{^\.old/}, %r{\.pid$})
|
54
|
+
subject.ignoring_patterns.should =~ [%r{^\.old/}, %r{\.pid$}]
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
50
58
|
describe '#filter' do
|
51
59
|
it 'adds the passed regexps to the list of filters that determine the stored paths' do
|
52
60
|
subject.filter(%r{\.(?:jpe?g|gif|png)}, %r{\.(?:mp3|ogg|a3c)})
|
@@ -54,6 +62,13 @@ describe Listen::DirectoryRecord do
|
|
54
62
|
end
|
55
63
|
end
|
56
64
|
|
65
|
+
describe '#filter!' do
|
66
|
+
it 'replaces the passed regexps in the list of filters that determine the stored paths' do
|
67
|
+
subject.filter!(%r{\.(?:jpe?g|gif|png)}, %r{\.(?:mp3|ogg|a3c)})
|
68
|
+
subject.filtering_patterns.should =~ [%r{\.(?:mp3|ogg|a3c)}, %r{\.(?:jpe?g|gif|png)}]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
57
72
|
describe '#ignored?' do
|
58
73
|
before { subject.stub(:relative_to_base) { |path| path } }
|
59
74
|
|
@@ -193,7 +208,12 @@ describe Listen::DirectoryRecord do
|
|
193
208
|
it 'returns nil when the passed path is not inside the base-directory' do
|
194
209
|
subject.relative_to_base('/tmp/some_random_path').should be_nil
|
195
210
|
end
|
196
|
-
|
211
|
+
|
212
|
+
it 'works with non UTF-8 paths' do
|
213
|
+
path = "tmp/\xE4\xE4"
|
214
|
+
subject.relative_to_base(File.join(base_directory, path))
|
215
|
+
end
|
216
|
+
|
197
217
|
context 'when containing regexp characters in the base directory' do
|
198
218
|
before do
|
199
219
|
fixtures do |path|
|
@@ -442,6 +462,11 @@ describe Listen::DirectoryRecord do
|
|
442
462
|
it 'detects the modified file the second time if the content have changed' do
|
443
463
|
fixtures do |path|
|
444
464
|
touch 'existing_file.txt'
|
465
|
+
# Set sha1 path checksum
|
466
|
+
changes(path) do
|
467
|
+
touch 'existing_file.txt'
|
468
|
+
end
|
469
|
+
small_time_difference
|
445
470
|
|
446
471
|
changes(path) do
|
447
472
|
touch 'existing_file.txt'
|
@@ -456,6 +481,58 @@ describe Listen::DirectoryRecord do
|
|
456
481
|
removed.should be_empty
|
457
482
|
end
|
458
483
|
end
|
484
|
+
|
485
|
+
it "doesn't detects the modified file the second time if just touched - #62" do
|
486
|
+
fixtures do |path|
|
487
|
+
touch 'existing_file.txt'
|
488
|
+
# Set sha1 path checksum
|
489
|
+
changes(path) do
|
490
|
+
touch 'existing_file.txt'
|
491
|
+
end
|
492
|
+
small_time_difference
|
493
|
+
|
494
|
+
changes(path, :use_last_record => true) do
|
495
|
+
open('existing_file.txt', 'w') { |f| f.write('foo') }
|
496
|
+
end
|
497
|
+
|
498
|
+
modified, added, removed = changes(path, :use_last_record => true) do
|
499
|
+
touch 'existing_file.txt'
|
500
|
+
end
|
501
|
+
|
502
|
+
added.should be_empty
|
503
|
+
modified.should be_empty
|
504
|
+
removed.should be_empty
|
505
|
+
end
|
506
|
+
end
|
507
|
+
|
508
|
+
it "adds the path in the paths checksums if just touched - #62" do
|
509
|
+
fixtures do |path|
|
510
|
+
touch 'existing_file.txt'
|
511
|
+
small_time_difference
|
512
|
+
|
513
|
+
changes(path) do
|
514
|
+
touch 'existing_file.txt'
|
515
|
+
end
|
516
|
+
|
517
|
+
@record.sha1_checksums["#{path}/existing_file.txt"].should_not be_nil
|
518
|
+
end
|
519
|
+
end
|
520
|
+
|
521
|
+
it "deletes the path from the paths checksums" do
|
522
|
+
fixtures do |path|
|
523
|
+
touch 'unnecessary.txt'
|
524
|
+
|
525
|
+
changes(path) do
|
526
|
+
@record.sha1_checksums["#{path}/unnecessary.txt"] = 'foo'
|
527
|
+
|
528
|
+
rm 'unnecessary.txt'
|
529
|
+
end
|
530
|
+
|
531
|
+
@record.sha1_checksums["#{path}/unnecessary.txt"].should be_nil
|
532
|
+
end
|
533
|
+
end
|
534
|
+
|
535
|
+
|
459
536
|
end
|
460
537
|
|
461
538
|
context 'given a hidden file' do
|
@@ -1092,7 +1169,7 @@ describe Listen::DirectoryRecord do
|
|
1092
1169
|
|
1093
1170
|
# simulate a race condition where the file is removed after the
|
1094
1171
|
# change event is tracked, but before the hash is calculated
|
1095
|
-
Digest::SHA1.should_receive(:file).and_raise(Errno::ENOENT)
|
1172
|
+
Digest::SHA1.should_receive(:file).twice.and_raise(Errno::ENOENT)
|
1096
1173
|
|
1097
1174
|
lambda {
|
1098
1175
|
fixtures do |path|
|
@@ -1104,7 +1181,17 @@ describe Listen::DirectoryRecord do
|
|
1104
1181
|
end
|
1105
1182
|
end
|
1106
1183
|
|
1107
|
-
context '
|
1184
|
+
context 'within a directory containing a unix domain socket file' do
|
1185
|
+
it 'does not raise an exception when hashing a unix domain socket file' do
|
1186
|
+
fixtures do |path|
|
1187
|
+
require 'socket'
|
1188
|
+
UNIXServer.new('unix_domain_socket.sock')
|
1189
|
+
lambda { changes(path){} }.should_not raise_error(Errno::ENXIO)
|
1190
|
+
end
|
1191
|
+
end
|
1192
|
+
end
|
1193
|
+
|
1194
|
+
context 'with symlinks', :unless => windows? do
|
1108
1195
|
it 'looks at symlinks not their targets' do
|
1109
1196
|
fixtures do |path|
|
1110
1197
|
touch 'target'
|