middle_squid 1.0 → 1.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/README.md +8 -1
- data/lib/middle_squid/helpers.rb +6 -2
- data/lib/middle_squid/indexer.rb +50 -23
- data/lib/middle_squid/version.rb +1 -1
- data/test/resources/empty_config.rb +1 -0
- data/test/resources/invalid_byte/cat/list +1 -0
- data/test/test_cli.rb +12 -8
- data/test/test_helper.rb +14 -1
- data/test/test_indexer.rb +61 -56
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 516bbcd321414bdfd91755211912e7edb9a7533a
|
4
|
+
data.tar.gz: ff8669daab5db30a2f25810ae40a13feed93fbd7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a62589c10bccafeb51c082f53552dd97bb566489c6be203f1eed1b3aff846f4111e4a4a5cc931b16cb502b6228596ef2650f33073fbc2094dac3d99effb16ef7
|
7
|
+
data.tar.gz: e473a55bc36ad604a4f1e7efd9c492d42a2ee08971f493484e1028f7ad8f83c1fcd40c1f61647261f4145f0c09f27384b1bfd9ba1b06d940df6323ca09e48466
|
data/README.md
CHANGED
@@ -147,7 +147,7 @@ tar xzf shallalist.tar.gz
|
|
147
147
|
mv BL ShallaBlackList
|
148
148
|
|
149
149
|
# Construct the blacklist database
|
150
|
-
/usr/local/bin/middle_squid_wrapper.sh index ShallaBlackList -C /
|
150
|
+
/usr/local/bin/middle_squid_wrapper.sh index ShallaBlackList -C /home/proxy/middle_squid_config.rb
|
151
151
|
|
152
152
|
exit
|
153
153
|
```
|
@@ -208,6 +208,13 @@ MiddleSquid's documentation is hosted at
|
|
208
208
|
|
209
209
|
## Changelog
|
210
210
|
|
211
|
+
### v1.0.1 (2014-11-06)
|
212
|
+
|
213
|
+
- send download errors as text/plain
|
214
|
+
- fix a crash when reading invalid UTF-8 byte sequences
|
215
|
+
- cleanup `index`'s output (everything is now sent to stderr)
|
216
|
+
- show the indexing progress
|
217
|
+
|
211
218
|
### v1.0 (2014-10-05)
|
212
219
|
|
213
220
|
First public release.
|
data/lib/middle_squid/helpers.rb
CHANGED
@@ -29,7 +29,7 @@ module MiddleSquid::Helpers
|
|
29
29
|
# }
|
30
30
|
# }
|
31
31
|
# @param request [Rack::Request] the request to imitate
|
32
|
-
# @param uri [
|
32
|
+
# @param uri [#to_s] the resource to fetch
|
33
33
|
# @return [Array] a rack triplet (status code, response headers and body)
|
34
34
|
# @see Actions#intercept
|
35
35
|
def download_like(request, uri)
|
@@ -62,7 +62,11 @@ module MiddleSquid::Helpers
|
|
62
62
|
}
|
63
63
|
|
64
64
|
http.errback {
|
65
|
-
fiber.resume [
|
65
|
+
fiber.resume [
|
66
|
+
520,
|
67
|
+
{'Content-Type' => 'text/plain'},
|
68
|
+
"[MiddleSquid] #{http.error}"
|
69
|
+
]
|
66
70
|
}
|
67
71
|
|
68
72
|
Fiber.yield
|
data/lib/middle_squid/indexer.rb
CHANGED
@@ -54,8 +54,8 @@ module MiddleSquid
|
|
54
54
|
# @param directories [Array<String>]
|
55
55
|
def index(directories)
|
56
56
|
if !@full_index && @cats_in_use.empty?
|
57
|
-
|
58
|
-
|
57
|
+
oops 'the loaded configuration does not use any blacklist'
|
58
|
+
info 'nothing to do in minimal indexing mode'
|
59
59
|
return
|
60
60
|
end
|
61
61
|
|
@@ -72,28 +72,41 @@ module MiddleSquid
|
|
72
72
|
commit_or_rollback
|
73
73
|
|
74
74
|
end_time = Time.now
|
75
|
-
|
75
|
+
info "finished after #{end_time - start_time} seconds"
|
76
76
|
ensure
|
77
77
|
db.rollback if db.transaction_active?
|
78
78
|
end
|
79
79
|
|
80
80
|
private
|
81
|
-
def
|
82
|
-
|
81
|
+
def output(string, always: false)
|
82
|
+
$stderr.print string if always || !@quiet
|
83
|
+
end
|
84
|
+
|
85
|
+
def oops(msg)
|
86
|
+
output "ERROR: #{msg}\n", always: true
|
87
|
+
end
|
88
|
+
|
89
|
+
def warn(msg)
|
90
|
+
output "WARNING: #{msg}\n", always: true
|
91
|
+
end
|
92
|
+
|
93
|
+
def info(line = "")
|
94
|
+
line << "\n"
|
95
|
+
output line
|
83
96
|
end
|
84
97
|
|
85
98
|
def truncate
|
86
|
-
|
99
|
+
info 'truncating database'
|
87
100
|
|
88
101
|
db.execute 'DELETE FROM domains'
|
89
102
|
db.execute 'DELETE FROM urls'
|
90
103
|
end
|
91
104
|
|
92
105
|
def walk_in(directory)
|
93
|
-
|
106
|
+
info "reading #{directory}"
|
94
107
|
|
95
108
|
unless File.directory? directory
|
96
|
-
warn "
|
109
|
+
warn "#{directory}: no such directory"
|
97
110
|
return
|
98
111
|
end
|
99
112
|
|
@@ -120,24 +133,38 @@ module MiddleSquid
|
|
120
133
|
|
121
134
|
@indexed_cats << category
|
122
135
|
|
123
|
-
|
136
|
+
total_size = File.size path
|
137
|
+
current_pos = percent = reported = 0
|
138
|
+
|
139
|
+
status = "\rindexing #{dirname}/#{pn.basename} [%d%%]"
|
140
|
+
output status % percent
|
124
141
|
|
125
142
|
File.foreach(path) {|line|
|
143
|
+
current_pos += line.bytesize
|
144
|
+
percent = (current_pos.to_f / total_size * 100).to_i
|
145
|
+
|
146
|
+
if percent != reported
|
147
|
+
output status % percent
|
148
|
+
reported = percent
|
149
|
+
end
|
150
|
+
|
126
151
|
type = append_to category, line
|
127
152
|
@total[type] += 1
|
128
153
|
}
|
154
|
+
|
155
|
+
output "\n"
|
129
156
|
end
|
130
157
|
|
131
158
|
def append_to(category, line)
|
159
|
+
# fix invalid UTF-8 byte sequences
|
160
|
+
line.scrub! ''
|
161
|
+
|
132
162
|
# remove trailing whitespace
|
133
163
|
line.strip!
|
134
164
|
|
135
165
|
# ignore regex lists
|
136
166
|
return :ignored unless line[0] =~ /\w/
|
137
167
|
|
138
|
-
# fix invalid bytes
|
139
|
-
line.scrub! ''
|
140
|
-
|
141
168
|
# fix for dirty lists
|
142
169
|
line.tr! '\\', '/'
|
143
170
|
|
@@ -167,26 +194,26 @@ module MiddleSquid
|
|
167
194
|
@indexed_cats.uniq!
|
168
195
|
missing_cats = @cats_in_use - @indexed_cats
|
169
196
|
|
170
|
-
|
171
|
-
|
172
|
-
warn "
|
197
|
+
info
|
198
|
+
info "indexed #{@indexed_cats.size} categorie(s): #{@indexed_cats}"
|
199
|
+
warn "could not find #{missing_cats}" unless missing_cats.empty?
|
173
200
|
end
|
174
201
|
|
175
202
|
def stats
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
203
|
+
info "found #{@total[:domain]} domain(s)"
|
204
|
+
info "found #{@total[:url]} url(s)"
|
205
|
+
info "found #{@total[:duplicate]} duplicate(s)"
|
206
|
+
info "found #{@total[:ignored]} ignored expression(s)"
|
207
|
+
info
|
181
208
|
end
|
182
209
|
|
183
210
|
def commit_or_rollback
|
184
211
|
if @total[:domain] > 0 || @total[:url] > 0
|
185
|
-
|
212
|
+
info 'committing changes'
|
186
213
|
db.commit
|
187
214
|
else
|
188
|
-
|
189
|
-
|
215
|
+
oops 'nothing to commit'
|
216
|
+
info 'reverting changes'
|
190
217
|
db.rollback
|
191
218
|
end
|
192
219
|
end
|
data/lib/middle_squid/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
run proc {}
|
data/test/test_cli.rb
CHANGED
@@ -48,28 +48,30 @@ class TestCLI < MiniTest::Test
|
|
48
48
|
MiddleSquid::CLI.start(%W[index #{list} -C #{conf} --full])
|
49
49
|
end
|
50
50
|
|
51
|
-
assert_match /\Ahello #<MiddleSquid
|
52
|
-
|
51
|
+
assert_match /\Ahello #<MiddleSquid:.+>\Z/, stdout
|
52
|
+
|
53
|
+
assert_match "reading #{list}", stderr
|
53
54
|
end
|
54
55
|
|
55
56
|
def test_index_relative_path
|
56
57
|
absolute = File.expand_path '../resources', __FILE__
|
57
58
|
path = Pathname.new(absolute).relative_path_from(Pathname.new(Dir.home))
|
58
59
|
|
59
|
-
conf = File.join '~', path, '
|
60
|
+
conf = File.join '~', path, 'empty_config.rb'
|
60
61
|
list = File.join '~', path, 'black'
|
61
62
|
|
62
63
|
stdout, stderr = capture_io do
|
63
64
|
MiddleSquid::CLI.start(%W[index #{list} -C #{conf} --full])
|
64
65
|
end
|
65
66
|
|
66
|
-
|
67
|
-
|
67
|
+
assert_empty stdout
|
68
|
+
|
69
|
+
assert_match "reading #{absolute}/black", stderr
|
68
70
|
end
|
69
71
|
|
70
72
|
def test_index_multiple
|
71
73
|
path = File.expand_path '../resources', __FILE__
|
72
|
-
config = File.join path, '
|
74
|
+
config = File.join path, 'empty_config.rb'
|
73
75
|
list_1 = File.join path, 'black'
|
74
76
|
list_2 = File.join path, 'gray'
|
75
77
|
|
@@ -77,8 +79,10 @@ class TestCLI < MiniTest::Test
|
|
77
79
|
MiddleSquid::CLI.start(%W[index #{list_1} #{list_2} -C #{config} --full])
|
78
80
|
end
|
79
81
|
|
80
|
-
|
81
|
-
|
82
|
+
assert_empty stdout
|
83
|
+
|
84
|
+
assert_match "reading #{list_1}", stderr
|
85
|
+
assert_match "reading #{list_2}", stderr
|
82
86
|
end
|
83
87
|
|
84
88
|
def test_version
|
data/test/test_helper.rb
CHANGED
@@ -70,7 +70,20 @@ class TestHelpers < MiniTest::Test
|
|
70
70
|
assert_requested stub
|
71
71
|
|
72
72
|
assert_equal 520, status
|
73
|
-
|
73
|
+
assert_equal({'Content-Type' => 'text/plain'}, headers)
|
74
74
|
assert_equal '[MiddleSquid] WebMock timeout error', body
|
75
75
|
end
|
76
|
+
|
77
|
+
def test_download_from_string
|
78
|
+
uri = 'http://test.com/' # not a URI object
|
79
|
+
|
80
|
+
stub = stub_request(:get, uri).
|
81
|
+
to_return(:status => 200, :body => '')
|
82
|
+
|
83
|
+
download_wrapper uri,
|
84
|
+
'REQUEST_METHOD' => 'GET',
|
85
|
+
'rack.input' => StringIO.new
|
86
|
+
|
87
|
+
assert_requested stub
|
88
|
+
end
|
76
89
|
end
|
data/test/test_indexer.rb
CHANGED
@@ -42,22 +42,22 @@ class TestIndexer < MiniTest::Test
|
|
42
42
|
@obj.index [File.join(@path, 'black')]
|
43
43
|
end
|
44
44
|
|
45
|
-
assert_equal
|
46
|
-
|
47
|
-
|
45
|
+
assert_equal <<-OUT, stderr
|
46
|
+
ERROR: the loaded configuration does not use any blacklist
|
47
|
+
nothing to do in minimal indexing mode
|
48
|
+
OUT
|
48
49
|
|
49
50
|
assert has_test_data?
|
50
51
|
end
|
51
52
|
|
52
|
-
def
|
53
|
+
def test_empty_file
|
53
54
|
stdout, stderr = capture_io do
|
54
55
|
@obj.index [File.join(@path, 'empty')]
|
55
56
|
end
|
56
57
|
|
57
|
-
assert_match 'indexing cat/emptylist',
|
58
|
-
assert_match 'reverting changes', stdout
|
59
|
-
|
58
|
+
assert_match 'indexing cat/emptylist', stderr
|
60
59
|
assert_match 'ERROR: nothing to commit', stderr
|
60
|
+
assert_match 'reverting changes', stderr
|
61
61
|
|
62
62
|
assert has_test_data?
|
63
63
|
end
|
@@ -84,18 +84,18 @@ class TestIndexer < MiniTest::Test
|
|
84
84
|
['tracker', '.cloudfront-labs.amazonaws.com', 'x.png/'],
|
85
85
|
], urls
|
86
86
|
|
87
|
-
assert_match 'indexing ads/urls',
|
88
|
-
assert_match 'indexing ads/
|
89
|
-
assert_match 'indexing
|
90
|
-
assert_match 'indexing
|
91
|
-
assert_match '
|
92
|
-
assert_match '
|
93
|
-
assert_match '
|
94
|
-
assert_match 'found
|
95
|
-
assert_match 'found
|
96
|
-
assert_match '
|
97
|
-
|
98
|
-
|
87
|
+
assert_match 'indexing ads/urls', stderr
|
88
|
+
assert_match 'indexing ads/urls', stderr
|
89
|
+
assert_match 'indexing ads/domains', stderr
|
90
|
+
assert_match 'indexing ads/domains', stderr
|
91
|
+
assert_match 'indexing tracker/urls', stderr
|
92
|
+
assert_match 'indexing tracker/domains', stderr
|
93
|
+
assert_match 'indexed 2 categorie(s): ["ads", "tracker"]', stderr
|
94
|
+
assert_match 'found 4 domain(s)', stderr
|
95
|
+
assert_match 'found 3 url(s)', stderr
|
96
|
+
assert_match 'found 0 duplicate(s)', stderr
|
97
|
+
assert_match 'found 0 ignored expression(s)', stderr
|
98
|
+
assert_match 'committing changes', stderr
|
99
99
|
end
|
100
100
|
|
101
101
|
def test_index_multiple
|
@@ -128,12 +128,10 @@ class TestIndexer < MiniTest::Test
|
|
128
128
|
['isp', '.telus.com', 'content/internet/'],
|
129
129
|
], urls
|
130
130
|
|
131
|
-
assert_match 'indexed 4 categorie(s): ["ads", "tracker", "isp", "news"]',
|
132
|
-
assert_match 'found 8 domain(s)',
|
133
|
-
assert_match 'found 4 url(s)',
|
134
|
-
assert_match 'found 0 duplicate(s)',
|
135
|
-
|
136
|
-
assert_empty stderr
|
131
|
+
assert_match 'indexed 4 categorie(s): ["ads", "tracker", "isp", "news"]', stderr
|
132
|
+
assert_match 'found 8 domain(s)', stderr
|
133
|
+
assert_match 'found 4 url(s)', stderr
|
134
|
+
assert_match 'found 0 duplicate(s)', stderr
|
137
135
|
end
|
138
136
|
|
139
137
|
def test_ignore_subdirectories
|
@@ -141,7 +139,8 @@ class TestIndexer < MiniTest::Test
|
|
141
139
|
@obj.index [File.join(@path, 'subdirectory')]
|
142
140
|
end
|
143
141
|
|
144
|
-
refute_match 'cat/ignore',
|
142
|
+
refute_match 'cat/ignore', stderr
|
143
|
+
|
145
144
|
assert has_test_data?
|
146
145
|
end
|
147
146
|
|
@@ -166,10 +165,8 @@ class TestIndexer < MiniTest::Test
|
|
166
165
|
['ads', '.google.com', 'adsense/'],
|
167
166
|
], urls
|
168
167
|
|
169
|
-
refute_match 'tracker',
|
170
|
-
assert_match 'indexed 1 categorie(s): ["ads"]',
|
171
|
-
|
172
|
-
assert_empty stderr
|
168
|
+
refute_match 'tracker', stderr
|
169
|
+
assert_match 'indexed 1 categorie(s): ["ads"]', stderr
|
173
170
|
end
|
174
171
|
|
175
172
|
def test_not_found
|
@@ -179,7 +176,7 @@ class TestIndexer < MiniTest::Test
|
|
179
176
|
|
180
177
|
assert has_test_data?
|
181
178
|
|
182
|
-
assert_match "reading #{File.join @path, '404'}",
|
179
|
+
assert_match "reading #{File.join @path, '404'}", stderr
|
183
180
|
|
184
181
|
assert_match "WARNING: #{File.join @path, '404'}: no such directory\n", stderr
|
185
182
|
assert_match "ERROR: nothing to commit", stderr
|
@@ -195,8 +192,8 @@ class TestIndexer < MiniTest::Test
|
|
195
192
|
|
196
193
|
refute has_test_data?
|
197
194
|
|
198
|
-
assert_match "reading #{File.join @path, '404'}",
|
199
|
-
assert_match "reading #{File.join @path, 'gray'}",
|
195
|
+
assert_match "reading #{File.join @path, '404'}", stderr
|
196
|
+
assert_match "reading #{File.join @path, 'gray'}", stderr
|
200
197
|
|
201
198
|
assert_match "WARNING: #{File.join @path, '404'}: no such directory\n", stderr
|
202
199
|
end
|
@@ -248,6 +245,7 @@ class TestIndexer < MiniTest::Test
|
|
248
245
|
urls = db.execute 'SELECT category, host, path FROM urls'
|
249
246
|
assert_equal [
|
250
247
|
['cat', '.host.com', 'path_with__invalid_byte/'],
|
248
|
+
['cat', '.host.com', 'invalidbyte/'],
|
251
249
|
], urls
|
252
250
|
end
|
253
251
|
|
@@ -289,10 +287,8 @@ class TestIndexer < MiniTest::Test
|
|
289
287
|
['copy_of_cat', '.host.com', 'path/'],
|
290
288
|
], urls
|
291
289
|
|
292
|
-
assert_match 'found 12 duplicate(s)',
|
293
|
-
assert_match 'found 0 ignored expression(s)',
|
294
|
-
|
295
|
-
assert_empty stderr
|
290
|
+
assert_match 'found 12 duplicate(s)', stderr
|
291
|
+
assert_match 'found 0 ignored expression(s)', stderr
|
296
292
|
end
|
297
293
|
|
298
294
|
def test_missing_category
|
@@ -315,7 +311,7 @@ class TestIndexer < MiniTest::Test
|
|
315
311
|
|
316
312
|
assert has_test_data?
|
317
313
|
|
318
|
-
assert_match 'found 3 ignored expression(s)',
|
314
|
+
assert_match 'found 3 ignored expression(s)', stderr
|
319
315
|
assert_match 'ERROR: nothing to commit', stderr
|
320
316
|
end
|
321
317
|
|
@@ -342,11 +338,9 @@ class TestIndexer < MiniTest::Test
|
|
342
338
|
['cat_name', '.google.com', 'adsense/'],
|
343
339
|
], urls
|
344
340
|
|
345
|
-
refute_match 'tracker',
|
346
|
-
assert_match 'indexing ads/',
|
347
|
-
assert_match 'indexed 1 categorie(s): ["cat_name"]',
|
348
|
-
|
349
|
-
assert_empty stderr
|
341
|
+
refute_match 'tracker', stderr
|
342
|
+
assert_match 'indexing ads/', stderr
|
343
|
+
assert_match 'indexed 1 categorie(s): ["cat_name"]', stderr
|
350
344
|
end
|
351
345
|
|
352
346
|
def test_domains_only
|
@@ -369,11 +363,9 @@ class TestIndexer < MiniTest::Test
|
|
369
363
|
urls = db.execute 'SELECT category, host, path FROM urls'
|
370
364
|
assert_empty urls
|
371
365
|
|
372
|
-
assert_match 'found 4 domain(s)',
|
373
|
-
assert_match 'found 0 url(s)',
|
374
|
-
assert_match 'found 3 ignored expression(s)',
|
375
|
-
|
376
|
-
assert_empty stderr
|
366
|
+
assert_match 'found 4 domain(s)', stderr
|
367
|
+
assert_match 'found 0 url(s)', stderr
|
368
|
+
assert_match 'found 3 ignored expression(s)', stderr
|
377
369
|
end
|
378
370
|
|
379
371
|
def test_urls_only
|
@@ -395,11 +387,9 @@ class TestIndexer < MiniTest::Test
|
|
395
387
|
['tracker', '.cloudfront-labs.amazonaws.com', 'x.png/'],
|
396
388
|
], urls
|
397
389
|
|
398
|
-
assert_match 'found 0 domain(s)',
|
399
|
-
assert_match 'found 3 url(s)',
|
400
|
-
assert_match 'found 4 ignored expression(s)',
|
401
|
-
|
402
|
-
assert_empty stderr
|
390
|
+
assert_match 'found 0 domain(s)', stderr
|
391
|
+
assert_match 'found 3 url(s)', stderr
|
392
|
+
assert_match 'found 4 ignored expression(s)', stderr
|
403
393
|
end
|
404
394
|
|
405
395
|
def test_append
|
@@ -410,10 +400,10 @@ class TestIndexer < MiniTest::Test
|
|
410
400
|
end
|
411
401
|
|
412
402
|
assert has_test_data?, 'should not be truncated'
|
413
|
-
refute_match 'truncating', stdout
|
414
403
|
|
415
|
-
|
416
|
-
assert_match 'found
|
404
|
+
refute_match 'truncating', stderr
|
405
|
+
assert_match 'found 4 domain(s)', stderr
|
406
|
+
assert_match 'found 3 url(s)', stderr
|
417
407
|
end
|
418
408
|
|
419
409
|
def test_quiet
|
@@ -454,4 +444,19 @@ class TestIndexer < MiniTest::Test
|
|
454
444
|
['cat', '.after.com', 'path/'],
|
455
445
|
], urls
|
456
446
|
end
|
447
|
+
|
448
|
+
def test_progress
|
449
|
+
stdout, stderr = capture_io do
|
450
|
+
@obj.index [File.join(@path, 'black')]
|
451
|
+
end
|
452
|
+
|
453
|
+
lines = stderr.lines.select {|l| l =~ /indexing/ }
|
454
|
+
|
455
|
+
assert_equal [
|
456
|
+
"\rindexing ads/domains [0%]\rindexing ads/domains [48%]\rindexing ads/domains [100%]\n",
|
457
|
+
"\rindexing ads/urls [0%]\rindexing ads/urls [100%]\n",
|
458
|
+
"\rindexing tracker/domains [0%]\rindexing tracker/domains [30%]\rindexing tracker/domains [100%]\n",
|
459
|
+
"\rindexing tracker/urls [0%]\rindexing tracker/urls [40%]\rindexing tracker/urls [100%]\n",
|
460
|
+
], lines
|
461
|
+
end
|
457
462
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middle_squid
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Fillion
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -270,6 +270,7 @@ files:
|
|
270
270
|
- test/resources/duplicates/copy_of_cat/copy_of_list
|
271
271
|
- test/resources/duplicates/copy_of_cat/list
|
272
272
|
- test/resources/empty/cat/emptylist
|
273
|
+
- test/resources/empty_config.rb
|
273
274
|
- test/resources/empty_path/cat/list
|
274
275
|
- test/resources/expressions/cat/list
|
275
276
|
- test/resources/gray/isp/domains
|
@@ -335,6 +336,7 @@ test_files:
|
|
335
336
|
- test/resources/duplicates/copy_of_cat/copy_of_list
|
336
337
|
- test/resources/duplicates/copy_of_cat/list
|
337
338
|
- test/resources/empty/cat/emptylist
|
339
|
+
- test/resources/empty_config.rb
|
338
340
|
- test/resources/empty_path/cat/list
|
339
341
|
- test/resources/expressions/cat/list
|
340
342
|
- test/resources/gray/isp/domains
|