listen 2.0.0 → 2.0.1
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.
- checksums.yaml +4 -4
- data/.gitignore +27 -0
- data/.rspec +2 -0
- data/.travis.yml +17 -0
- data/.yardopts +11 -0
- data/CONTRIBUTING.md +38 -0
- data/Gemfile +16 -0
- data/Guardfile +6 -0
- data/{LICENSE → LICENSE.txt} +2 -0
- data/README.md +4 -2
- data/Rakefile +5 -0
- data/lib/listen/listener.rb +1 -2
- data/lib/listen/version.rb +1 -1
- data/listen.gemspec +30 -0
- data/spec/acceptance/listen_spec.rb +204 -0
- data/spec/lib/listen/adapter/base_spec.rb +44 -0
- data/spec/lib/listen/adapter/bsd_spec.rb +39 -0
- data/spec/lib/listen/adapter/darwin_spec.rb +39 -0
- data/spec/lib/listen/adapter/linux_spec.rb +39 -0
- data/spec/lib/listen/adapter/polling_spec.rb +38 -0
- data/spec/lib/listen/adapter/windows_spec.rb +37 -0
- data/spec/lib/listen/adapter_spec.rb +77 -0
- data/spec/lib/listen/change_spec.rb +97 -0
- data/spec/lib/listen/directory_spec.rb +153 -0
- data/spec/lib/listen/file_spec.rb +112 -0
- data/spec/lib/listen/listener_spec.rb +269 -0
- data/spec/lib/listen/record_spec.rb +92 -0
- data/spec/lib/listen/silencer_spec.rb +62 -0
- data/spec/lib/listen_spec.rb +10 -0
- data/spec/spec_helper.rb +34 -0
- data/spec/support/acceptance_helper.rb +45 -0
- data/spec/support/actor_helper.rb +13 -0
- data/spec/support/fixtures_helper.rb +27 -0
- data/spec/support/platform_helper.rb +15 -0
- metadata +75 -12
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Listen::Silencer do
|
4
|
+
let(:silencer) { Listen::Silencer.new(options) }
|
5
|
+
|
6
|
+
describe "#silenced?" do
|
7
|
+
let(:options) { {} }
|
8
|
+
let(:pwd) { Pathname.new(Dir.pwd) }
|
9
|
+
|
10
|
+
context "default ignore" do
|
11
|
+
Listen::Silencer::DEFAULT_IGNORED_DIRECTORIES.each do |dir|
|
12
|
+
let(:path) { pwd.join(dir) }
|
13
|
+
|
14
|
+
it "silences default ignored directory: #{dir}" do
|
15
|
+
expect(silencer.silenced?(path)).to be_true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
Listen::Silencer::DEFAULT_IGNORED_EXTENSIONS.each do |extension|
|
20
|
+
let(:path) { pwd.join(extension) }
|
21
|
+
|
22
|
+
it "silences default ignored extension: #{extension}" do
|
23
|
+
expect(silencer.silenced?(path)).to be_true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "with ignore options" do
|
29
|
+
let(:options) { { ignore: [%r{foo/bar}, /\.pid$/] } }
|
30
|
+
|
31
|
+
it "silences custom ignored directory" do
|
32
|
+
path = pwd.join('foo', 'bar')
|
33
|
+
expect(silencer.silenced?(path)).to be_true
|
34
|
+
end
|
35
|
+
|
36
|
+
it "silences custom ignored extension" do
|
37
|
+
path = pwd.join('foo.pid')
|
38
|
+
expect(silencer.silenced?(path)).to be_true
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "with ignore! options" do
|
43
|
+
let(:options) { { ignore!: %r{foo/bar} } }
|
44
|
+
|
45
|
+
it "silences custom ignored directory" do
|
46
|
+
path = pwd.join('foo', 'bar')
|
47
|
+
expect(silencer.silenced?(path)).to be_true
|
48
|
+
end
|
49
|
+
|
50
|
+
it "doesn't silence default ignored directory" do
|
51
|
+
path = pwd.join(Listen::Silencer::DEFAULT_IGNORED_DIRECTORIES.first)
|
52
|
+
expect(silencer.silenced?(path)).to be_false
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
it "doesn't silence normal path" do
|
57
|
+
path = pwd.join('some_dir', 'some_file.rb')
|
58
|
+
expect(silencer.silenced?(path)).to be_false
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'listen'
|
3
|
+
|
4
|
+
def ci?; ENV['CI'] end
|
5
|
+
|
6
|
+
if ci?
|
7
|
+
require 'coveralls'
|
8
|
+
Coveralls.wear!
|
9
|
+
end
|
10
|
+
|
11
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
12
|
+
|
13
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
14
|
+
RSpec.configure do |config|
|
15
|
+
config.color_enabled = true
|
16
|
+
config.order = :random
|
17
|
+
config.filter_run focus: true
|
18
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
19
|
+
config.run_all_when_everything_filtered = true
|
20
|
+
config.fail_fast = !ci?
|
21
|
+
config.expect_with :rspec do |c|
|
22
|
+
c.syntax = :expect
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
# Crash loud in tests!
|
28
|
+
Thread.abort_on_exception = true
|
29
|
+
Celluloid.logger.level = Logger::ERROR
|
30
|
+
|
31
|
+
require 'rspec/retry'
|
32
|
+
RSpec.configure do |config|
|
33
|
+
config.default_retry_count = ci? ? 3 : 1
|
34
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
def listen
|
2
|
+
sleep 0.25 # wait for changes
|
3
|
+
sleep_until_next_second
|
4
|
+
reset_changes
|
5
|
+
yield
|
6
|
+
sleep 0.25 # wait for changes
|
7
|
+
@changes
|
8
|
+
end
|
9
|
+
|
10
|
+
def setup_listener(options, callback)
|
11
|
+
reset_changes
|
12
|
+
Listen.to(paths, options, &callback)
|
13
|
+
end
|
14
|
+
|
15
|
+
def reset_changes
|
16
|
+
@changes = { modified: [], added: [], removed: [] }
|
17
|
+
end
|
18
|
+
|
19
|
+
def add_changes(type, changes)
|
20
|
+
@changes[type] += relative_path(changes)
|
21
|
+
@changes[type].sort!
|
22
|
+
end
|
23
|
+
|
24
|
+
def relative_path(changes)
|
25
|
+
changes.map do |change|
|
26
|
+
[paths].flatten.each { |path| change.gsub!(%r{#{path.to_s}/}, '') }
|
27
|
+
change
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Generates a small time difference before performing a time sensitive
|
32
|
+
# task (like comparing mtimes of files).
|
33
|
+
#
|
34
|
+
# @note Modification time for files only includes the milliseconds on Linux with MRI > 1.9.2
|
35
|
+
# and platform that support it (OS X 10.8 not included),
|
36
|
+
# that's why we generate a difference that's greater than 1 second.
|
37
|
+
#
|
38
|
+
def sleep_until_next_second
|
39
|
+
return unless darwin?
|
40
|
+
|
41
|
+
t = Time.now
|
42
|
+
diff = t.to_f - t.to_i
|
43
|
+
|
44
|
+
sleep(1.05 - diff)
|
45
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
RSpec.configuration.before(:each) do
|
2
|
+
Celluloid.logger = nil
|
3
|
+
Celluloid.shutdown
|
4
|
+
Celluloid.boot
|
5
|
+
if RUBY_PLATFORM != "java"
|
6
|
+
class Celluloid::ActorProxy
|
7
|
+
unless @rspec_compatible
|
8
|
+
@rspec_compatible = true
|
9
|
+
undef_method :should_receive
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'tmpdir'
|
2
|
+
|
3
|
+
include FileUtils
|
4
|
+
|
5
|
+
# Prepares temporary fixture-directories and
|
6
|
+
# cleans them afterwards.
|
7
|
+
#
|
8
|
+
# @param [Fixnum] number_of_directories the number of fixture-directories to make
|
9
|
+
#
|
10
|
+
# @yield [path1, path2, ...] the empty fixture-directories
|
11
|
+
# @yieldparam [String] path the path to a fixture directory
|
12
|
+
#
|
13
|
+
def fixtures(number_of_directories = 1)
|
14
|
+
current_pwd = pwd
|
15
|
+
paths = 1.upto(number_of_directories).map do
|
16
|
+
File.expand_path(File.join(pwd, "spec/.fixtures/#{Time.now.to_f.to_s.sub('.', '') + rand(9999).to_s}"))
|
17
|
+
end
|
18
|
+
|
19
|
+
# Create the dirs
|
20
|
+
paths.each { |p| mkdir_p(p) }
|
21
|
+
|
22
|
+
cd(paths.first) if number_of_directories == 1
|
23
|
+
yield(*paths)
|
24
|
+
ensure
|
25
|
+
cd current_pwd
|
26
|
+
paths.map { |p| rm_rf(p) if File.exists?(p) }
|
27
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
def darwin?
|
2
|
+
RbConfig::CONFIG['target_os'] =~ /darwin/i
|
3
|
+
end
|
4
|
+
|
5
|
+
def linux?
|
6
|
+
RbConfig::CONFIG['target_os'] =~ /linux/i
|
7
|
+
end
|
8
|
+
|
9
|
+
def bsd?
|
10
|
+
RbConfig::CONFIG['target_os'] =~ /freebsd/i
|
11
|
+
end
|
12
|
+
|
13
|
+
def windows?
|
14
|
+
RbConfig::CONFIG['target_os'] =~ /mswin|mingw/i
|
15
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: listen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thibaud Guillaume-Gentil
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: celluloid
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.15.
|
19
|
+
version: 0.15.2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.15.
|
26
|
+
version: 0.15.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rb-fsevent
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -54,6 +54,20 @@ dependencies:
|
|
54
54
|
version: '0.9'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.3.5
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.3.5
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - '>='
|
@@ -101,13 +115,25 @@ executables: []
|
|
101
115
|
extensions: []
|
102
116
|
extra_rdoc_files: []
|
103
117
|
files:
|
118
|
+
- .gitignore
|
119
|
+
- .rspec
|
120
|
+
- .travis.yml
|
121
|
+
- .yardopts
|
122
|
+
- CHANGELOG.md
|
123
|
+
- CONTRIBUTING.md
|
124
|
+
- Gemfile
|
125
|
+
- Guardfile
|
126
|
+
- LICENSE.txt
|
127
|
+
- README.md
|
128
|
+
- Rakefile
|
129
|
+
- lib/listen.rb
|
130
|
+
- lib/listen/adapter.rb
|
104
131
|
- lib/listen/adapter/base.rb
|
105
132
|
- lib/listen/adapter/bsd.rb
|
106
133
|
- lib/listen/adapter/darwin.rb
|
107
134
|
- lib/listen/adapter/linux.rb
|
108
135
|
- lib/listen/adapter/polling.rb
|
109
136
|
- lib/listen/adapter/windows.rb
|
110
|
-
- lib/listen/adapter.rb
|
111
137
|
- lib/listen/change.rb
|
112
138
|
- lib/listen/directory.rb
|
113
139
|
- lib/listen/file.rb
|
@@ -115,10 +141,27 @@ files:
|
|
115
141
|
- lib/listen/record.rb
|
116
142
|
- lib/listen/silencer.rb
|
117
143
|
- lib/listen/version.rb
|
118
|
-
-
|
119
|
-
-
|
120
|
-
-
|
121
|
-
-
|
144
|
+
- listen.gemspec
|
145
|
+
- spec/acceptance/listen_spec.rb
|
146
|
+
- spec/lib/listen/adapter/base_spec.rb
|
147
|
+
- spec/lib/listen/adapter/bsd_spec.rb
|
148
|
+
- spec/lib/listen/adapter/darwin_spec.rb
|
149
|
+
- spec/lib/listen/adapter/linux_spec.rb
|
150
|
+
- spec/lib/listen/adapter/polling_spec.rb
|
151
|
+
- spec/lib/listen/adapter/windows_spec.rb
|
152
|
+
- spec/lib/listen/adapter_spec.rb
|
153
|
+
- spec/lib/listen/change_spec.rb
|
154
|
+
- spec/lib/listen/directory_spec.rb
|
155
|
+
- spec/lib/listen/file_spec.rb
|
156
|
+
- spec/lib/listen/listener_spec.rb
|
157
|
+
- spec/lib/listen/record_spec.rb
|
158
|
+
- spec/lib/listen/silencer_spec.rb
|
159
|
+
- spec/lib/listen_spec.rb
|
160
|
+
- spec/spec_helper.rb
|
161
|
+
- spec/support/acceptance_helper.rb
|
162
|
+
- spec/support/actor_helper.rb
|
163
|
+
- spec/support/fixtures_helper.rb
|
164
|
+
- spec/support/platform_helper.rb
|
122
165
|
homepage: https://github.com/guard/listen
|
123
166
|
licenses:
|
124
167
|
- MIT
|
@@ -136,11 +179,31 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
136
179
|
requirements:
|
137
180
|
- - '>='
|
138
181
|
- !ruby/object:Gem::Version
|
139
|
-
version:
|
182
|
+
version: '0'
|
140
183
|
requirements: []
|
141
|
-
rubyforge_project:
|
184
|
+
rubyforge_project:
|
142
185
|
rubygems_version: 2.1.3
|
143
186
|
signing_key:
|
144
187
|
specification_version: 4
|
145
188
|
summary: Listen to file modifications
|
146
|
-
test_files:
|
189
|
+
test_files:
|
190
|
+
- spec/acceptance/listen_spec.rb
|
191
|
+
- spec/lib/listen/adapter/base_spec.rb
|
192
|
+
- spec/lib/listen/adapter/bsd_spec.rb
|
193
|
+
- spec/lib/listen/adapter/darwin_spec.rb
|
194
|
+
- spec/lib/listen/adapter/linux_spec.rb
|
195
|
+
- spec/lib/listen/adapter/polling_spec.rb
|
196
|
+
- spec/lib/listen/adapter/windows_spec.rb
|
197
|
+
- spec/lib/listen/adapter_spec.rb
|
198
|
+
- spec/lib/listen/change_spec.rb
|
199
|
+
- spec/lib/listen/directory_spec.rb
|
200
|
+
- spec/lib/listen/file_spec.rb
|
201
|
+
- spec/lib/listen/listener_spec.rb
|
202
|
+
- spec/lib/listen/record_spec.rb
|
203
|
+
- spec/lib/listen/silencer_spec.rb
|
204
|
+
- spec/lib/listen_spec.rb
|
205
|
+
- spec/spec_helper.rb
|
206
|
+
- spec/support/acceptance_helper.rb
|
207
|
+
- spec/support/actor_helper.rb
|
208
|
+
- spec/support/fixtures_helper.rb
|
209
|
+
- spec/support/platform_helper.rb
|