listen 2.7.4 → 2.7.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +232 -0
- data/.travis.yml +6 -3
- data/Gemfile +9 -1
- data/Guardfile +6 -1
- data/README.md +17 -4
- data/lib/listen.rb +9 -4
- data/lib/listen/adapter.rb +5 -7
- data/lib/listen/adapter/base.rb +8 -5
- data/lib/listen/adapter/bsd.rb +58 -21
- data/lib/listen/adapter/darwin.rb +2 -4
- data/lib/listen/adapter/linux.rb +20 -10
- data/lib/listen/adapter/polling.rb +0 -2
- data/lib/listen/adapter/tcp.rb +6 -5
- data/lib/listen/adapter/windows.rb +8 -6
- data/lib/listen/change.rb +1 -2
- data/lib/listen/cli.rb +25 -22
- data/lib/listen/directory.rb +8 -6
- data/lib/listen/listener.rb +25 -19
- data/lib/listen/record.rb +4 -2
- data/lib/listen/silencer.rb +55 -25
- data/lib/listen/tcp.rb +9 -0
- data/lib/listen/tcp/broadcaster.rb +0 -2
- data/lib/listen/tcp/listener.rb +13 -8
- data/lib/listen/tcp/message.rb +0 -2
- data/lib/listen/version.rb +1 -1
- data/listen.gemspec +4 -3
- data/spec/acceptance/listen_spec.rb +190 -109
- data/spec/acceptance/tcp_spec.rb +28 -26
- data/spec/lib/listen/adapter/base_spec.rb +14 -12
- data/spec/lib/listen/adapter/bsd_spec.rb +5 -2
- data/spec/lib/listen/adapter/darwin_spec.rb +5 -2
- data/spec/lib/listen/adapter/linux_spec.rb +40 -25
- data/spec/lib/listen/adapter/polling_spec.rb +29 -14
- data/spec/lib/listen/adapter/tcp_spec.rb +24 -6
- data/spec/lib/listen/adapter/windows_spec.rb +5 -2
- data/spec/lib/listen/adapter_spec.rb +20 -17
- data/spec/lib/listen/change_spec.rb +36 -26
- data/spec/lib/listen/directory_spec.rb +128 -71
- data/spec/lib/listen/file_spec.rb +67 -34
- data/spec/lib/listen/listener_spec.rb +135 -105
- data/spec/lib/listen/record_spec.rb +32 -29
- data/spec/lib/listen/silencer_spec.rb +78 -56
- data/spec/lib/listen/tcp/broadcaster_spec.rb +3 -2
- data/spec/lib/listen/tcp/listener_spec.rb +17 -11
- data/spec/lib/listen/tcp/message_spec.rb +1 -1
- data/spec/lib/listen_spec.rb +18 -6
- data/spec/spec_helper.rb +5 -1
- data/spec/support/acceptance_helper.rb +3 -3
- data/spec/support/fixtures_helper.rb +10 -9
- metadata +17 -15
@@ -5,8 +5,8 @@ describe Listen::Adapter::Windows do
|
|
5
5
|
let(:listener) { double(Listen::Listener) }
|
6
6
|
let(:adapter) { described_class.new(listener) }
|
7
7
|
|
8
|
-
describe
|
9
|
-
it
|
8
|
+
describe '.usable?' do
|
9
|
+
it 'returns always true' do
|
10
10
|
expect(described_class).to be_usable
|
11
11
|
end
|
12
12
|
|
@@ -34,4 +34,7 @@ describe Listen::Adapter::Windows do
|
|
34
34
|
expect(described_class).to_not be_usable
|
35
35
|
end
|
36
36
|
end
|
37
|
+
|
38
|
+
specify { expect(described_class).to be_local_fs }
|
39
|
+
|
37
40
|
end
|
@@ -1,59 +1,61 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Listen::Adapter do
|
4
|
+
|
4
5
|
let(:listener) { double(Listen::Listener, options: {}) }
|
5
|
-
before
|
6
|
+
before do
|
6
7
|
Listen::Adapter::BSD.stub(:usable?) { false }
|
7
8
|
Listen::Adapter::Darwin.stub(:usable?) { false }
|
8
9
|
Listen::Adapter::Linux.stub(:usable?) { false }
|
9
10
|
Listen::Adapter::Windows.stub(:usable?) { false }
|
10
|
-
|
11
|
+
end
|
11
12
|
|
12
|
-
describe
|
13
|
+
describe '.select' do
|
13
14
|
it 'returns TCP adapter when requested' do
|
14
15
|
klass = Listen::Adapter.select(force_tcp: true)
|
15
16
|
expect(klass).to eq Listen::Adapter::TCP
|
16
17
|
end
|
17
18
|
|
18
|
-
it
|
19
|
+
it 'returns Polling adapter if forced' do
|
19
20
|
klass = Listen::Adapter.select(force_polling: true)
|
20
21
|
expect(klass).to eq Listen::Adapter::Polling
|
21
22
|
end
|
22
23
|
|
23
|
-
it
|
24
|
+
it 'returns BSD adapter when usable' do
|
24
25
|
Listen::Adapter::BSD.stub(:usable?) { true }
|
25
26
|
klass = Listen::Adapter.select
|
26
27
|
expect(klass).to eq Listen::Adapter::BSD
|
27
28
|
end
|
28
29
|
|
29
|
-
it
|
30
|
+
it 'returns Darwin adapter when usable' do
|
30
31
|
Listen::Adapter::Darwin.stub(:usable?) { true }
|
31
32
|
klass = Listen::Adapter.select
|
32
33
|
expect(klass).to eq Listen::Adapter::Darwin
|
33
34
|
end
|
34
35
|
|
35
|
-
it
|
36
|
+
it 'returns Linux adapter when usable' do
|
36
37
|
Listen::Adapter::Linux.stub(:usable?) { true }
|
37
38
|
klass = Listen::Adapter.select
|
38
39
|
expect(klass).to eq Listen::Adapter::Linux
|
39
40
|
end
|
40
41
|
|
41
|
-
it
|
42
|
+
it 'returns Windows adapter when usable' do
|
42
43
|
Listen::Adapter::Windows.stub(:usable?) { true }
|
43
44
|
klass = Listen::Adapter.select
|
44
45
|
expect(klass).to eq Listen::Adapter::Windows
|
45
46
|
end
|
46
47
|
|
47
|
-
context
|
48
|
+
context 'no usable adapters' do
|
48
49
|
before { Kernel.stub(:warn) }
|
49
50
|
|
50
|
-
it
|
51
|
+
it 'returns Polling adapter' do
|
51
52
|
klass = Listen::Adapter.select(force_polling: true)
|
52
53
|
expect(klass).to eq Listen::Adapter::Polling
|
53
54
|
end
|
54
55
|
|
55
|
-
it
|
56
|
-
|
56
|
+
it 'warns polling fallback with default message' do
|
57
|
+
msg = described_class::POLLING_FALLBACK_MESSAGE
|
58
|
+
expect(Kernel).to receive(:warn).with("[Listen warning]:\n #{msg}")
|
57
59
|
Listen::Adapter.select
|
58
60
|
end
|
59
61
|
|
@@ -62,11 +64,12 @@ describe Listen::Adapter do
|
|
62
64
|
Listen::Adapter.select(polling_fallback_message: false)
|
63
65
|
end
|
64
66
|
|
65
|
-
it
|
66
|
-
|
67
|
-
|
67
|
+
it 'warns polling fallback with custom message if set' do
|
68
|
+
expected_msg = "[Listen warning]:\n custom fallback message"
|
69
|
+
expect(Kernel).to receive(:warn).with(expected_msg)
|
70
|
+
msg = 'custom fallback message'
|
71
|
+
Listen::Adapter.select(polling_fallback_message: msg)
|
68
72
|
end
|
69
73
|
end
|
70
|
-
end
|
71
|
-
|
74
|
+
end
|
72
75
|
end
|
@@ -4,64 +4,72 @@ describe Listen::Change do
|
|
4
4
|
let(:change) { Listen::Change.new(listener) }
|
5
5
|
let(:registry) { double(Celluloid::Registry) }
|
6
6
|
let(:listener) { double(Listen::Listener, registry: registry, options: {}) }
|
7
|
-
let(:listener_changes) { double(
|
8
|
-
before
|
7
|
+
let(:listener_changes) { double('listener_changes') }
|
8
|
+
before do
|
9
9
|
listener.stub(:changes) { listener_changes }
|
10
|
-
|
10
|
+
end
|
11
11
|
|
12
|
-
describe
|
12
|
+
describe '#change' do
|
13
13
|
let(:silencer) { double('Listen::Silencer', silenced?: false) }
|
14
14
|
before { registry.stub(:[]).with(:silencer) { silencer } }
|
15
15
|
|
16
|
-
context
|
17
|
-
context
|
18
|
-
it
|
19
|
-
expect(listener_changes).to receive(:<<).
|
20
|
-
|
16
|
+
context 'file path' do
|
17
|
+
context 'with known change' do
|
18
|
+
it 'notifies change directly to listener' do
|
19
|
+
expect(listener_changes).to receive(:<<).
|
20
|
+
with(modified: Pathname.new('file_path'))
|
21
|
+
|
22
|
+
options = { type: 'File', change: :modified }
|
23
|
+
change.change(Pathname.new('file_path'), options)
|
21
24
|
end
|
22
25
|
|
23
26
|
it "doesn't notify to listener if path is silenced" do
|
24
|
-
# expect(silencer).to receive(:silenced?).with('file_path', 'File').and_return(true)
|
25
27
|
expect(silencer).to receive(:silenced?).and_return(true)
|
26
28
|
expect(listener_changes).to_not receive(:<<)
|
27
29
|
|
28
|
-
|
30
|
+
options = { type: 'File', change: :modified }
|
31
|
+
change.change(Pathname.new('file_path'), options)
|
29
32
|
end
|
30
33
|
end
|
31
34
|
|
32
|
-
context
|
35
|
+
context 'with unknown change' do
|
33
36
|
let(:file) { double('Listen::File') }
|
34
37
|
before { Listen::File.stub(:new) { file } }
|
35
38
|
|
36
|
-
it
|
37
|
-
expect(Listen::File).to receive(:new).
|
39
|
+
it 'calls Listen::File#change' do
|
40
|
+
expect(Listen::File).to receive(:new).
|
41
|
+
with(listener, Pathname.new('file_path')) { file }
|
42
|
+
|
38
43
|
expect(file).to receive(:change)
|
39
44
|
change.change(Pathname.new('file_path'), type: 'File')
|
40
45
|
end
|
41
46
|
|
42
47
|
it "doesn't call Listen::File#change if path is silenced" do
|
43
|
-
expect(silencer).to receive(:silenced?).
|
48
|
+
expect(silencer).to receive(:silenced?).
|
49
|
+
with(Pathname.new('file_path'), 'File').and_return(true)
|
50
|
+
|
44
51
|
expect(Listen::File).to_not receive(:new)
|
45
52
|
|
46
53
|
change.change(Pathname.new('file_path'), type: 'File')
|
47
54
|
end
|
48
55
|
|
49
|
-
context
|
56
|
+
context 'that returns a change' do
|
50
57
|
before { file.stub(:change) { :modified } }
|
51
58
|
|
52
|
-
context
|
59
|
+
context 'listener listen' do
|
53
60
|
before { listener.stub(:listen?) { true } }
|
54
61
|
|
55
|
-
it
|
62
|
+
it 'notifies change to listener' do
|
56
63
|
file_path = double(Pathname, to_s: 'file_path', exist?: true)
|
57
64
|
expect(listener_changes).to receive(:<<).with(modified: file_path)
|
58
65
|
change.change(file_path, type: 'File')
|
59
66
|
end
|
60
67
|
|
61
|
-
context
|
62
|
-
it
|
68
|
+
context 'silence option' do
|
69
|
+
it 'notifies change to listener' do
|
63
70
|
expect(listener_changes).to_not receive(:<<)
|
64
|
-
|
71
|
+
options = { type: 'File', silence: true }
|
72
|
+
change.change(Pathname.new('file_path'), options)
|
65
73
|
end
|
66
74
|
end
|
67
75
|
end
|
@@ -69,14 +77,14 @@ describe Listen::Change do
|
|
69
77
|
context "listener doesn't listen" do
|
70
78
|
before { listener.stub(:listen?) { false } }
|
71
79
|
|
72
|
-
it
|
80
|
+
it 'notifies change to listener' do
|
73
81
|
expect(listener_changes).to_not receive(:<<)
|
74
82
|
change.change(Pathname.new('file_path'), type: 'File')
|
75
83
|
end
|
76
84
|
end
|
77
85
|
end
|
78
86
|
|
79
|
-
context
|
87
|
+
context 'that returns no change' do
|
80
88
|
before { file.stub(:change) { nil } }
|
81
89
|
|
82
90
|
it "doesn't notifies no change" do
|
@@ -87,13 +95,15 @@ describe Listen::Change do
|
|
87
95
|
end
|
88
96
|
end
|
89
97
|
|
90
|
-
context
|
98
|
+
context 'directory path' do
|
91
99
|
let(:dir) { double(Listen::Directory) }
|
92
100
|
let(:dir_options) { { type: 'Dir', recursive: true } }
|
93
101
|
before { Listen::Directory.stub(:new) { dir } }
|
94
102
|
|
95
|
-
it
|
96
|
-
expect(Listen::Directory).to receive(:new).
|
103
|
+
it 'calls Listen::Directory#scan' do
|
104
|
+
expect(Listen::Directory).to receive(:new).
|
105
|
+
with(listener, Pathname.new('dir_path'), dir_options) { dir }
|
106
|
+
|
97
107
|
expect(dir).to receive(:scan)
|
98
108
|
change.change(Pathname.new('dir_path'), dir_options)
|
99
109
|
end
|
@@ -3,18 +3,22 @@ require 'spec_helper'
|
|
3
3
|
describe Listen::Directory do
|
4
4
|
let(:registry) { double(Celluloid::Registry) }
|
5
5
|
let(:listener) { double(Listen::Listener, registry: registry, options: {}) }
|
6
|
-
|
6
|
+
|
7
|
+
let(:record) do
|
8
|
+
double(Listen::Record, async: double(set_path: true, unset_path: true))
|
9
|
+
end
|
10
|
+
|
7
11
|
let(:change_pool) { double(Listen::Change) }
|
8
12
|
let(:change_pool_async) { double('ChangePoolAsync') }
|
9
13
|
let(:path) { Pathname.new(Dir.pwd) }
|
10
|
-
around { |example| fixtures {
|
11
|
-
before
|
14
|
+
around { |example| fixtures { example.run } }
|
15
|
+
before do
|
12
16
|
change_pool.stub(:async) { change_pool_async }
|
13
17
|
registry.stub(:[]).with(:record) { record }
|
14
18
|
registry.stub(:[]).with(:change_pool) { change_pool }
|
15
|
-
|
19
|
+
end
|
16
20
|
|
17
|
-
describe
|
21
|
+
describe '#scan' do
|
18
22
|
let(:dir_path) { path.join('dir') }
|
19
23
|
let(:file_path) { dir_path.join('file.rb') }
|
20
24
|
let(:other_file_path) { dir_path.join('other_file.rb') }
|
@@ -22,129 +26,182 @@ describe Listen::Directory do
|
|
22
26
|
let(:other_inside_dir_path) { dir_path.join('other_inside_dir') }
|
23
27
|
let(:dir) { Listen::Directory.new(listener, dir_path, options) }
|
24
28
|
|
25
|
-
context
|
29
|
+
context 'with recursive off' do
|
26
30
|
let(:options) { { recursive: false } }
|
27
31
|
|
28
|
-
context
|
29
|
-
let(:record_dir_entries)
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
32
|
+
context 'file & inside_dir paths present in record' do
|
33
|
+
let(:record_dir_entries) do
|
34
|
+
{
|
35
|
+
'file.rb' => { type: 'File' },
|
36
|
+
'inside_dir' => { type: 'Dir' }
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
before do
|
41
|
+
record.stub_chain(:future, :dir_entries) do
|
42
|
+
double(value: record_dir_entries)
|
43
|
+
end
|
44
|
+
|
34
45
|
change_pool_async.stub(:change)
|
35
|
-
|
46
|
+
end
|
36
47
|
|
37
|
-
context
|
38
|
-
around
|
48
|
+
context 'empty dir' do
|
49
|
+
around do |example|
|
50
|
+
mkdir dir_path
|
51
|
+
example.run
|
52
|
+
end
|
39
53
|
|
40
|
-
it
|
41
|
-
expect(record.async).to receive(:set_path).
|
54
|
+
it 'sets record dir path' do
|
55
|
+
expect(record.async).to receive(:set_path).
|
56
|
+
with(dir_path, type: 'Dir')
|
42
57
|
dir.scan
|
43
58
|
end
|
44
59
|
|
45
60
|
it "calls change for file path and dir that doesn't exist" do
|
46
|
-
expect(change_pool_async).to receive(:change).
|
47
|
-
|
61
|
+
expect(change_pool_async).to receive(:change).
|
62
|
+
with(file_path, type: 'File', recursive: false)
|
63
|
+
|
64
|
+
expect(change_pool_async).to receive(:change).
|
65
|
+
with(inside_dir_path, type: 'Dir', recursive: false)
|
66
|
+
|
48
67
|
dir.scan
|
49
68
|
end
|
50
69
|
end
|
51
70
|
|
52
|
-
context
|
53
|
-
around
|
54
|
-
mkdir dir_path
|
55
|
-
touch other_file_path
|
56
|
-
example.run
|
71
|
+
context 'other file path present in dir' do
|
72
|
+
around do |example|
|
73
|
+
mkdir dir_path
|
74
|
+
touch other_file_path
|
75
|
+
example.run
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'notices file & other_file and no longer existing dir' do
|
79
|
+
expect(change_pool_async).to receive(:change).
|
80
|
+
with(file_path, type: 'File', recursive: false)
|
81
|
+
|
82
|
+
expect(change_pool_async).to receive(:change).
|
83
|
+
with(other_file_path, type: 'File', recursive: false)
|
84
|
+
|
85
|
+
expect(change_pool_async).to receive(:change).
|
86
|
+
with(inside_dir_path, type: 'Dir', recursive: false)
|
57
87
|
|
58
|
-
it "calls change for file & other_file paths and dir that doesn't exist" do
|
59
|
-
expect(change_pool_async).to receive(:change).with(file_path, type: 'File', recursive: false)
|
60
|
-
expect(change_pool_async).to receive(:change).with(other_file_path, type: 'File', recursive: false)
|
61
|
-
expect(change_pool_async).to receive(:change).with(inside_dir_path, type: 'Dir', recursive: false)
|
62
88
|
dir.scan
|
63
89
|
end
|
64
90
|
end
|
65
91
|
end
|
66
92
|
|
67
|
-
context
|
68
|
-
before
|
93
|
+
context 'dir paths not present in record' do
|
94
|
+
before do
|
95
|
+
record.stub_chain(:future, :dir_entries) { double(value: {}) }
|
96
|
+
end
|
69
97
|
|
70
|
-
context
|
71
|
-
it
|
98
|
+
context 'non-existing dir path' do
|
99
|
+
it 'calls change only for file path' do
|
72
100
|
expect(change_pool_async).to_not receive(:change)
|
73
101
|
dir.scan
|
74
102
|
end
|
75
103
|
|
76
|
-
it
|
104
|
+
it 'unsets record dir path' do
|
77
105
|
expect(record.async).to receive(:unset_path).with(dir_path)
|
78
106
|
dir.scan
|
79
107
|
end
|
80
108
|
end
|
81
109
|
|
82
|
-
context
|
83
|
-
around
|
84
|
-
mkdir dir_path
|
85
|
-
touch file_path
|
86
|
-
example.run
|
110
|
+
context 'other file path present in dir' do
|
111
|
+
around do |example|
|
112
|
+
mkdir dir_path
|
113
|
+
touch file_path
|
114
|
+
example.run
|
115
|
+
end
|
116
|
+
|
117
|
+
it 'calls change for file & other_file paths' do
|
118
|
+
expect(change_pool_async).to receive(:change).
|
119
|
+
with(file_path, type: 'File', recursive: false)
|
120
|
+
|
121
|
+
expect(change_pool_async).to_not receive(:change).
|
122
|
+
with(other_file_path, type: 'File', recursive: false)
|
123
|
+
|
124
|
+
expect(change_pool_async).to_not receive(:change).
|
125
|
+
with(inside_dir_path, type: 'Dir', recursive: false)
|
87
126
|
|
88
|
-
it "calls change for file & other_file paths" do
|
89
|
-
expect(change_pool_async).to receive(:change).with(file_path, type: 'File', recursive: false)
|
90
|
-
expect(change_pool_async).to_not receive(:change).with(other_file_path, type: 'File', recursive: false)
|
91
|
-
expect(change_pool_async).to_not receive(:change).with(inside_dir_path, type: 'Dir', recursive: false)
|
92
127
|
dir.scan
|
93
128
|
end
|
94
129
|
end
|
95
130
|
end
|
96
131
|
end
|
97
132
|
|
98
|
-
context
|
133
|
+
context 'with recursive on' do
|
99
134
|
let(:options) { { recursive: true } }
|
100
135
|
|
101
|
-
context
|
102
|
-
let(:record_dir_entries)
|
136
|
+
context 'file & inside_dir paths present in record' do
|
137
|
+
let(:record_dir_entries) do {
|
103
138
|
'file.rb' => { type: 'File' },
|
104
|
-
'inside_dir' => { type: 'Dir' } }
|
105
|
-
|
139
|
+
'inside_dir' => { type: 'Dir' } }
|
140
|
+
end
|
141
|
+
|
142
|
+
before do
|
143
|
+
record.stub_chain(:future, :dir_entries) do
|
144
|
+
double(value: record_dir_entries)
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
context 'empty dir' do
|
149
|
+
it 'calls change for file & inside_dir path' do
|
150
|
+
expect(change_pool_async).to receive(:change).
|
151
|
+
with(file_path, type: 'File', recursive: true)
|
152
|
+
|
153
|
+
expect(change_pool_async).to receive(:change).
|
154
|
+
with(inside_dir_path, type: 'Dir', recursive: true)
|
106
155
|
|
107
|
-
context "empty dir" do
|
108
|
-
it "calls change for file & inside_dir path" do
|
109
|
-
expect(change_pool_async).to receive(:change).with(file_path, type: 'File', recursive: true)
|
110
|
-
expect(change_pool_async).to receive(:change).with(inside_dir_path, type: 'Dir', recursive: true)
|
111
156
|
dir.scan
|
112
157
|
end
|
113
158
|
end
|
114
159
|
|
115
|
-
context
|
116
|
-
around
|
117
|
-
mkdir dir_path
|
118
|
-
mkdir other_inside_dir_path
|
119
|
-
example.run
|
160
|
+
context 'other inside_dir path present in dir' do
|
161
|
+
around do |example|
|
162
|
+
mkdir dir_path
|
163
|
+
mkdir other_inside_dir_path
|
164
|
+
example.run
|
165
|
+
end
|
166
|
+
|
167
|
+
it 'calls change for file, other_file & inside_dir paths' do
|
168
|
+
expect(change_pool_async).to receive(:change).
|
169
|
+
with(file_path, type: 'File', recursive: true)
|
170
|
+
|
171
|
+
expect(change_pool_async).to receive(:change).
|
172
|
+
with(inside_dir_path, type: 'Dir', recursive: true)
|
173
|
+
|
174
|
+
expect(change_pool_async).to receive(:change).
|
175
|
+
with(other_inside_dir_path, type: 'Dir', recursive: true)
|
120
176
|
|
121
|
-
it "calls change for file, other_file & inside_dir paths" do
|
122
|
-
expect(change_pool_async).to receive(:change).with(file_path, type: 'File', recursive: true)
|
123
|
-
expect(change_pool_async).to receive(:change).with(inside_dir_path, type: 'Dir', recursive: true)
|
124
|
-
expect(change_pool_async).to receive(:change).with(other_inside_dir_path, type: 'Dir', recursive: true)
|
125
177
|
dir.scan
|
126
178
|
end
|
127
179
|
end
|
128
180
|
end
|
129
181
|
|
130
|
-
context
|
131
|
-
before
|
182
|
+
context 'dir paths not present in record' do
|
183
|
+
before do
|
184
|
+
record.stub_chain(:future, :dir_entries) { double(value: {}) }
|
185
|
+
end
|
132
186
|
|
133
|
-
context
|
134
|
-
it
|
187
|
+
context 'non-existing dir path' do
|
188
|
+
it 'calls change only for file path' do
|
135
189
|
expect(change_pool_async).to_not receive(:change)
|
136
190
|
dir.scan
|
137
191
|
end
|
138
192
|
end
|
139
193
|
|
140
|
-
context
|
141
|
-
around
|
142
|
-
mkdir dir_path
|
143
|
-
mkdir other_inside_dir_path
|
144
|
-
example.run
|
194
|
+
context 'other file path present in dir' do
|
195
|
+
around do |example|
|
196
|
+
mkdir dir_path
|
197
|
+
mkdir other_inside_dir_path
|
198
|
+
example.run
|
199
|
+
end
|
200
|
+
|
201
|
+
it 'calls change for file & other_file paths' do
|
202
|
+
expect(change_pool_async).to receive(:change).
|
203
|
+
with(other_inside_dir_path, type: 'Dir', recursive: true)
|
145
204
|
|
146
|
-
it "calls change for file & other_file paths" do
|
147
|
-
expect(change_pool_async).to receive(:change).with(other_inside_dir_path, type: 'Dir', recursive: true)
|
148
205
|
dir.scan
|
149
206
|
end
|
150
207
|
end
|