hosts 0.1.0
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.tar.gz.sig +0 -0
- data/.gitignore +12 -0
- data/.rspec +1 -0
- data/.travis.yml +8 -0
- data/.yardopts +5 -0
- data/Gemfile +23 -0
- data/HISTORY.md +6 -0
- data/LICENSE.md +15 -0
- data/README.md +347 -0
- data/Rakefile +48 -0
- data/hosts.gemspec +57 -0
- data/lib/aef/hosts.rb +51 -0
- data/lib/aef/hosts/comment.rb +73 -0
- data/lib/aef/hosts/element.rb +108 -0
- data/lib/aef/hosts/empty_element.rb +50 -0
- data/lib/aef/hosts/entry.rb +123 -0
- data/lib/aef/hosts/file.rb +252 -0
- data/lib/aef/hosts/helpers.rb +121 -0
- data/lib/aef/hosts/section.rb +141 -0
- data/lib/aef/hosts/version.rb +29 -0
- data/lib/hosts.rb +25 -0
- data/lib/hosts/bare.rb +23 -0
- data/spec/aef/hosts/comment_spec.rb +136 -0
- data/spec/aef/hosts/element_spec.rb +12 -0
- data/spec/aef/hosts/empty_element_spec.rb +96 -0
- data/spec/aef/hosts/entry_spec.rb +252 -0
- data/spec/aef/hosts/file_spec.rb +290 -0
- data/spec/aef/hosts/helpers_spec.rb +103 -0
- data/spec/aef/hosts/section_spec.rb +299 -0
- data/spec/fixtures/linux_hosts +21 -0
- data/spec/fixtures/windows_hosts +14 -0
- data/spec/integration/integration_spec.rb +384 -0
- data/spec/spec_helper.rb +47 -0
- metadata +202 -0
- metadata.gz.sig +4 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
# A comment
|
2
|
+
127.0.0.1 myhost localhost.localdomain localhost
|
3
|
+
127.0.1.1 myhost.mydomain.tld myhost
|
4
|
+
# Another comment
|
5
|
+
# Two lines long
|
6
|
+
|
7
|
+
# The following lines are desirable for IPv6 capable hosts
|
8
|
+
::1 localhost ip6-localhost ip6-loopback
|
9
|
+
fe00::0 ip6-localnet
|
10
|
+
ff00::0 ip6-mcastprefix
|
11
|
+
ff02::1 ip6-allnodes
|
12
|
+
ff02::2 ip6-allrouters
|
13
|
+
ff02::3 ip6-allhosts
|
14
|
+
|
15
|
+
127.0.0.1 example.net
|
16
|
+
|
17
|
+
2620:0:2d0:200::10 example.com
|
18
|
+
192.0.32.10 example.com
|
19
|
+
|
20
|
+
# Last comment
|
21
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# A comment
|
2
|
+
102.54.94.97 rhino.acme.com # source server
|
3
|
+
38.25.63.10 x.acme.com # x client host
|
4
|
+
# Another comment
|
5
|
+
# Two lines long
|
6
|
+
127.0.0.1 localhost otherhost evenotherhost
|
7
|
+
::1 localhost
|
8
|
+
|
9
|
+
127.0.0.1 example.net
|
10
|
+
|
11
|
+
2620:0:2d0:200::10 example.com
|
12
|
+
192.0.32.10 example.com
|
13
|
+
|
14
|
+
# Last comment
|
@@ -0,0 +1,384 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
=begin
|
3
|
+
Copyright Alexander E. Fischer <aef@raxys.net>, 2012
|
4
|
+
|
5
|
+
This file is part of Hosts.
|
6
|
+
|
7
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
8
|
+
purpose with or without fee is hereby granted, provided that the above
|
9
|
+
copyright notice and this permission notice appear in all copies.
|
10
|
+
|
11
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
12
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
13
|
+
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
14
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
15
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
16
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
17
|
+
PERFORMANCE OF THIS SOFTWARE.
|
18
|
+
=end
|
19
|
+
|
20
|
+
require 'spec_helper'
|
21
|
+
|
22
|
+
describe 'Hosts library' do
|
23
|
+
it "should be able to interpret a Windows hosts file" do
|
24
|
+
@fixture_file = fixtures_dir + 'windows_hosts'
|
25
|
+
@file = Aef::Hosts::File.new(@fixture_file)
|
26
|
+
|
27
|
+
@file.read
|
28
|
+
|
29
|
+
@file.elements.each_with_index do |element, index|
|
30
|
+
line_number = index + 1
|
31
|
+
case line_number
|
32
|
+
when 1
|
33
|
+
element.should be_a(Aef::Hosts::Comment)
|
34
|
+
element.comment.should == " A comment"
|
35
|
+
element.to_s.should ==
|
36
|
+
"# A comment\n"
|
37
|
+
element.to_s(:force_generation => true).should ==
|
38
|
+
"# A comment\n"
|
39
|
+
when 2
|
40
|
+
element.should be_a(Aef::Hosts::Entry)
|
41
|
+
element.address.should == "102.54.94.97"
|
42
|
+
element.name.should == "rhino.acme.com"
|
43
|
+
element.aliases.should be_empty
|
44
|
+
element.comment.should == " source server"
|
45
|
+
element.to_s.should ==
|
46
|
+
" 102.54.94.97 rhino.acme.com # source server\n"
|
47
|
+
element.to_s(:force_generation => true).should ==
|
48
|
+
"102.54.94.97 rhino.acme.com # source server\n"
|
49
|
+
when 3
|
50
|
+
element.should be_a(Aef::Hosts::Entry)
|
51
|
+
element.address.should == "38.25.63.10"
|
52
|
+
element.name.should == "x.acme.com"
|
53
|
+
element.aliases.should be_empty
|
54
|
+
element.comment.should == " x client host"
|
55
|
+
element.to_s.should ==
|
56
|
+
" 38.25.63.10 x.acme.com # x client host\n"
|
57
|
+
element.to_s(:force_generation => true).should ==
|
58
|
+
"38.25.63.10 x.acme.com # x client host\n"
|
59
|
+
when 4
|
60
|
+
element.should be_a(Aef::Hosts::Comment)
|
61
|
+
element.comment.should == " Another comment"
|
62
|
+
element.to_s.should ==
|
63
|
+
" # Another comment\n"
|
64
|
+
element.to_s(:force_generation => true).should ==
|
65
|
+
"# Another comment\n"
|
66
|
+
when 5
|
67
|
+
element.should be_a(Aef::Hosts::Comment)
|
68
|
+
element.comment.should == " Two lines long"
|
69
|
+
element.to_s.should ==
|
70
|
+
" # Two lines long\n"
|
71
|
+
element.to_s(:force_generation => true).should ==
|
72
|
+
"# Two lines long\n"
|
73
|
+
when 6
|
74
|
+
element.should be_a(Aef::Hosts::Entry)
|
75
|
+
element.address.should == "127.0.0.1"
|
76
|
+
element.name.should == "localhost"
|
77
|
+
element.aliases.to_set.should == ['otherhost', 'evenotherhost'].to_set
|
78
|
+
element.comment.should be_nil
|
79
|
+
element.to_s.should ==
|
80
|
+
"\t127.0.0.1 localhost otherhost evenotherhost\n"
|
81
|
+
element.to_s(:force_generation => true).should ==
|
82
|
+
"127.0.0.1 localhost otherhost evenotherhost\n"
|
83
|
+
when 7
|
84
|
+
element.should be_a(Aef::Hosts::Entry)
|
85
|
+
element.address.should == "::1"
|
86
|
+
element.name.should == "localhost"
|
87
|
+
element.aliases.should be_empty
|
88
|
+
element.comment.should be_nil
|
89
|
+
element.to_s.should ==
|
90
|
+
"\t::1 localhost\n"
|
91
|
+
element.to_s(:force_generation => true).should ==
|
92
|
+
"::1 localhost\n"
|
93
|
+
when 8
|
94
|
+
element.should be_a(Aef::Hosts::EmptyElement)
|
95
|
+
element.to_s.should ==
|
96
|
+
" \n"
|
97
|
+
element.to_s(:force_generation => true).should ==
|
98
|
+
"\n"
|
99
|
+
when 9
|
100
|
+
element.should be_a(Aef::Hosts::Entry)
|
101
|
+
element.address.should == "127.0.0.1"
|
102
|
+
element.name.should == "example.net"
|
103
|
+
element.aliases.should be_empty
|
104
|
+
element.comment.should be_nil
|
105
|
+
element.to_s.should ==
|
106
|
+
"127.0.0.1\t\t\t\texample.net\n"
|
107
|
+
element.to_s(:force_generation => true).should ==
|
108
|
+
"127.0.0.1 example.net\n"
|
109
|
+
when 10
|
110
|
+
element.should be_a(Aef::Hosts::EmptyElement)
|
111
|
+
element.to_s.should ==
|
112
|
+
"\t\n"
|
113
|
+
element.to_s(:force_generation => true).should ==
|
114
|
+
"\n"
|
115
|
+
when 11
|
116
|
+
element.should be_a(Aef::Hosts::Entry)
|
117
|
+
element.address.should == "2620:0:2d0:200::10"
|
118
|
+
element.name.should == "example.com"
|
119
|
+
element.aliases.should be_empty
|
120
|
+
element.comment.should be_nil
|
121
|
+
element.to_s.should ==
|
122
|
+
"2620:0:2d0:200::10 example.com\n"
|
123
|
+
element.to_s(:force_generation => true).should ==
|
124
|
+
"2620:0:2d0:200::10 example.com\n"
|
125
|
+
when 12
|
126
|
+
element.should be_a(Aef::Hosts::Entry)
|
127
|
+
element.address.should == "192.0.32.10"
|
128
|
+
element.name.should == "example.com"
|
129
|
+
element.aliases.should be_empty
|
130
|
+
element.comment.should be_nil
|
131
|
+
element.to_s.should ==
|
132
|
+
"192.0.32.10 example.com\n"
|
133
|
+
element.to_s(:force_generation => true).should ==
|
134
|
+
"192.0.32.10 example.com\n"
|
135
|
+
when 13
|
136
|
+
element.should be_a(Aef::Hosts::EmptyElement)
|
137
|
+
element.to_s.should ==
|
138
|
+
"\n"
|
139
|
+
element.to_s(:force_generation => true).should ==
|
140
|
+
"\n"
|
141
|
+
when 14
|
142
|
+
element.should be_a(Aef::Hosts::Comment)
|
143
|
+
element.comment.should == " Last comment"
|
144
|
+
element.to_s.should ==
|
145
|
+
"\t# Last comment\n"
|
146
|
+
element.to_s(:force_generation => true).should ==
|
147
|
+
"# Last comment\n"
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
it "should be able to interpret a Linux hosts file" do
|
153
|
+
@fixture_file = fixtures_dir + 'linux_hosts'
|
154
|
+
@file = Aef::Hosts::File.new(@fixture_file)
|
155
|
+
|
156
|
+
@file.read
|
157
|
+
|
158
|
+
@file.elements.each_with_index do |element, index|
|
159
|
+
line_number = index + 1
|
160
|
+
case line_number
|
161
|
+
when 1
|
162
|
+
element.should be_a(Aef::Hosts::Comment)
|
163
|
+
element.comment.should == " A comment"
|
164
|
+
element.to_s.should ==
|
165
|
+
"# A comment\n"
|
166
|
+
element.to_s(:force_generation => true).should ==
|
167
|
+
"# A comment\n"
|
168
|
+
when 2
|
169
|
+
element.should be_a(Aef::Hosts::Entry)
|
170
|
+
element.address.should == "127.0.0.1"
|
171
|
+
element.name.should == "myhost"
|
172
|
+
element.aliases.to_set.should == ['localhost.localdomain', 'localhost'].to_set
|
173
|
+
element.comment.should be_nil
|
174
|
+
element.to_s.should ==
|
175
|
+
"127.0.0.1\tmyhost\tlocalhost.localdomain\tlocalhost\n"
|
176
|
+
element.to_s(:force_generation => true).should ==
|
177
|
+
"127.0.0.1 myhost localhost.localdomain localhost\n"
|
178
|
+
when 3
|
179
|
+
element.should be_a(Aef::Hosts::Entry)
|
180
|
+
element.address.should == "127.0.1.1"
|
181
|
+
element.name.should == "myhost.mydomain.tld"
|
182
|
+
element.aliases.to_set.should == ['myhost'].to_set
|
183
|
+
element.comment.should be_nil
|
184
|
+
element.to_s.should ==
|
185
|
+
"127.0.1.1\tmyhost.mydomain.tld myhost\n"
|
186
|
+
element.to_s(:force_generation => true).should ==
|
187
|
+
"127.0.1.1 myhost.mydomain.tld myhost\n"
|
188
|
+
when 4
|
189
|
+
element.should be_a(Aef::Hosts::Comment)
|
190
|
+
element.comment.should == " Another comment"
|
191
|
+
element.to_s.should ==
|
192
|
+
" # Another comment\n"
|
193
|
+
element.to_s(:force_generation => true).should ==
|
194
|
+
"# Another comment\n"
|
195
|
+
when 5
|
196
|
+
element.should be_a(Aef::Hosts::Comment)
|
197
|
+
element.comment.should == " Two lines long"
|
198
|
+
element.to_s.should ==
|
199
|
+
" # Two lines long\n"
|
200
|
+
element.to_s(:force_generation => true).should ==
|
201
|
+
"# Two lines long\n"
|
202
|
+
when 6
|
203
|
+
element.should be_a(Aef::Hosts::EmptyElement)
|
204
|
+
element.to_s.should ==
|
205
|
+
"\n"
|
206
|
+
element.to_s(:force_generation => true).should ==
|
207
|
+
"\n"
|
208
|
+
when 7
|
209
|
+
element.should be_a(Aef::Hosts::Comment)
|
210
|
+
element.comment.should == " The following lines are desirable for IPv6 capable hosts"
|
211
|
+
element.to_s.should ==
|
212
|
+
"# The following lines are desirable for IPv6 capable hosts\n"
|
213
|
+
element.to_s(:force_generation => true).should ==
|
214
|
+
"# The following lines are desirable for IPv6 capable hosts\n"
|
215
|
+
when 8
|
216
|
+
element.should be_a(Aef::Hosts::Entry)
|
217
|
+
element.address.should == "::1"
|
218
|
+
element.name.should == "localhost"
|
219
|
+
element.aliases.to_set.should == ['ip6-localhost', 'ip6-loopback'].to_set
|
220
|
+
element.comment.should be_nil
|
221
|
+
element.to_s.should ==
|
222
|
+
"::1 localhost ip6-localhost ip6-loopback\n"
|
223
|
+
element.to_s(:force_generation => true).should ==
|
224
|
+
"::1 localhost ip6-localhost ip6-loopback\n"
|
225
|
+
when 9
|
226
|
+
element.should be_a(Aef::Hosts::Entry)
|
227
|
+
element.address.should == "fe00::0"
|
228
|
+
element.name.should == "ip6-localnet"
|
229
|
+
element.aliases.should be_empty
|
230
|
+
element.comment.should be_nil
|
231
|
+
element.to_s.should ==
|
232
|
+
"fe00::0 ip6-localnet\n"
|
233
|
+
element.to_s(:force_generation => true).should ==
|
234
|
+
"fe00::0 ip6-localnet\n"
|
235
|
+
when 10
|
236
|
+
element.should be_a(Aef::Hosts::Entry)
|
237
|
+
element.address.should == "ff00::0"
|
238
|
+
element.name.should == "ip6-mcastprefix"
|
239
|
+
element.aliases.should be_empty
|
240
|
+
element.comment.should be_nil
|
241
|
+
element.to_s.should ==
|
242
|
+
"ff00::0 ip6-mcastprefix\n"
|
243
|
+
element.to_s(:force_generation => true).should ==
|
244
|
+
"ff00::0 ip6-mcastprefix\n"
|
245
|
+
when 11
|
246
|
+
element.should be_a(Aef::Hosts::Entry)
|
247
|
+
element.address.should == "ff02::1"
|
248
|
+
element.name.should == "ip6-allnodes"
|
249
|
+
element.aliases.should be_empty
|
250
|
+
element.comment.should be_nil
|
251
|
+
element.to_s.should ==
|
252
|
+
"ff02::1 ip6-allnodes\n"
|
253
|
+
element.to_s(:force_generation => true).should ==
|
254
|
+
"ff02::1 ip6-allnodes\n"
|
255
|
+
when 12
|
256
|
+
element.should be_a(Aef::Hosts::Entry)
|
257
|
+
element.address.should == "ff02::2"
|
258
|
+
element.name.should == "ip6-allrouters"
|
259
|
+
element.aliases.should be_empty
|
260
|
+
element.comment.should be_nil
|
261
|
+
element.to_s.should ==
|
262
|
+
"ff02::2 ip6-allrouters\n"
|
263
|
+
element.to_s(:force_generation => true).should ==
|
264
|
+
"ff02::2 ip6-allrouters\n"
|
265
|
+
when 13
|
266
|
+
element.should be_a(Aef::Hosts::Entry)
|
267
|
+
element.address.should == "ff02::3"
|
268
|
+
element.name.should == "ip6-allhosts"
|
269
|
+
element.aliases.should be_empty
|
270
|
+
element.comment.should be_nil
|
271
|
+
element.to_s.should ==
|
272
|
+
"ff02::3 ip6-allhosts\n"
|
273
|
+
element.to_s(:force_generation => true).should ==
|
274
|
+
"ff02::3 ip6-allhosts\n"
|
275
|
+
when 14
|
276
|
+
element.should be_a(Aef::Hosts::EmptyElement)
|
277
|
+
element.to_s.should ==
|
278
|
+
" \n"
|
279
|
+
element.to_s(:force_generation => true).should ==
|
280
|
+
"\n"
|
281
|
+
when 15
|
282
|
+
element.should be_a(Aef::Hosts::Entry)
|
283
|
+
element.address.should == "127.0.0.1"
|
284
|
+
element.name.should == "example.net"
|
285
|
+
element.aliases.should be_empty
|
286
|
+
element.comment.should be_nil
|
287
|
+
element.to_s.should ==
|
288
|
+
"127.0.0.1\t\t\t\texample.net\n"
|
289
|
+
element.to_s(:force_generation => true).should ==
|
290
|
+
"127.0.0.1 example.net\n"
|
291
|
+
when 16
|
292
|
+
element.should be_a(Aef::Hosts::EmptyElement)
|
293
|
+
element.to_s.should ==
|
294
|
+
"\t\n"
|
295
|
+
element.to_s(:force_generation => true).should ==
|
296
|
+
"\n"
|
297
|
+
when 17
|
298
|
+
element.should be_a(Aef::Hosts::Entry)
|
299
|
+
element.address.should == "2620:0:2d0:200::10"
|
300
|
+
element.name.should == "example.com"
|
301
|
+
element.aliases.should be_empty
|
302
|
+
element.comment.should be_nil
|
303
|
+
element.to_s.should ==
|
304
|
+
"2620:0:2d0:200::10 example.com\n"
|
305
|
+
element.to_s(:force_generation => true).should ==
|
306
|
+
"2620:0:2d0:200::10 example.com\n"
|
307
|
+
when 18
|
308
|
+
element.should be_a(Aef::Hosts::Entry)
|
309
|
+
element.address.should == "192.0.32.10"
|
310
|
+
element.name.should == "example.com"
|
311
|
+
element.aliases.should be_empty
|
312
|
+
element.comment.should be_nil
|
313
|
+
element.to_s.should ==
|
314
|
+
"192.0.32.10 example.com\n"
|
315
|
+
element.to_s(:force_generation => true).should ==
|
316
|
+
"192.0.32.10 example.com\n"
|
317
|
+
when 19
|
318
|
+
element.should be_a(Aef::Hosts::EmptyElement)
|
319
|
+
element.to_s.should ==
|
320
|
+
"\n"
|
321
|
+
element.to_s(:force_generation => true).should ==
|
322
|
+
"\n"
|
323
|
+
when 20
|
324
|
+
element.should be_a(Aef::Hosts::Comment)
|
325
|
+
element.comment.should == " Last comment"
|
326
|
+
element.to_s.should ==
|
327
|
+
"\t# Last comment\n"
|
328
|
+
element.to_s(:force_generation => true).should ==
|
329
|
+
"# Last comment\n"
|
330
|
+
end
|
331
|
+
end
|
332
|
+
end
|
333
|
+
|
334
|
+
it "should be able to append a new entry" do
|
335
|
+
@fixture_file = fixtures_dir + 'linux_hosts'
|
336
|
+
@file = Aef::Hosts::File.new(@fixture_file)
|
337
|
+
|
338
|
+
@file.read
|
339
|
+
|
340
|
+
@file.elements << Aef::Hosts::Entry.new(
|
341
|
+
'192.168.23.5', 'the-new-host', :aliases => [
|
342
|
+
'the-new-host.domain.tld',
|
343
|
+
'service.domain.tld'
|
344
|
+
]
|
345
|
+
)
|
346
|
+
|
347
|
+
lines = @file.to_s.lines.to_a
|
348
|
+
lines[21].should == "192.168.23.5 the-new-host the-new-host.domain.tld service.domain.tld\n"
|
349
|
+
end
|
350
|
+
|
351
|
+
it "should be able to insert a new entry" do
|
352
|
+
@fixture_file = fixtures_dir + 'linux_hosts'
|
353
|
+
@file = Aef::Hosts::File.new(@fixture_file)
|
354
|
+
|
355
|
+
@file.read
|
356
|
+
|
357
|
+
@file.elements.insert(9, Aef::Hosts::Entry.new(
|
358
|
+
'192.168.23.5', 'the-new-host', :aliases => [
|
359
|
+
'the-new-host.domain.tld',
|
360
|
+
'service.domain.tld'
|
361
|
+
]
|
362
|
+
))
|
363
|
+
|
364
|
+
lines = @file.to_s.lines.to_a
|
365
|
+
lines[9].should == "192.168.23.5 the-new-host the-new-host.domain.tld service.domain.tld\n"
|
366
|
+
end
|
367
|
+
|
368
|
+
it "should be able to prepend a new entry" do
|
369
|
+
@fixture_file = fixtures_dir + 'linux_hosts'
|
370
|
+
@file = Aef::Hosts::File.new(@fixture_file)
|
371
|
+
|
372
|
+
@file.read
|
373
|
+
|
374
|
+
@file.elements.unshift(Aef::Hosts::Entry.new(
|
375
|
+
'192.168.23.5', 'the-new-host', :aliases => [
|
376
|
+
'the-new-host.domain.tld',
|
377
|
+
'service.domain.tld'
|
378
|
+
]
|
379
|
+
))
|
380
|
+
|
381
|
+
lines = @file.to_s.lines.to_a
|
382
|
+
lines[0].should == "192.168.23.5 the-new-host the-new-host.domain.tld service.domain.tld\n"
|
383
|
+
end
|
384
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
=begin
|
3
|
+
Copyright Alexander E. Fischer <aef@raxys.net>, 2012
|
4
|
+
|
5
|
+
This file is part of Hosts.
|
6
|
+
|
7
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
8
|
+
purpose with or without fee is hereby granted, provided that the above
|
9
|
+
copyright notice and this permission notice appear in all copies.
|
10
|
+
|
11
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
12
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
13
|
+
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
14
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
15
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
16
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
17
|
+
PERFORMANCE OF THIS SOFTWARE.
|
18
|
+
=end
|
19
|
+
|
20
|
+
unless defined?(Rubinius)
|
21
|
+
require 'simplecov'
|
22
|
+
SimpleCov.start do
|
23
|
+
add_filter "/spec/"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
require 'set'
|
28
|
+
require 'pathname'
|
29
|
+
require 'tmpdir'
|
30
|
+
require 'rspec'
|
31
|
+
require 'pry'
|
32
|
+
require 'aef/hosts'
|
33
|
+
|
34
|
+
module Aef::Hosts::SpecHelper
|
35
|
+
def create_temp_dir
|
36
|
+
Pathname(Dir.mktmpdir('hosts_spec'))
|
37
|
+
end
|
38
|
+
|
39
|
+
def fixtures_dir
|
40
|
+
Pathname(__FILE__).dirname + 'fixtures'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
RSpec.configure do |config|
|
45
|
+
config.include Aef::Hosts::SpecHelper
|
46
|
+
end
|
47
|
+
|