memfs 0.4.3 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 71cd9903100239967550a02a2f803264604c076d
4
- data.tar.gz: 65c68e74aab6519b99841afa80c8bf8ec22a4907
3
+ metadata.gz: d538c6d82cd4bab8b5771b26592034f441692420
4
+ data.tar.gz: ef508f4172de7d3ab3c263dc147f70648178b0a7
5
5
  SHA512:
6
- metadata.gz: 4b5b2d13af10abc53b81c33fef8dcabe4998da21faebcabeb7f50a2ca01334fef69054d2e1c22804aaf6d7202f75b80465be6db1d3d0d3f7513707635ed05950
7
- data.tar.gz: 3c9ee2c3e9435c03c53c1777814cd42183774c914e78d2e30d2b51605df89db3a174d79a3c177cd4c911a0ea2e5e07355785f65c375d9c992986196376dbebb7
6
+ metadata.gz: 96938d69ddeac5089c3524d7981d32f318df8dac36d60d74c79936588e1f6be79a3c17975c2f853fb604395115248329a269b9b86c0fbd2c3671523637f8e630
7
+ data.tar.gz: e7858942b018d861c17b6c15b680409f86e247b14242f38ffad7a7b89f5a17e8fa3fc1dfc1c09579e54fa706016f1169945ca28622c355c76556d480a1a4cf10
data/.travis.yml CHANGED
@@ -3,3 +3,4 @@ rvm:
3
3
  - 1.9.3
4
4
  - 2.0.0
5
5
  - 2.1.2
6
+ - 2.2.2
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## HEAD
4
4
 
5
+ ## 0.5.0
6
+
7
+ * ADD: Support for _mode_ to `Dir.mkdir`, `FileUtils.mkdir` and `FileUtils.mkdir_p` (@raeno)
8
+ * ADD: Support for Ruby 2.2 (@raeno)
9
+
5
10
  ## 0.4.3
6
11
 
7
12
  * ADD: `File::SEPARATOR` and `File::ALT_SEPARATOR`
data/README.md CHANGED
@@ -165,8 +165,9 @@ end
165
165
 
166
166
  ## Known issues
167
167
 
168
- * MemFs doesn't implement IO so FileUtils.copy_stream is still the original one
169
- * Pipes and Sockets are not handled for now
168
+ * MemFs doesn't implement IO so methods like `FileUtils.copy_stream` and `IO.write` are still the originals.
169
+ * Similarly, MemFs doesn't implement Kernel, so don't use a naked `open()` call. This uses the `Kernel` class via `method_missing`, which MemFs will not intercept.
170
+ * Pipes and Sockets are not handled for now.
170
171
 
171
172
  ## TODO
172
173
 
data/lib/memfs/dir.rb CHANGED
@@ -64,8 +64,8 @@ module MemFs
64
64
  original_dir_class.home(*args)
65
65
  end
66
66
 
67
- def self.mkdir(path)
68
- fs.mkdir path
67
+ def self.mkdir(path, mode = 0777)
68
+ fs.mkdir path, mode
69
69
  end
70
70
 
71
71
  def self.open(dirname)
@@ -96,9 +96,11 @@ module MemFs
96
96
  find_parent!(new_name).add_entry link
97
97
  end
98
98
 
99
- def mkdir(path)
99
+ def mkdir(path, mode = 0777)
100
100
  fail Errno::EEXIST, path if find(path)
101
- find_parent!(path).add_entry Fake::Directory.new(path)
101
+ directory = Fake::Directory.new(path)
102
+ directory.mode = mode
103
+ find_parent!(path).add_entry directory
102
104
  end
103
105
 
104
106
  def paths
data/lib/memfs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module MemFs
2
- VERSION = '0.4.3'
2
+ VERSION = '0.5.0'
3
3
  end
@@ -7,7 +7,7 @@ describe FileUtils do
7
7
  MemFs::File.umask(0020)
8
8
  MemFs.activate!
9
9
 
10
- FileUtils.mkdir '/test'
10
+ described_class.mkdir '/test'
11
11
  end
12
12
 
13
13
  after :each do
@@ -16,100 +16,100 @@ describe FileUtils do
16
16
 
17
17
  describe '.cd' do
18
18
  it 'changes the current working directory' do
19
- FileUtils.cd '/test'
20
- expect(FileUtils.pwd).to eq('/test')
19
+ described_class.cd '/test'
20
+ expect(described_class.pwd).to eq('/test')
21
21
  end
22
22
 
23
23
  it 'returns nil' do
24
- expect(FileUtils.cd('/test')).to be_nil
24
+ expect(described_class.cd('/test')).to be_nil
25
25
  end
26
26
 
27
27
  it "raises an error when the given path doesn't exist" do
28
- expect { FileUtils.cd('/nowhere') }.to raise_specific_error(Errno::ENOENT)
28
+ expect { described_class.cd('/nowhere') }.to raise_specific_error(Errno::ENOENT)
29
29
  end
30
30
 
31
31
  it 'raises an error when the given path is not a directory' do
32
- FileUtils.touch('/test-file')
33
- expect { FileUtils.cd('/test-file') }.to raise_specific_error(Errno::ENOTDIR)
32
+ described_class.touch('/test-file')
33
+ expect { described_class.cd('/test-file') }.to raise_specific_error(Errno::ENOTDIR)
34
34
  end
35
35
 
36
36
  context 'when called with a block' do
37
37
  it 'changes current working directory for the block execution' do
38
- FileUtils.cd '/test' do
39
- expect(FileUtils.pwd).to eq('/test')
38
+ described_class.cd '/test' do
39
+ expect(described_class.pwd).to eq('/test')
40
40
  end
41
41
  end
42
42
 
43
43
  it 'resumes to the old working directory after the block execution finished' do
44
- FileUtils.cd '/'
45
- expect { FileUtils.cd('/test') {} }.to_not change { FileUtils.pwd }
44
+ described_class.cd '/'
45
+ expect { described_class.cd('/test') {} }.to_not change { described_class.pwd }
46
46
  end
47
47
  end
48
48
 
49
49
  context 'when the destination is a symlink' do
50
50
  before :each do
51
- FileUtils.symlink('/test', '/test-link')
51
+ described_class.symlink('/test', '/test-link')
52
52
  end
53
53
 
54
54
  it 'changes directory to the last target of the link chain' do
55
- FileUtils.cd('/test-link')
56
- expect(FileUtils.pwd).to eq('/test')
55
+ described_class.cd('/test-link')
56
+ expect(described_class.pwd).to eq('/test')
57
57
  end
58
58
 
59
59
  it "raises an error if the last target of the link chain doesn't exist" do
60
- expect { FileUtils.cd('/nowhere-link') }.to raise_specific_error(Errno::ENOENT)
60
+ expect { described_class.cd('/nowhere-link') }.to raise_specific_error(Errno::ENOENT)
61
61
  end
62
62
  end
63
63
  end
64
64
 
65
65
  describe '.chmod' do
66
66
  it 'changes permission bits on the named file to the bit pattern represented by mode' do
67
- FileUtils.touch '/test-file'
68
- FileUtils.chmod 0777, '/test-file'
67
+ described_class.touch '/test-file'
68
+ described_class.chmod 0777, '/test-file'
69
69
  expect(File.stat('/test-file').mode).to eq(0100777)
70
70
  end
71
71
 
72
72
  it 'changes permission bits on the named files (in list) to the bit pattern represented by mode' do
73
- FileUtils.touch ['/test-file', '/test-file2']
74
- FileUtils.chmod 0777, ['/test-file', '/test-file2']
73
+ described_class.touch ['/test-file', '/test-file2']
74
+ described_class.chmod 0777, ['/test-file', '/test-file2']
75
75
  expect(File.stat('/test-file2').mode).to eq(0100777)
76
76
  end
77
77
 
78
78
  it 'returns an array containing the file names' do
79
79
  file_names = %w[/test-file /test-file2]
80
- FileUtils.touch file_names
81
- expect(FileUtils.chmod(0777, file_names)).to eq(file_names)
80
+ described_class.touch file_names
81
+ expect(described_class.chmod(0777, file_names)).to eq(file_names)
82
82
  end
83
83
 
84
84
  it 'raises an error if an entry does not exist' do
85
- expect { FileUtils.chmod(0777, '/test-file') }.to raise_specific_error(Errno::ENOENT)
85
+ expect { described_class.chmod(0777, '/test-file') }.to raise_specific_error(Errno::ENOENT)
86
86
  end
87
87
 
88
88
  context 'when the named file is a symlink' do
89
89
  before :each do
90
- FileUtils.touch '/test-file'
91
- FileUtils.symlink '/test-file', '/test-link'
90
+ described_class.touch '/test-file'
91
+ described_class.symlink '/test-file', '/test-link'
92
92
  end
93
93
 
94
94
  context 'when File responds to lchmod' do
95
95
  it 'changes the mode on the link' do
96
- FileUtils.chmod(0777, '/test-link')
96
+ described_class.chmod(0777, '/test-link')
97
97
  expect(File.lstat('/test-link').mode).to eq(0100777)
98
98
  end
99
99
 
100
100
  it "doesn't change the mode of the link's target" do
101
101
  mode = File.lstat('/test-file').mode
102
- FileUtils.chmod(0777, '/test-link')
102
+ described_class.chmod(0777, '/test-link')
103
103
  expect(File.lstat('/test-file').mode).to eq(mode)
104
104
  end
105
105
  end
106
106
 
107
107
  context "when File doesn't respond to lchmod" do
108
108
  it 'does nothing' do
109
- allow_any_instance_of(FileUtils::Entry_).to \
109
+ allow_any_instance_of(described_class::Entry_).to \
110
110
  receive_messages(have_lchmod?: false)
111
111
  mode = File.lstat('/test-link').mode
112
- FileUtils.chmod(0777, '/test-link')
112
+ described_class.chmod(0777, '/test-link')
113
113
  expect(File.lstat('/test-link').mode).to eq(mode)
114
114
  end
115
115
  end
@@ -118,81 +118,81 @@ describe FileUtils do
118
118
 
119
119
  describe '.chmod_R' do
120
120
  before :each do
121
- FileUtils.touch '/test/test-file'
121
+ described_class.touch '/test/test-file'
122
122
  end
123
123
 
124
124
  it 'changes the permission bits on the named entry' do
125
- FileUtils.chmod_R(0777, '/test')
125
+ described_class.chmod_R(0777, '/test')
126
126
  expect(File.stat('/test').mode).to eq(0100777)
127
127
  end
128
128
 
129
129
  it 'changes the permission bits on any sub-directory of the named entry' do
130
- FileUtils.chmod_R(0777, '/')
130
+ described_class.chmod_R(0777, '/')
131
131
  expect(File.stat('/test').mode).to eq(0100777)
132
132
  end
133
133
 
134
134
  it 'changes the permission bits on any descendant file of the named entry' do
135
- FileUtils.chmod_R(0777, '/')
135
+ described_class.chmod_R(0777, '/')
136
136
  expect(File.stat('/test/test-file').mode).to eq(0100777)
137
137
  end
138
138
  end
139
139
 
140
140
  describe '.chown' do
141
141
  it 'changes owner on the named file' do
142
- FileUtils.chown(42, nil, '/test')
142
+ described_class.chown(42, nil, '/test')
143
143
  expect(File.stat('/test').uid).to eq(42)
144
144
  end
145
145
 
146
146
  it 'changes owner on the named files (in list)' do
147
- FileUtils.touch('/test-file')
148
- FileUtils.chown(42, nil, ['/test', '/test-file'])
147
+ described_class.touch('/test-file')
148
+ described_class.chown(42, nil, ['/test', '/test-file'])
149
149
  expect(File.stat('/test-file').uid).to eq(42)
150
150
  end
151
151
 
152
152
  it 'changes group on the named entry' do
153
- FileUtils.chown(nil, 42, '/test')
153
+ described_class.chown(nil, 42, '/test')
154
154
  expect(File.stat('/test').gid).to eq(42)
155
155
  end
156
156
 
157
157
  it 'changes group on the named entries in list' do
158
- FileUtils.touch('/test-file')
159
- FileUtils.chown(nil, 42, ['/test', '/test-file'])
158
+ described_class.touch('/test-file')
159
+ described_class.chown(nil, 42, ['/test', '/test-file'])
160
160
  expect(File.stat('/test-file').gid).to eq(42)
161
161
  end
162
162
 
163
163
  it "doesn't change user if user is nil" do
164
- FileUtils.chown(nil, 42, '/test')
164
+ described_class.chown(nil, 42, '/test')
165
165
  expect(File.stat('/test').uid).not_to be(42)
166
166
  end
167
167
 
168
168
  it "doesn't change group if group is nil" do
169
- FileUtils.chown(42, nil, '/test')
169
+ described_class.chown(42, nil, '/test')
170
170
  expect(File.stat('/test').gid).not_to be(42)
171
171
  end
172
172
 
173
173
  context 'when the name entry is a symlink' do
174
174
  before :each do
175
- FileUtils.touch '/test-file'
176
- FileUtils.symlink '/test-file', '/test-link'
175
+ described_class.touch '/test-file'
176
+ described_class.symlink '/test-file', '/test-link'
177
177
  end
178
178
 
179
179
  it 'changes the owner on the last target of the link chain' do
180
- FileUtils.chown(42, nil, '/test-link')
180
+ described_class.chown(42, nil, '/test-link')
181
181
  expect(File.stat('/test-file').uid).to eq(42)
182
182
  end
183
183
 
184
184
  it 'changes the group on the last target of the link chain' do
185
- FileUtils.chown(nil, 42, '/test-link')
185
+ described_class.chown(nil, 42, '/test-link')
186
186
  expect(File.stat('/test-file').gid).to eq(42)
187
187
  end
188
188
 
189
189
  it "doesn't change the owner of the symlink" do
190
- FileUtils.chown(42, nil, '/test-link')
190
+ described_class.chown(42, nil, '/test-link')
191
191
  expect(File.lstat('/test-link').uid).not_to be(42)
192
192
  end
193
193
 
194
194
  it "doesn't change the group of the symlink" do
195
- FileUtils.chown(nil, 42, '/test-link')
195
+ described_class.chown(nil, 42, '/test-link')
196
196
  expect(File.lstat('/test-link').gid).not_to be(42)
197
197
  end
198
198
  end
@@ -200,36 +200,36 @@ describe FileUtils do
200
200
 
201
201
  describe '.chown_R' do
202
202
  before :each do
203
- FileUtils.touch '/test/test-file'
203
+ described_class.touch '/test/test-file'
204
204
  end
205
205
 
206
206
  it 'changes the owner on the named entry' do
207
- FileUtils.chown_R(42, nil, '/test')
207
+ described_class.chown_R(42, nil, '/test')
208
208
  expect(File.stat('/test').uid).to eq(42)
209
209
  end
210
210
 
211
211
  it 'changes the group on the named entry' do
212
- FileUtils.chown_R(nil, 42, '/test')
212
+ described_class.chown_R(nil, 42, '/test')
213
213
  expect(File.stat('/test').gid).to eq(42)
214
214
  end
215
215
 
216
216
  it 'changes the owner on any sub-directory of the named entry' do
217
- FileUtils.chown_R(42, nil, '/')
217
+ described_class.chown_R(42, nil, '/')
218
218
  expect(File.stat('/test').uid).to eq(42)
219
219
  end
220
220
 
221
221
  it 'changes the group on any sub-directory of the named entry' do
222
- FileUtils.chown_R(nil, 42, '/')
222
+ described_class.chown_R(nil, 42, '/')
223
223
  expect(File.stat('/test').gid).to eq(42)
224
224
  end
225
225
 
226
226
  it 'changes the owner on any descendant file of the named entry' do
227
- FileUtils.chown_R(42, nil, '/')
227
+ described_class.chown_R(42, nil, '/')
228
228
  expect(File.stat('/test/test-file').uid).to eq(42)
229
229
  end
230
230
 
231
231
  it 'changes the group on any descendant file of the named entry' do
232
- FileUtils.chown_R(nil, 42, '/')
232
+ described_class.chown_R(nil, 42, '/')
233
233
  expect(File.stat('/test/test-file').gid).to eq(42)
234
234
  end
235
235
  end
@@ -243,14 +243,14 @@ describe FileUtils do
243
243
  File.open('/test-file', 'w') { |f| f.puts 'this is a test' }
244
244
  File.open('/test-file2', 'w') { |f| f.puts 'this is a test' }
245
245
 
246
- expect(FileUtils.compare_file('/test-file', '/test-file2')).to be true
246
+ expect(described_class.compare_file('/test-file', '/test-file2')).to be true
247
247
  end
248
248
 
249
249
  it 'returns false if the contents of a file A and a file B are not identical' do
250
250
  File.open('/test-file', 'w') { |f| f.puts 'this is a test' }
251
251
  File.open('/test-file2', 'w') { |f| f.puts 'this is not a test' }
252
252
 
253
- expect(FileUtils.compare_file('/test-file', '/test-file2')).to be false
253
+ expect(described_class.compare_file('/test-file', '/test-file2')).to be false
254
254
  end
255
255
  end
256
256
 
@@ -262,7 +262,7 @@ describe FileUtils do
262
262
  file1 = File.open('/test-file')
263
263
  file2 = File.open('/test-file2')
264
264
 
265
- expect(FileUtils.compare_stream(file1, file2)).to be true
265
+ expect(described_class.compare_stream(file1, file2)).to be true
266
266
  end
267
267
 
268
268
  it 'returns false if the contents of a stream A and stream B are not identical' do
@@ -272,7 +272,7 @@ describe FileUtils do
272
272
  file1 = File.open('/test-file')
273
273
  file2 = File.open('/test-file2')
274
274
 
275
- expect(FileUtils.compare_stream(file1, file2)).to be false
275
+ expect(described_class.compare_stream(file1, file2)).to be false
276
276
  end
277
277
  end
278
278
 
@@ -283,21 +283,21 @@ describe FileUtils do
283
283
  describe '.copy_entry' do
284
284
  it 'copies a file system entry +src+ to +dest+' do
285
285
  File.open('/test-file', 'w') { |f| f.puts 'test' }
286
- FileUtils.copy_entry('/test-file', '/test-copy')
286
+ described_class.copy_entry('/test-file', '/test-copy')
287
287
  expect(File.read('/test-copy')).to eq("test\n")
288
288
  end
289
289
 
290
290
  it 'preserves file types' do
291
- FileUtils.touch('/test-file')
292
- FileUtils.symlink('/test-file', '/test-link')
293
- FileUtils.copy_entry('/test-link', '/test-copy')
291
+ described_class.touch('/test-file')
292
+ described_class.symlink('/test-file', '/test-link')
293
+ described_class.copy_entry('/test-link', '/test-copy')
294
294
  expect(File.symlink?('/test-copy')).to be true
295
295
  end
296
296
 
297
297
  context 'when +src+ does not exist' do
298
298
  it 'raises an exception' do
299
299
  expect {
300
- FileUtils.copy_entry('/test-file', '/test-copy')
300
+ described_class.copy_entry('/test-file', '/test-copy')
301
301
  }.to raise_specific_error(RuntimeError)
302
302
  end
303
303
  end
@@ -306,11 +306,11 @@ describe FileUtils do
306
306
  let(:time) { Date.parse('2013-01-01') }
307
307
 
308
308
  before :each do
309
- FileUtils.touch('/test-file')
310
- FileUtils.chown(1042, 1042, '/test-file')
311
- FileUtils.chmod(0777, '/test-file')
309
+ described_class.touch('/test-file')
310
+ described_class.chown(1042, 1042, '/test-file')
311
+ described_class.chmod(0777, '/test-file')
312
312
  _fs.find('/test-file').mtime = time
313
- FileUtils.copy_entry('/test-file', '/test-copy', true)
313
+ described_class.copy_entry('/test-file', '/test-copy', true)
314
314
  end
315
315
 
316
316
  it 'preserves owner' do
@@ -333,24 +333,24 @@ describe FileUtils do
333
333
  context 'when +dest+ already exists' do
334
334
  it 'overwrite it' do
335
335
  File.open('/test-file', 'w') { |f| f.puts 'test' }
336
- FileUtils.touch('/test-copy')
337
- FileUtils.copy_entry('/test-file', '/test-copy')
336
+ described_class.touch('/test-copy')
337
+ described_class.copy_entry('/test-file', '/test-copy')
338
338
  expect(File.read('/test-copy')).to eq("test\n")
339
339
  end
340
340
  end
341
341
 
342
342
  context 'when +remove_destination+ is true' do
343
343
  it 'removes each destination file before copy' do
344
- FileUtils.touch(['/test-file', '/test-copy'])
344
+ described_class.touch(['/test-file', '/test-copy'])
345
345
  expect(File).to receive(:unlink).with('/test-copy')
346
- FileUtils.copy_entry('/test-file', '/test-copy', false, false, true)
346
+ described_class.copy_entry('/test-file', '/test-copy', false, false, true)
347
347
  end
348
348
  end
349
349
 
350
350
  context 'when +src+ is a directory' do
351
351
  it 'copies its contents recursively' do
352
- FileUtils.mkdir_p('/test-dir/test-sub-dir')
353
- FileUtils.copy_entry('/test-dir', '/test-copy')
352
+ described_class.mkdir_p('/test-dir/test-sub-dir')
353
+ described_class.copy_entry('/test-dir', '/test-copy')
354
354
  expect(Dir.exist?('/test-copy/test-sub-dir')).to be true
355
355
  end
356
356
  end
@@ -359,7 +359,7 @@ describe FileUtils do
359
359
  describe '.copy_file' do
360
360
  it 'copies file contents of src to dest' do
361
361
  File.open('/test-file', 'w') { |f| f.puts 'test' }
362
- FileUtils.copy_file('/test-file', '/test-file2')
362
+ described_class.copy_file('/test-file', '/test-file2')
363
363
  expect(File.read('/test-file2')).to eq("test\n")
364
364
  end
365
365
  end
@@ -374,22 +374,22 @@ describe FileUtils do
374
374
  end
375
375
 
376
376
  it 'copies a file content +src+ to +dest+' do
377
- FileUtils.cp('/test-file', '/copy-file')
377
+ described_class.cp('/test-file', '/copy-file')
378
378
  expect(File.read('/copy-file')).to eq("test\n")
379
379
  end
380
380
 
381
381
  context 'when +src+ and +dest+ are the same file' do
382
382
  it 'raises an error' do
383
383
  expect {
384
- FileUtils.cp('/test-file', '/test-file')
384
+ described_class.cp('/test-file', '/test-file')
385
385
  }.to raise_specific_error(ArgumentError)
386
386
  end
387
387
  end
388
388
 
389
389
  context 'when +dest+ is a directory' do
390
390
  it 'copies +src+ to +dest/src+' do
391
- FileUtils.mkdir('/dest')
392
- FileUtils.cp('/test-file', '/dest/copy-file')
391
+ described_class.mkdir('/dest')
392
+ described_class.cp('/test-file', '/dest/copy-file')
393
393
  expect(File.read('/dest/copy-file')).to eq("test\n")
394
394
  end
395
395
  end
@@ -397,9 +397,9 @@ describe FileUtils do
397
397
  context 'when src is a list of files' do
398
398
  context 'when +dest+ is not a directory' do
399
399
  it 'raises an error' do
400
- FileUtils.touch(['/dest', '/test-file2'])
400
+ described_class.touch(['/dest', '/test-file2'])
401
401
  expect {
402
- FileUtils.cp(['/test-file', '/test-file2'], '/dest')
402
+ described_class.cp(['/test-file', '/test-file2'], '/dest')
403
403
  }.to raise_specific_error(Errno::ENOTDIR)
404
404
  end
405
405
  end
@@ -410,36 +410,36 @@ describe FileUtils do
410
410
  it 'copies +src+ to +dest+' do
411
411
  File.open('/test-file', 'w') { |f| f.puts 'test' }
412
412
 
413
- FileUtils.cp_r('/test-file', '/copy-file')
413
+ described_class.cp_r('/test-file', '/copy-file')
414
414
  expect(File.read('/copy-file')).to eq("test\n")
415
415
  end
416
416
 
417
417
  context 'when +src+ is a directory' do
418
418
  it 'copies all its contents recursively' do
419
- FileUtils.mkdir('/test/dir')
420
- FileUtils.touch('/test/dir/file')
419
+ described_class.mkdir('/test/dir')
420
+ described_class.touch('/test/dir/file')
421
421
 
422
- FileUtils.cp_r('/test', '/dest')
422
+ described_class.cp_r('/test', '/dest')
423
423
  expect(File.exist?('/dest/dir/file')).to be true
424
424
  end
425
425
  end
426
426
 
427
427
  context 'when +dest+ is a directory' do
428
428
  it 'copies +src+ to +dest/src+' do
429
- FileUtils.mkdir(['/test/dir', '/dest'])
430
- FileUtils.touch('/test/dir/file')
429
+ described_class.mkdir(['/test/dir', '/dest'])
430
+ described_class.touch('/test/dir/file')
431
431
 
432
- FileUtils.cp_r('/test', '/dest')
432
+ described_class.cp_r('/test', '/dest')
433
433
  expect(File.exist?('/dest/test/dir/file')).to be true
434
434
  end
435
435
  end
436
436
 
437
437
  context 'when +src+ is a list of files' do
438
438
  it 'copies each of them in +dest+' do
439
- FileUtils.mkdir(['/test/dir', '/test/dir2', '/dest'])
440
- FileUtils.touch(['/test/dir/file', '/test/dir2/file'])
439
+ described_class.mkdir(['/test/dir', '/test/dir2', '/dest'])
440
+ described_class.touch(['/test/dir/file', '/test/dir2/file'])
441
441
 
442
- FileUtils.cp_r(['/test/dir', '/test/dir2'], '/dest')
442
+ described_class.cp_r(['/test/dir', '/test/dir2'], '/dest')
443
443
  expect(File.exist?('/dest/dir2/file')).to be true
444
444
  end
445
445
  end
@@ -459,21 +459,21 @@ describe FileUtils do
459
459
  end
460
460
 
461
461
  it 'copies +src+ to +dest+' do
462
- FileUtils.install('/test-file', '/test-file2')
462
+ described_class.install('/test-file', '/test-file2')
463
463
  expect(File.read('/test-file2')).to eq("test\n")
464
464
  end
465
465
 
466
466
  context 'when +:mode+ is set' do
467
467
  it 'changes the permission mode to +mode+' do
468
468
  expect(File).to receive(:chmod).with(0777, '/test-file2')
469
- FileUtils.install('/test-file', '/test-file2', mode: 0777)
469
+ described_class.install('/test-file', '/test-file2', mode: 0777)
470
470
  end
471
471
  end
472
472
 
473
473
  context 'when +src+ and +dest+ are the same file' do
474
474
  it 'raises an exception' do
475
475
  expect {
476
- FileUtils.install('/test-file', '/test-file')
476
+ described_class.install('/test-file', '/test-file')
477
477
  }.to raise_exception(ArgumentError)
478
478
  end
479
479
  end
@@ -481,13 +481,13 @@ describe FileUtils do
481
481
  context 'when +dest+ already exists' do
482
482
  it 'removes destination before copy' do
483
483
  expect(File).to receive(:unlink).with('/test-file2')
484
- FileUtils.install('/test-file', '/test-file2')
484
+ described_class.install('/test-file', '/test-file2')
485
485
  end
486
486
 
487
487
  context 'and +dest+ is a directory' do
488
488
  it 'installs +src+ in dest/src' do
489
- FileUtils.mkdir('/test-dir')
490
- FileUtils.install('/test-file', '/test-dir')
489
+ described_class.mkdir('/test-dir')
490
+ described_class.install('/test-file', '/test-dir')
491
491
  expect(File.read('/test-dir/test-file')).to eq("test\n")
492
492
  end
493
493
  end
@@ -504,36 +504,36 @@ describe FileUtils do
504
504
  end
505
505
 
506
506
  it 'creates a hard link +dest+ which points to +src+' do
507
- FileUtils.ln('/test-file', '/test-file2')
507
+ described_class.ln('/test-file', '/test-file2')
508
508
  expect(File.read('/test-file2')).to eq(File.read('/test-file'))
509
509
  end
510
510
 
511
511
  it 'creates a hard link, not a symlink' do
512
- FileUtils.ln('/test-file', '/test-file2')
512
+ described_class.ln('/test-file', '/test-file2')
513
513
  expect(File.symlink?('/test-file2')).to be false
514
514
  end
515
515
 
516
516
  context 'when +dest+ already exists' do
517
517
  context 'and is a directory' do
518
518
  it 'creates a link dest/src' do
519
- FileUtils.mkdir('/test-dir')
520
- FileUtils.ln('/test-file', '/test-dir')
519
+ described_class.mkdir('/test-dir')
520
+ described_class.ln('/test-file', '/test-dir')
521
521
  expect(File.read('/test-dir/test-file')).to eq(File.read('/test-file'))
522
522
  end
523
523
  end
524
524
 
525
525
  context 'and it is not a directory' do
526
526
  it 'raises an exception' do
527
- FileUtils.touch('/test-file2')
527
+ described_class.touch('/test-file2')
528
528
  expect {
529
- FileUtils.ln('/test-file', '/test-file2')
529
+ described_class.ln('/test-file', '/test-file2')
530
530
  }.to raise_specific_error(SystemCallError)
531
531
  end
532
532
 
533
533
  context 'and +:force+ is set' do
534
534
  it 'overwrites +dest+' do
535
- FileUtils.touch('/test-file2')
536
- FileUtils.ln('/test-file', '/test-file2', force: true)
535
+ described_class.touch('/test-file2')
536
+ described_class.ln('/test-file', '/test-file2', force: true)
537
537
  expect(File.read('/test-file2')).to eq(File.read('/test-file'))
538
538
  end
539
539
  end
@@ -542,16 +542,16 @@ describe FileUtils do
542
542
 
543
543
  context 'when passing a list of paths' do
544
544
  it 'creates a link for each path in +destdir+' do
545
- FileUtils.touch('/test-file2')
546
- FileUtils.mkdir('/test-dir')
547
- FileUtils.ln(['/test-file', '/test-file2'], '/test-dir')
545
+ described_class.touch('/test-file2')
546
+ described_class.mkdir('/test-dir')
547
+ described_class.ln(['/test-file', '/test-file2'], '/test-dir')
548
548
  end
549
549
 
550
550
  context 'and +destdir+ is not a directory' do
551
551
  it 'raises an exception' do
552
- FileUtils.touch(['/test-file2', '/not-a-dir'])
552
+ described_class.touch(['/test-file2', '/not-a-dir'])
553
553
  expect {
554
- FileUtils.ln(['/test-file', '/test-file2'], '/not-a-dir')
554
+ described_class.ln(['/test-file', '/test-file2'], '/not-a-dir')
555
555
  }.to raise_specific_error(Errno::ENOTDIR)
556
556
  end
557
557
  end
@@ -561,24 +561,24 @@ describe FileUtils do
561
561
  describe '.ln_s' do
562
562
  before :each do
563
563
  File.open('/test-file', 'w') { |f| f.puts 'test' }
564
- FileUtils.touch('/not-a-dir')
565
- FileUtils.mkdir('/test-dir')
564
+ described_class.touch('/not-a-dir')
565
+ described_class.mkdir('/test-dir')
566
566
  end
567
567
 
568
568
  it 'creates a symbolic link +new+' do
569
- FileUtils.ln_s('/test-file', '/test-link')
569
+ described_class.ln_s('/test-file', '/test-link')
570
570
  expect(File.symlink?('/test-link')).to be true
571
571
  end
572
572
 
573
573
  it 'creates a symbolic link which points to +old+' do
574
- FileUtils.ln_s('/test-file', '/test-link')
574
+ described_class.ln_s('/test-file', '/test-link')
575
575
  expect(File.read('/test-link')).to eq(File.read('/test-file'))
576
576
  end
577
577
 
578
578
  context 'when +new+ already exists' do
579
579
  context 'and it is a directory' do
580
580
  it 'creates a symbolic link +new/old+' do
581
- FileUtils.ln_s('/test-file', '/test-dir')
581
+ described_class.ln_s('/test-file', '/test-dir')
582
582
  expect(File.symlink?('/test-dir/test-file')).to be true
583
583
  end
584
584
  end
@@ -586,13 +586,13 @@ describe FileUtils do
586
586
  context 'and it is not a directory' do
587
587
  it 'raises an exeption' do
588
588
  expect {
589
- FileUtils.ln_s('/test-file', '/not-a-dir')
589
+ described_class.ln_s('/test-file', '/not-a-dir')
590
590
  }.to raise_specific_error(Errno::EEXIST)
591
591
  end
592
592
 
593
593
  context 'and +:force+ is set' do
594
594
  it 'overwrites +new+' do
595
- FileUtils.ln_s('/test-file', '/not-a-dir', force: true)
595
+ described_class.ln_s('/test-file', '/not-a-dir', force: true)
596
596
  expect(File.symlink?('/not-a-dir')).to be true
597
597
  end
598
598
  end
@@ -605,19 +605,19 @@ describe FileUtils do
605
605
  end
606
606
 
607
607
  it 'creates several symbolic links in +destdir+' do
608
- FileUtils.ln_s(['/test-file', '/test-file2'], '/test-dir')
608
+ described_class.ln_s(['/test-file', '/test-file2'], '/test-dir')
609
609
  expect(File.exist?('/test-dir/test-file2')).to be true
610
610
  end
611
611
 
612
612
  it 'creates symbolic links pointing to each item in the list' do
613
- FileUtils.ln_s(['/test-file', '/test-file2'], '/test-dir')
613
+ described_class.ln_s(['/test-file', '/test-file2'], '/test-dir')
614
614
  expect(File.read('/test-dir/test-file2')).to eq(File.read('/test-file2'))
615
615
  end
616
616
 
617
617
  context 'when +destdir+ is not a directory' do
618
618
  it 'raises an error' do
619
619
  expect {
620
- FileUtils.ln_s(['/test-file', '/test-file2'], '/not-a-dir')
620
+ described_class.ln_s(['/test-file', '/test-file2'], '/not-a-dir')
621
621
  }.to raise_specific_error(Errno::ENOTDIR)
622
622
  end
623
623
  end
@@ -628,7 +628,7 @@ describe FileUtils do
628
628
  it 'calls ln_s with +:force+ set to true' do
629
629
  File.open('/test-file', 'w') { |f| f.puts 'test' }
630
630
  File.open('/test-file2', 'w') { |f| f.puts 'test2' }
631
- FileUtils.ln_sf('/test-file', '/test-file2')
631
+ described_class.ln_sf('/test-file', '/test-file2')
632
632
  expect(File.read('/test-file2')).to eq(File.read('/test-file'))
633
633
  end
634
634
  end
@@ -639,40 +639,78 @@ describe FileUtils do
639
639
 
640
640
  describe '.mkdir' do
641
641
  it 'creates one directory' do
642
- FileUtils.mkdir('/test-dir')
642
+ described_class.mkdir('/test-dir')
643
643
  expect(File.directory?('/test-dir')).to be true
644
644
  end
645
645
 
646
646
  context 'when passing a list of paths' do
647
647
  it 'creates several directories' do
648
- FileUtils.mkdir(['/test-dir', '/test-dir2'])
648
+ described_class.mkdir(['/test-dir', '/test-dir2'])
649
649
  expect(File.directory?('/test-dir2')).to be true
650
650
  end
651
651
  end
652
+
653
+ context 'when passing options' do
654
+ context 'when passing mode parameter' do
655
+ it 'creates directory with specified permissions' do
656
+ described_class.mkdir('/test-dir', mode: 0654)
657
+ expect(File.exist?('/test-dir')).to be true
658
+ expect(File.stat('/test-dir').mode).to eq(0100654)
659
+ end
660
+ end
661
+
662
+ context 'when passing noop parameter' do
663
+ it 'does not create any directories' do
664
+ described_class.mkdir(['/test-dir', '/another-dir'], noop: true)
665
+ expect(File.directory?('/test-dir')).to be false
666
+ expect(File.directory?('/another-dir')).to be false
667
+ end
668
+ end
669
+ end
670
+
671
+
652
672
  end
653
673
 
654
674
  describe '.mkdir_p' do
655
675
  it 'creates a directory' do
656
- FileUtils.mkdir_p('/test-dir')
676
+ described_class.mkdir_p('/test-dir')
657
677
  expect(File.directory?('/test-dir')).to be true
658
678
  end
659
679
 
660
680
  it 'creates all the parent directories' do
661
- FileUtils.mkdir_p('/path/to/some/test-dir')
681
+ described_class.mkdir_p('/path/to/some/test-dir')
662
682
  expect(File.directory?('/path/to/some')).to be true
663
683
  end
664
684
 
665
685
  context 'when passing a list of paths' do
666
686
  it 'creates each directory' do
667
- FileUtils.mkdir_p(['/test-dir', '/test-dir'])
687
+ described_class.mkdir_p(['/test-dir', '/test-dir'])
668
688
  expect(File.directory?('/test-dir')).to be true
669
689
  end
670
690
 
671
691
  it "creates each directory's parents" do
672
- FileUtils.mkdir_p(['/test-dir', '/path/to/some/test-dir'])
692
+ described_class.mkdir_p(['/test-dir', '/path/to/some/test-dir'])
673
693
  expect(File.directory?('/path/to/some')).to be true
674
694
  end
675
695
  end
696
+
697
+ context 'when passing options' do
698
+ context 'when passing mode parameter' do
699
+ it 'creates directory with specified permissions' do
700
+ described_class.mkdir_p('/test-dir', mode: 0654)
701
+ expect(File.exist?('/test-dir')).to be true
702
+ expect(File.stat('/test-dir').mode).to eq(0100654)
703
+ end
704
+ end
705
+
706
+ context 'when passing noop parameter' do
707
+ it 'does not create any directories' do
708
+ described_class.mkdir_p(['/test-dir', '/another-dir'], noop: true)
709
+ expect(File.directory?('/test-dir')).to be false
710
+ expect(File.directory?('/another-dir')).to be false
711
+ end
712
+ end
713
+ end
676
714
  end
677
715
 
678
716
  describe '.mkpath' do
@@ -685,23 +723,23 @@ describe FileUtils do
685
723
 
686
724
  describe '.mv' do
687
725
  it 'moves +src+ to +dest+' do
688
- FileUtils.touch('/test-file')
689
- FileUtils.mv('/test-file', '/test-file2')
726
+ described_class.touch('/test-file')
727
+ described_class.mv('/test-file', '/test-file2')
690
728
  expect(File.exist?('/test-file2')).to be true
691
729
  end
692
730
 
693
731
  it 'removes +src+' do
694
- FileUtils.touch('/test-file')
695
- FileUtils.mv('/test-file', '/test-file2')
732
+ described_class.touch('/test-file')
733
+ described_class.mv('/test-file', '/test-file2')
696
734
  expect(File.exist?('/test-file')).to be false
697
735
  end
698
736
 
699
737
  context 'when +dest+ already exists' do
700
738
  context 'and is a directory' do
701
739
  it 'moves +src+ to dest/src' do
702
- FileUtils.touch('/test-file')
703
- FileUtils.mkdir('/test-dir')
704
- FileUtils.mv('/test-file', '/test-dir')
740
+ described_class.touch('/test-file')
741
+ described_class.mkdir('/test-dir')
742
+ described_class.mv('/test-file', '/test-dir')
705
743
  expect(File.exist?('/test-dir/test-file')).to be true
706
744
  end
707
745
  end
@@ -709,8 +747,8 @@ describe FileUtils do
709
747
  context 'and +dest+ is not a directory' do
710
748
  it 'it overwrites +dest+' do
711
749
  File.open('/test-file', 'w') { |f| f.puts 'test' }
712
- FileUtils.touch('/test-file2')
713
- FileUtils.mv('/test-file', '/test-file2')
750
+ described_class.touch('/test-file2')
751
+ described_class.mv('/test-file', '/test-file2')
714
752
  expect(File.read('/test-file2')).to eq("test\n")
715
753
  end
716
754
  end
@@ -719,8 +757,8 @@ describe FileUtils do
719
757
 
720
758
  describe '.pwd' do
721
759
  it 'returns the name of the current directory' do
722
- FileUtils.cd '/test'
723
- expect(FileUtils.pwd).to eq('/test')
760
+ described_class.cd '/test'
761
+ expect(described_class.pwd).to eq('/test')
724
762
  end
725
763
  end
726
764
 
@@ -730,35 +768,35 @@ describe FileUtils do
730
768
 
731
769
  describe '.remove_dir' do
732
770
  it 'removes the given directory +dir+' do
733
- FileUtils.mkdir('/test-dir')
734
- FileUtils.remove_dir('/test-dir')
771
+ described_class.mkdir('/test-dir')
772
+ described_class.remove_dir('/test-dir')
735
773
  expect(File.exist?('/test-dir')).to be false
736
774
  end
737
775
 
738
776
  it 'removes the contents of the given directory +dir+' do
739
- FileUtils.mkdir_p('/test-dir/test-sub-dir')
740
- FileUtils.remove_dir('/test-dir')
777
+ described_class.mkdir_p('/test-dir/test-sub-dir')
778
+ described_class.remove_dir('/test-dir')
741
779
  expect(File.exist?('/test-dir/test-sub-dir')).to be false
742
780
  end
743
781
 
744
782
  context 'when +force+ is set' do
745
783
  it 'ignores standard errors' do
746
- expect { FileUtils.remove_dir('/test-dir', true) }.not_to raise_error
784
+ expect { described_class.remove_dir('/test-dir', true) }.not_to raise_error
747
785
  end
748
786
  end
749
787
  end
750
788
 
751
789
  describe '.remove_entry' do
752
790
  it 'removes a file system entry +path+' do
753
- FileUtils.touch('/test-file')
754
- FileUtils.remove_entry('/test-file')
791
+ described_class.touch('/test-file')
792
+ described_class.remove_entry('/test-file')
755
793
  expect(File.exist?('/test-file')).to be false
756
794
  end
757
795
 
758
796
  context 'when +path+ is a directory' do
759
797
  it 'removes it recursively' do
760
- FileUtils.mkdir_p('/test-dir/test-sub-dir')
761
- FileUtils.remove_entry('/test-dir')
798
+ described_class.mkdir_p('/test-dir/test-sub-dir')
799
+ described_class.remove_entry('/test-dir')
762
800
  expect(Dir.exist?('/test-dir')).to be false
763
801
  end
764
802
  end
@@ -766,35 +804,35 @@ describe FileUtils do
766
804
 
767
805
  describe '.remove_entry_secure' do
768
806
  before :each do
769
- FileUtils.mkdir_p('/test-dir/test-sub-dir')
807
+ described_class.mkdir_p('/test-dir/test-sub-dir')
770
808
  end
771
809
 
772
810
  it 'removes a file system entry +path+' do
773
- FileUtils.chmod(0755, '/')
774
- FileUtils.remove_entry_secure('/test-dir')
811
+ described_class.chmod(0755, '/')
812
+ described_class.remove_entry_secure('/test-dir')
775
813
  expect(Dir.exist?('/test-dir')).to be false
776
814
  end
777
815
 
778
816
  context 'when +path+ is a directory' do
779
817
  it 'removes it recursively' do
780
- FileUtils.chmod(0755, '/')
781
- FileUtils.remove_entry_secure('/test-dir')
818
+ described_class.chmod(0755, '/')
819
+ described_class.remove_entry_secure('/test-dir')
782
820
  expect(Dir.exist?('/test-dir/test-sub-dir')).to be false
783
821
  end
784
822
 
785
823
  context 'and is word writable' do
786
824
  it 'calls chown(2) on it' do
787
- FileUtils.chmod(01777, '/')
825
+ described_class.chmod(01777, '/')
788
826
  directory = _fs.find('/test-dir')
789
827
  expect(directory).to receive(:uid=).at_least(:once)
790
- FileUtils.remove_entry_secure('/test-dir')
828
+ described_class.remove_entry_secure('/test-dir')
791
829
  end
792
830
 
793
831
  it 'calls chmod(2) on all sub directories' do
794
- FileUtils.chmod(01777, '/')
832
+ described_class.chmod(01777, '/')
795
833
  directory = _fs.find('/test-dir')
796
834
  expect(directory).to receive(:mode=).at_least(:once)
797
- FileUtils.remove_entry_secure('/test-dir')
835
+ described_class.remove_entry_secure('/test-dir')
798
836
  end
799
837
  end
800
838
  end
@@ -802,41 +840,41 @@ describe FileUtils do
802
840
 
803
841
  describe '.remove_file' do
804
842
  it 'removes a file path' do
805
- FileUtils.touch('/test-file')
806
- FileUtils.remove_file('/test-file')
843
+ described_class.touch('/test-file')
844
+ described_class.remove_file('/test-file')
807
845
  expect(File.exist?('/test-file')).to be false
808
846
  end
809
847
 
810
848
  context 'when +force+ is set' do
811
849
  it 'ignores StandardError' do
812
- expect { FileUtils.remove_file('/no-file', true) }.not_to raise_error
850
+ expect { described_class.remove_file('/no-file', true) }.not_to raise_error
813
851
  end
814
852
  end
815
853
  end
816
854
 
817
855
  describe '.rm' do
818
856
  it 'removes the specified file' do
819
- FileUtils.touch('/test-file')
820
- FileUtils.rm('/test-file')
857
+ described_class.touch('/test-file')
858
+ described_class.rm('/test-file')
821
859
  expect(File.exist?('/test-file')).to be false
822
860
  end
823
861
 
824
862
  it 'removes files specified in list' do
825
- FileUtils.touch(['/test-file', '/test-file2'])
826
- FileUtils.rm(['/test-file', '/test-file2'])
863
+ described_class.touch(['/test-file', '/test-file2'])
864
+ described_class.rm(['/test-file', '/test-file2'])
827
865
  expect(File.exist?('/test-file2')).to be false
828
866
  end
829
867
 
830
868
  it 'cannot remove a directory' do
831
- FileUtils.mkdir('/test-dir')
832
- expect { FileUtils.rm('/test-dir') }.to raise_specific_error(Errno::EPERM)
869
+ described_class.mkdir('/test-dir')
870
+ expect { described_class.rm('/test-dir') }.to raise_specific_error(Errno::EPERM)
833
871
  end
834
872
 
835
873
  context 'when +:force+ is set' do
836
874
  it 'ignores StandardError' do
837
- FileUtils.mkdir('/test-dir')
875
+ described_class.mkdir('/test-dir')
838
876
  expect {
839
- FileUtils.rm('/test-dir', force: true)
877
+ described_class.rm('/test-dir', force: true)
840
878
  }.not_to raise_error
841
879
  end
842
880
  end
@@ -844,26 +882,26 @@ describe FileUtils do
844
882
 
845
883
  describe '.rm_f' do
846
884
  it 'calls rm with +:force+ set to true' do
847
- expect(FileUtils).to receive(:rm).with('test', force: true)
848
- FileUtils.rm_f('test')
885
+ expect(described_class).to receive(:rm).with('test', force: true)
886
+ described_class.rm_f('test')
849
887
  end
850
888
  end
851
889
 
852
890
  describe '.rm_r' do
853
891
  before :each do
854
- FileUtils.touch(['/test-file', '/test-file2'])
892
+ described_class.touch(['/test-file', '/test-file2'])
855
893
  end
856
894
 
857
895
  it 'removes a list of files' do
858
- FileUtils.rm_r(['/test-file', '/test-file2'])
896
+ described_class.rm_r(['/test-file', '/test-file2'])
859
897
  expect(File.exist?('/test-file2')).to be false
860
898
  end
861
899
 
862
900
  context 'when an item of the list is a directory' do
863
901
  it 'removes all its contents recursively' do
864
- FileUtils.mkdir('/test-dir')
865
- FileUtils.touch('/test-dir/test-file')
866
- FileUtils.rm_r(['/test-file', '/test-file2', '/test-dir'])
902
+ described_class.mkdir('/test-dir')
903
+ described_class.touch('/test-dir/test-file')
904
+ described_class.rm_r(['/test-file', '/test-file2', '/test-dir'])
867
905
  expect(File.exist?('/test-dir/test-file')).to be false
868
906
  end
869
907
  end
@@ -871,7 +909,7 @@ describe FileUtils do
871
909
  context 'when +:force+ is set' do
872
910
  it 'ignores StandardError' do
873
911
  expect {
874
- FileUtils.rm_r(['/no-file'], force: true)
912
+ described_class.rm_r(['/no-file'], force: true)
875
913
  }.not_to raise_error
876
914
  end
877
915
  end
@@ -879,37 +917,37 @@ describe FileUtils do
879
917
 
880
918
  describe '.rm_rf' do
881
919
  it 'calls rm with +:force+ set to true' do
882
- expect(FileUtils).to receive(:rm_r).with('test', force: true)
883
- FileUtils.rm_rf('test')
920
+ expect(described_class).to receive(:rm_r).with('test', force: true)
921
+ described_class.rm_rf('test')
884
922
  end
885
923
  end
886
924
 
887
925
  describe '.rmdir' do
888
926
  it 'Removes a directory' do
889
- FileUtils.mkdir('/test-dir')
890
- FileUtils.rmdir('/test-dir')
927
+ described_class.mkdir('/test-dir')
928
+ described_class.rmdir('/test-dir')
891
929
  expect(Dir.exist?('/test-dir')).to be false
892
930
  end
893
931
 
894
932
  it 'Removes a list of directories' do
895
- FileUtils.mkdir('/test-dir')
896
- FileUtils.mkdir('/test-dir2')
897
- FileUtils.rmdir(['/test-dir', '/test-dir2'])
933
+ described_class.mkdir('/test-dir')
934
+ described_class.mkdir('/test-dir2')
935
+ described_class.rmdir(['/test-dir', '/test-dir2'])
898
936
  expect(Dir.exist?('/test-dir2')).to be false
899
937
  end
900
938
 
901
939
  context 'when a directory is not empty' do
902
940
  before :each do
903
- FileUtils.mkdir('/test-dir')
904
- FileUtils.touch('/test-dir/test-file')
941
+ described_class.mkdir('/test-dir')
942
+ described_class.touch('/test-dir/test-file')
905
943
  end
906
944
 
907
945
  it 'ignores errors' do
908
- expect { FileUtils.rmdir('/test-dir') }.not_to raise_error
946
+ expect { described_class.rmdir('/test-dir') }.not_to raise_error
909
947
  end
910
948
 
911
949
  it "doesn't remove the directory" do
912
- FileUtils.rmdir('/test-dir')
950
+ described_class.rmdir('/test-dir')
913
951
  expect(Dir.exist?('/test-dir')).to be true
914
952
  end
915
953
  end
@@ -929,36 +967,36 @@ describe FileUtils do
929
967
 
930
968
  describe '.touch' do
931
969
  it "creates a file if it doesn't exist" do
932
- FileUtils.touch('/test-file')
970
+ described_class.touch('/test-file')
933
971
  expect(_fs.find('/test-file')).not_to be_nil
934
972
  end
935
973
 
936
974
  it "creates a list of files if they don't exist" do
937
- FileUtils.touch(['/test-file', '/test-file2'])
975
+ described_class.touch(['/test-file', '/test-file2'])
938
976
  expect(_fs.find('/test-file2')).not_to be_nil
939
977
  end
940
978
  end
941
979
 
942
980
  describe '.uptodate?' do
943
981
  before :each do
944
- FileUtils.touch('/test-file')
945
- FileUtils.touch('/old-file')
982
+ described_class.touch('/test-file')
983
+ described_class.touch('/old-file')
946
984
  _fs.find!('/old-file').mtime = Time.now - 3600
947
985
  end
948
986
 
949
987
  it 'returns true if +newer+ is newer than all +old_list+' do
950
- expect(FileUtils.uptodate?('/test-file', ['/old-file'])).to be true
988
+ expect(described_class.uptodate?('/test-file', ['/old-file'])).to be true
951
989
  end
952
990
 
953
991
  context 'when +newer+ does not exist' do
954
992
  it 'consideres it as older' do
955
- expect(FileUtils.uptodate?('/no-file', ['/old-file'])).to be false
993
+ expect(described_class.uptodate?('/no-file', ['/old-file'])).to be false
956
994
  end
957
995
  end
958
996
 
959
997
  context 'when a item of +old_list+ does not exist' do
960
998
  it 'consideres it as older than +newer+' do
961
- uptodate = FileUtils.uptodate?('/test-file', ['/old-file', '/no-file'])
999
+ uptodate = described_class.uptodate?('/test-file', ['/old-file', '/no-file'])
962
1000
  expect(uptodate).to be true
963
1001
  end
964
1002
  end