file-find 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: file-find
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Berger
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
@@ -35,36 +35,50 @@ cert_chain:
35
35
  ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
36
36
  WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
37
37
  -----END CERTIFICATE-----
38
- date: 2018-12-26 00:00:00.000000000 Z
38
+ date:
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: sys-admin
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ">="
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 1.6.0
46
+ version: '1.7'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ">="
51
+ - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 1.6.0
53
+ version: '1.7'
54
54
  - !ruby/object:Gem::Dependency
55
- name: test-unit
55
+ name: rspec
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ">="
58
+ - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '0'
60
+ version: '3.9'
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - ">="
65
+ - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0'
67
+ version: '3.9'
68
+ - !ruby/object:Gem::Dependency
69
+ name: fakefs
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.3'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.3'
68
82
  - !ruby/object:Gem::Dependency
69
83
  name: rake
70
84
  requirement: !ruby/object:Gem::Requirement
@@ -87,29 +101,34 @@ description: |2
87
101
  email: djberg96@gmail.com
88
102
  executables: []
89
103
  extensions: []
90
- extra_rdoc_files:
91
- - README
92
- - CHANGES
93
- - MANIFEST
104
+ extra_rdoc_files: []
94
105
  files:
95
- - CHANGES
96
- - test
97
- - test/test_file_find.rb
98
- - README
99
- - Rakefile
100
- - MANIFEST
106
+ - LICENSE
101
107
  - file-find.gemspec
108
+ - spec
109
+ - spec/file_find_spec.rb
110
+ - README.md
111
+ - Rakefile
112
+ - MANIFEST.md
113
+ - certs
114
+ - certs/djberg96_pub.pem
102
115
  - lib
103
116
  - lib/file-find.rb
104
117
  - lib/file
105
118
  - lib/file/find.rb
106
- - certs
107
- - certs/djberg96_pub.pem
119
+ - Gemfile
120
+ - CHANGES.md
108
121
  homepage: http://github.com/djberg96/file-find
109
122
  licenses:
110
123
  - Apache-2.0
111
- metadata: {}
112
- post_install_message:
124
+ metadata:
125
+ homepage_uri: https://github.com/djberg96/file-find
126
+ bug_tracker_uri: https://github.com/djberg96/file-find/issues
127
+ changelog_uri: https://github.com/djberg96/file-find/blob/master/CHANGES.md
128
+ documentation_uri: https://github.com/djberg96/file-find/wiki
129
+ source_code_uri: https://github.com/djberg96/file-find
130
+ wiki_uri: https://github.com/djberg96/file-find/wiki
131
+ post_install_message:
113
132
  rdoc_options: []
114
133
  require_paths:
115
134
  - lib
@@ -124,10 +143,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
143
  - !ruby/object:Gem::Version
125
144
  version: '0'
126
145
  requirements: []
127
- rubyforge_project:
128
- rubygems_version: 2.7.6
129
- signing_key:
146
+ rubygems_version: 3.0.3
147
+ signing_key:
130
148
  specification_version: 4
131
149
  summary: A better way to find files
132
150
  test_files:
133
- - test/test_file_find.rb
151
+ - spec/file_find_spec.rb
metadata.gz.sig CHANGED
Binary file
data/README DELETED
@@ -1,96 +0,0 @@
1
- = Description
2
- This is a drop-in replacement for the find module currently in the standard
3
- library. It is modeled on a typical 'find' command found on most Unix systems.
4
-
5
- = Installation
6
-
7
- gem install file-find
8
-
9
- = Synopsis
10
- require 'file/find'
11
-
12
- rule = File::Find.new(
13
- :pattern => "*.rb",
14
- :follow => false,
15
- :path => ['/usr/local/lib', '/opt/local/lib']
16
- )
17
-
18
- rule.find{ |f|
19
- puts f
20
- }
21
-
22
- = Rationale
23
- The current find module in the standard library is inadequate. It is, quite
24
- frankly, not much more than a plain Dir.glob call. This library provides an
25
- interface based on options typically available on your command line 'find'
26
- command, thus allowing you much greater control over how you find your files.
27
-
28
- = Options
29
- * atime
30
- * ctime
31
- * follow
32
- * ftype
33
- * inum
34
- * group (name or id)
35
- * maxdepth
36
- * mindepth
37
- * mount
38
- * mtime
39
- * name (or 'pattern')
40
- * path
41
- * perm
42
- * prune
43
- * size
44
- * user (name or id)
45
-
46
- In addition to the above options, FileTest methods such as 'readable?' and
47
- 'writable?' may be used as keys, with true or false for their values.
48
-
49
- See the RDoc documentation for more details about these options.
50
-
51
- = Future Plans
52
- None at this time. Please log any feature requests on the project page at:
53
-
54
- http://github.com/djberg96/file-find
55
-
56
- = Options I won't support
57
- Generally speaking, anything that would require mucking around with C code
58
- or is just too difficult to implement in a cross platform manner will not be
59
- supported. These include the following options:
60
-
61
- * acl/xattr - Way too difficult to implement in a cross platform manner, and
62
- a rarely used option in practice.
63
-
64
- * cpio/ncpio - I will not shell out to this or any other 3rd party
65
- application.
66
-
67
- * ls/print - Use Ruby's builtin printing methods to print as you see fit.
68
-
69
- * ok - This is not interactive software.
70
-
71
- = Known Issues
72
- The :perm option is limited to 0644 and 0444 on MS Windows.
73
-
74
- The :user, :group, and :inum options require the win32-file gem to work
75
- properly on MS Windows. However, it is not officially a dependency.
76
-
77
- = Bugs
78
- None that I'm aware of beyond the ones mentioned in the Known Issues. Please
79
- log any bug reports on the project page at:
80
-
81
- http://github.com/djberg96/file-find
82
-
83
- = Acknowledgements
84
- * Richard Clamp's File::Find::Rule Perl module for additional ideas and
85
- inspiration.
86
- * Bill Kleb for ideas regarding name, group and perm enhancements.
87
- * Hal Fulton for his implementation of symbolic permissions.
88
-
89
- = License
90
- Apache-2.0
91
-
92
- = Copyright
93
- (C) 2007-2018, Daniel J. Berger, All Rights Reserved
94
-
95
- = Author
96
- Daniel J. Berger
@@ -1,568 +0,0 @@
1
- ######################################################################
2
- # test_file_find.rb
3
- #
4
- # Test case for the File::Find package. You should run this via the
5
- # 'rake test' task.
6
- ######################################################################
7
- require 'test-unit'
8
- require 'fileutils'
9
- require 'file/find'
10
- require 'sys/admin'
11
-
12
- if File::ALT_SEPARATOR
13
- require 'win32/file'
14
- require 'win32/security'
15
- end
16
-
17
- include FileUtils
18
-
19
- class TC_File_Find < Test::Unit::TestCase
20
- def self.startup
21
- Dir.chdir(File.dirname(File.expand_path(__FILE__)))
22
-
23
- @@windows = File::ALT_SEPARATOR
24
- @@jruby = RUBY_PLATFORM.match('java')
25
-
26
- if @@windows
27
- @@elevated = Win32::Security.elevated_security?
28
- if @@elevated
29
- @@loguser = Sys::Admin.get_group("Administrators", :LocalAccount => true)
30
- else
31
- @@loguser = Sys::Admin.get_user(Sys::Admin.get_login, :LocalAccount => true)
32
- end
33
- else
34
- @@loguser = Sys::Admin.get_user(Sys::Admin.get_login)
35
- @@logroup = Sys::Admin.get_group(@@loguser.gid)
36
- end
37
- end
38
-
39
- def setup
40
- @file_rb = 'test1.rb'
41
- @file_txt1 = 'test1.txt'
42
- @file_txt2 = 'foo.txt'
43
- @file_doc = 'foo.doc'
44
- @directory1 = 'dir1'
45
- @directory2 = 'dir2'
46
-
47
- File.open(@file_rb, 'w'){}
48
- File.open(@file_txt1, 'w'){}
49
- File.open(@file_txt2, 'w'){}
50
- File.open(@file_doc, 'w'){}
51
-
52
- @link1 = 'link1'
53
-
54
- if @@windows
55
- File.symlink(@file_rb, @link1) if @@elevated
56
- else
57
- File.symlink(@file_rb, @link1)
58
- end
59
-
60
- Dir.mkdir(@directory1) unless File.exist?(@directory1)
61
- Dir.mkdir(@directory2) unless File.exist?(@directory2)
62
-
63
- File.open(File.join(@directory1, 'bar.txt'), 'w'){}
64
- File.open(File.join(@directory2, 'baz.txt'), 'w'){}
65
-
66
- @rule1 = File::Find.new(:name => '*.txt')
67
- @rule2 = File::Find.new
68
- end
69
-
70
- test "version constant is set to expected value" do
71
- assert_equal('0.4.0', File::Find::VERSION)
72
- assert_true(File::Find::VERSION.frozen?)
73
- end
74
-
75
- test "path accessor basic functionality" do
76
- assert_respond_to(@rule1, :path)
77
- assert_respond_to(@rule1, :path=)
78
- end
79
-
80
- test "path method returns expected value" do
81
- assert_equal(Dir.pwd, @rule1.path)
82
- end
83
-
84
- test "options accessor basic functionality" do
85
- assert_respond_to(@rule1, :options)
86
- assert_respond_to(@rule1, :options=)
87
- end
88
-
89
- test "options method returns expected value" do
90
- assert_equal({:name => '*.txt'}, @rule1.options)
91
- end
92
-
93
- test "atime accessor basic functionality" do
94
- assert_respond_to(@rule1, :atime)
95
- assert_respond_to(@rule1, :atime=)
96
- end
97
-
98
- test "atime method returns expected default value" do
99
- assert_nil(@rule1.atime)
100
- end
101
-
102
- test "find with atime option works as expected" do
103
- rule1 = File::Find.new(:name => "*.rb", :atime => 0)
104
- rule2 = File::Find.new(:name => "*.rb", :atime => 1)
105
-
106
- assert_false(rule1.find.empty?)
107
- assert_true(rule2.find.empty?)
108
- end
109
-
110
- test "ctime accessor basic functionality" do
111
- assert_respond_to(@rule1, :ctime)
112
- assert_respond_to(@rule1, :ctime=)
113
- end
114
-
115
- test "ctime method returns expected default value" do
116
- assert_nil(@rule1.ctime)
117
- end
118
-
119
- test "find with ctime option works as expected" do
120
- rule1 = File::Find.new(:name => "*.rb", :ctime => 0)
121
- rule2 = File::Find.new(:name => "*.rb", :ctime => 1)
122
-
123
- assert_false(rule1.find.empty?)
124
- assert_true(rule2.find.empty?)
125
- end
126
-
127
- test "find method basic functionality" do
128
- assert_respond_to(@rule1, :find)
129
- assert_nothing_raised{ @rule1.find }
130
- end
131
-
132
- test "find method returns expected value" do
133
- assert_kind_of(Array, @rule1.find)
134
- assert_nil(@rule1.find{})
135
- end
136
-
137
- test "filetest accessor basic functionality" do
138
- assert_respond_to(@rule1, :filetest)
139
- assert_respond_to(@rule1, :filetest=)
140
- assert_nothing_raised{ @rule1.filetest }
141
- end
142
-
143
- test "filetest method returns expected value" do
144
- assert_kind_of(Array, @rule1.filetest)
145
- end
146
-
147
- test "valid filetest options work as expected" do
148
- assert_nothing_raised{ File::Find.new(:readable? => true) }
149
- assert_nothing_raised{ File::Find.new(:writable? => true) }
150
- end
151
-
152
- test "find method works with filetest option" do
153
- rule = File::Find.new(:name => "*.doc", :writable? => true)
154
- File.chmod(0644, @file_doc)
155
-
156
- assert_equal([@file_doc], rule.find.map{ |f| File.basename(f) })
157
-
158
- File.chmod(0444, @file_doc)
159
-
160
- assert_equal([], rule.find)
161
- end
162
-
163
- test "mtime accessor basic functionality" do
164
- assert_respond_to(@rule1, :mtime)
165
- assert_respond_to(@rule1, :mtime=)
166
- end
167
-
168
- test "mtime method returns expected default value" do
169
- assert_nil(@rule1.mtime)
170
- end
171
-
172
- test "find with mtime option works as expected" do
173
- rule1 = File::Find.new(:name => "*.rb", :mtime => 0)
174
- rule2 = File::Find.new(:name => "*.rb", :mtime => 1)
175
-
176
- assert_false(rule1.find.empty?)
177
- assert_true(rule2.find.empty?)
178
- end
179
-
180
- test "ftype accessor basic functionality" do
181
- assert_respond_to(@rule1, :ftype)
182
- assert_respond_to(@rule1, :ftype=)
183
- end
184
-
185
- test "ftype method returns expected default value" do
186
- assert_nil(@rule1.ftype)
187
- end
188
-
189
- test "ftype method works as expected" do
190
- rule1 = File::Find.new(:name => "*.rb", :ftype => "file")
191
- rule2 = File::Find.new(:name => "*.rb", :ftype => "characterSpecial")
192
-
193
- assert_false(rule1.find.empty?)
194
- assert_true(rule2.find.empty?)
195
- end
196
-
197
- test "group accessor basic functionality" do
198
- assert_respond_to(@rule1, :group)
199
- assert_respond_to(@rule1, :group=)
200
- end
201
-
202
- test "group method returns expected default value" do
203
- assert_nil(@rule1.group)
204
- end
205
-
206
- # TODO: Update test for Windows
207
- test "find with numeric group id works as expected" do
208
- omit_if(@@windows, 'group test skipped on MS Windows')
209
- @rule1 = File::Find.new(:name => '*.doc', :group => @@loguser.gid)
210
- assert_equal([File.expand_path(@file_doc)], @rule1.find)
211
- end
212
-
213
- # TODO: Update test for Windows
214
- test "find with string group id works as expected" do
215
- omit_if(@@windows, 'group test skipped on MS Windows')
216
- @rule1 = File::Find.new(:name => '*.doc', :group => @@logroup.name)
217
- assert_equal([File.expand_path(@file_doc)], @rule1.find)
218
- end
219
-
220
- test "find with bogus group returns empty results" do
221
- omit_if(@@windows, 'group test skipped on MS Windows')
222
- @rule1 = File::Find.new(:name => '*.doc', :group => 'totallybogus')
223
- @rule2 = File::Find.new(:name => '*.doc', :group => 99999999)
224
- assert_equal([], @rule1.find)
225
- assert_equal([], @rule2.find)
226
- end
227
-
228
- test "inum accessor basic functionality" do
229
- assert_respond_to(@rule1, :inum)
230
- assert_respond_to(@rule1, :inum=)
231
- end
232
-
233
- test "inum method returns expected default value" do
234
- assert_nil(@rule1.inum)
235
- end
236
-
237
- test "follow accessor basic functionality" do
238
- assert_respond_to(@rule1, :follow)
239
- assert_respond_to(@rule1, :follow=)
240
- end
241
-
242
- test "follow method returns expected default value" do
243
- assert_true(@rule1.follow)
244
- end
245
-
246
- test "links accessor basic functionality" do
247
- assert_respond_to(@rule1, :links)
248
- assert_respond_to(@rule1, :links=)
249
- end
250
-
251
- test "links method returns expected default value" do
252
- assert_nil(@rule1.links)
253
- end
254
-
255
- test "links method returns expected result" do
256
- omit_if(@@windows && !@@elevated)
257
- @rule1 = File::Find.new(:name => '*.rb', :links => 2)
258
- @rule2 = File::Find.new(:name => '*.doc', :links => 1)
259
-
260
- assert_equal([], @rule1.find)
261
- assert_equal([File.expand_path(@file_doc)], @rule2.find)
262
- end
263
-
264
- def test_maxdepth_basic
265
- assert_respond_to(@rule1, :maxdepth)
266
- assert_respond_to(@rule1, :maxdepth=)
267
- assert_nil(@rule1.maxdepth)
268
- end
269
-
270
- # This test is a little uglier because we actually check to make sure
271
- # we're looking at the right subdir, not just a filename shows up.
272
- # I did this because I'm a little paranoid about the directory
273
- # not getting mangled. - jlawler.
274
- #
275
- test "find method works on dirs that contain brackets" do
276
- omit_if(@@windows, 'dirs with brackets test skipped on MS Windows')
277
-
278
- bracket_files = [ 'bracket/a[1]/a.foo', 'bracket/a [2] /b.foo', 'bracket/[a] b [c]/d.foo' ].sort
279
- bracket_paths = [ 'bracket/a[1]', 'bracket/a [2] ', 'bracket/[a] b [c]', 'bracket/[z] x' ].sort
280
-
281
- bracket_paths.each{ |e| mkpath(e) }
282
- bracket_files.each{ |e| touch(e) }
283
-
284
- @file_rule = File::Find.new(
285
- :ftype => 'file',
286
- :path => ['bracket']
287
- )
288
-
289
- @dir_rule = File::Find.new(
290
- :path => ['bracket'],
291
- :ftype => 'directory'
292
- )
293
-
294
- file_results = @file_rule.find.sort
295
-
296
- assert_equal(bracket_files.size,file_results.size)
297
- path = file_results.first.chomp(bracket_files.first)
298
-
299
- # Confirm the first thing in results is the first thing in bracket_paths
300
- assert_not_equal(path, file_results.first)
301
- assert_equal(bracket_files, file_results.map{ |e| e.sub(path,'') }.sort )
302
- assert_equal(bracket_paths, @dir_rule.find.sort )
303
- end
304
-
305
- test "find with maxdepth option returns expected results" do
306
- mkpath('a1/a2/a3')
307
- touch('a1/a.foo')
308
- touch('a1/a2/b.foo')
309
- touch('a1/a2/c.foo')
310
- touch('a1/a2/a3/d.foo')
311
- touch('a1/a2/a3/e.foo')
312
- touch('a1/a2/a3/f.foo')
313
-
314
- @rule2.pattern = "*.foo"
315
- @rule2.maxdepth = 1
316
- assert_equal([], @rule2.find)
317
-
318
- @rule2.maxdepth = 2
319
- assert_equal(['a.foo'], @rule2.find.map{ |e| File.basename(e) })
320
-
321
- @rule2.maxdepth = 3
322
- assert_equal(['a.foo', 'b.foo', 'c.foo'], @rule2.find.map{ |e| File.basename(e) }.sort)
323
-
324
- @rule2.maxdepth = nil
325
- assert_equal(
326
- ['a.foo', 'b.foo', 'c.foo', 'd.foo', 'e.foo', 'f.foo'],
327
- @rule2.find.map{ |e| File.basename(e) }.sort
328
- )
329
- end
330
-
331
- test "find with maxdepth option returns expected results for directories" do
332
- mkpath('a/b/c')
333
- @rule2.pattern = "c"
334
-
335
- @rule2.maxdepth = 1
336
- assert_equal([], @rule2.find)
337
-
338
- @rule2.maxdepth = 2
339
- assert_equal([], @rule2.find)
340
-
341
- @rule2.maxdepth = 3
342
- assert_equal(['c'], @rule2.find.map{ |e| File.basename(e) })
343
- end
344
-
345
- test "mindepth accessor basic functionality" do
346
- assert_respond_to(@rule1, :mindepth)
347
- assert_respond_to(@rule1, :mindepth=)
348
- end
349
-
350
- test "mindepth method returns expected default value" do
351
- assert_nil(@rule1.mindepth)
352
- end
353
-
354
- test "find with mindepth option returns expected results" do
355
- mkpath('a1/a2/a3')
356
- touch('z.min')
357
- touch('a1/a.min')
358
- touch('a1/a2/b.min')
359
- touch('a1/a2/c.min')
360
- touch('a1/a2/a3/d.min')
361
- touch('a1/a2/a3/e.min')
362
- touch('a1/a2/a3/f.min')
363
-
364
- @rule2.pattern = "*.min"
365
-
366
- @rule2.mindepth = 0
367
- assert_equal(
368
- ['a.min', 'b.min', 'c.min', 'd.min', 'e.min', 'f.min', 'z.min'],
369
- @rule2.find.map{ |e| File.basename(e) }.sort
370
- )
371
-
372
- @rule2.mindepth = 1
373
- assert_equal(
374
- ['a.min', 'b.min', 'c.min', 'd.min', 'e.min', 'f.min', 'z.min'],
375
- @rule2.find.map{ |e| File.basename(e) }.sort
376
- )
377
-
378
- @rule2.mindepth = 2
379
- assert_equal(
380
- ['a.min', 'b.min', 'c.min', 'd.min', 'e.min', 'f.min'],
381
- @rule2.find.map{ |e| File.basename(e) }.sort
382
- )
383
-
384
- @rule2.mindepth = 3
385
- assert_equal(
386
- ['b.min', 'c.min', 'd.min', 'e.min', 'f.min'],
387
- @rule2.find.map{ |e| File.basename(e) }.sort
388
- )
389
-
390
- @rule2.mindepth = 4
391
- assert_equal(['d.min', 'e.min', 'f.min'], @rule2.find.map{ |e| File.basename(e) }.sort)
392
-
393
- @rule2.mindepth = 5
394
- assert_equal([], @rule2.find.map{ |e| File.basename(e) })
395
- end
396
-
397
- test "find with mindepth option returns expected results for directories" do
398
- mkpath('a/b/c')
399
- @rule2.pattern = "a"
400
-
401
- @rule2.mindepth = 1
402
- assert_equal(['a'], @rule2.find.map{ |e| File.basename(e) })
403
-
404
- @rule2.mindepth = 2
405
- assert_equal([], @rule2.find)
406
-
407
- @rule2.mindepth = 3
408
- assert_equal([], @rule2.find)
409
- end
410
-
411
- test "mount accessor basic functionality" do
412
- assert_respond_to(@rule1, :mount)
413
- assert_respond_to(@rule1, :mount=)
414
- end
415
-
416
- test "mount method returns expected default value" do
417
- assert_nil(@rule1.mount)
418
- end
419
-
420
- test "name accessor basic functionality" do
421
- assert_respond_to(@rule1, :name)
422
- assert_respond_to(@rule1, :name=)
423
- end
424
-
425
- test "name method returns expected default value" do
426
- assert_equal('*.txt', @rule1.name)
427
- end
428
-
429
- test "pattern accessor basic functionality" do
430
- assert_respond_to(@rule1, :pattern)
431
- assert_respond_to(@rule1, :pattern=)
432
- end
433
-
434
- test "pattern is an alias for name" do
435
- assert_alias_method(@rule1, :name, :pattern)
436
- assert_alias_method(@rule1, :name=, :pattern=)
437
- end
438
-
439
- test "perm accessor basic functionality" do
440
- assert_respond_to(@rule1, :perm)
441
- assert_respond_to(@rule1, :perm=)
442
- end
443
-
444
- test "perm method returns expected default value" do
445
- assert_nil(@rule1.perm)
446
- end
447
-
448
- test "perm method returns expected results" do
449
- File.chmod(0444, @file_rb)
450
- File.chmod(0644, @file_txt1)
451
-
452
- results = File::Find.new(:name => "test1*", :perm => 0644).find
453
-
454
- assert_equal(1, results.length)
455
- assert_equal('test1.txt', File.basename(results.first))
456
- end
457
-
458
- test "perm method works with symbolic permissions" do
459
- omit_if(@@windows, 'symbolic perm test skipped on MS Windows')
460
-
461
- File.chmod(0664, @file_rb) # test1.rb
462
- File.chmod(0644, @file_txt1) # test1.txt
463
- results1 = File::Find.new(:name => "test1*", :perm => "g=rw").find
464
- results2 = File::Find.new(:name => "test1*", :perm => "u=rw").find
465
-
466
- assert_equal(1, results1.length)
467
- assert_equal(2, results2.length)
468
- assert_equal('test1.rb', File.basename(results1.first))
469
- assert_equal(['test1.rb', 'test1.txt'], results2.map{ |e| File.basename(e) }.sort)
470
- end
471
-
472
- test "prune accessor basic functionality" do
473
- assert_respond_to(@rule1, :prune)
474
- assert_respond_to(@rule1, :prune=)
475
- end
476
-
477
- test "prune method returns expected default value" do
478
- assert_nil(@rule1.prune)
479
- end
480
-
481
- test "find method with prune option works as expected" do
482
- rule = File::Find.new(:name => "*.txt", :prune => 'foo')
483
- assert_equal('test1.txt', File.basename(rule.find.first))
484
- end
485
-
486
- test "size accessor basic functionality" do
487
- assert_respond_to(@rule1, :size)
488
- assert_respond_to(@rule1, :size=)
489
- end
490
-
491
- test "size method returns expected default value" do
492
- assert_nil(@rule1.size)
493
- end
494
-
495
- test "user accessor basic functionality" do
496
- assert_respond_to(@rule1, :user)
497
- assert_respond_to(@rule1, :user=)
498
- end
499
-
500
- test "user method returns expected default value" do
501
- assert_nil(@rule1.user)
502
- end
503
-
504
- test "user method works with numeric id as expected" do
505
- if @@windows && @@elevated
506
- uid = @@loguser.gid # Windows assigns the group if any member is an admin
507
- else
508
- uid = @@loguser.uid
509
- end
510
-
511
- @rule1 = File::Find.new(:name => '*.doc', :user => uid)
512
- assert_equal([File.expand_path(@file_doc)], @rule1.find)
513
- end
514
-
515
- test "user method works with string as expected" do
516
- omit_if(@@windows && @@elevated)
517
- @rule1 = File::Find.new(:name => '*.doc', :user => @@loguser.name)
518
- assert_equal([File.expand_path(@file_doc)], @rule1.find)
519
- end
520
-
521
- test "find method with user option using invalid user returns expected results" do
522
- @rule1 = File::Find.new(:name => '*.doc', :user => 'totallybogus')
523
- @rule2 = File::Find.new(:name => '*.doc', :user => 99999999)
524
- assert_equal([], @rule1.find)
525
- assert_equal([], @rule2.find)
526
- end
527
-
528
- test "previous method basic functionality" do
529
- assert_respond_to(@rule1, :previous)
530
- end
531
-
532
- test "an error is raised if the path does not exist" do
533
- assert_raise(Errno::ENOENT){ File::Find.new(:path => '/bogus/dir').find }
534
- end
535
-
536
- test "an error is raised if an invalid option is passed" do
537
- assert_raise(ArgumentError){ File::Find.new(:bogus => 1) }
538
- assert_raise(ArgumentError){ File::Find.new(:bogus? => true) }
539
- end
540
-
541
- def teardown
542
- rm_rf(@file_rb)
543
- rm_rf(@file_txt1)
544
- rm_rf(@file_txt2)
545
- rm_rf(@file_doc)
546
- rm_rf(@directory1)
547
- rm_rf(@directory2)
548
- rm_rf(@link1) #unless @@windows
549
- rm_rf('a')
550
- rm_rf('a1')
551
- rm_rf('bracket')
552
- rm_rf('z.min') if File.exist?('z.min')
553
-
554
- @rule1 = nil
555
- @rule2 = nil
556
- @file_rb = nil
557
- @file_txt1 = nil
558
- @file_txt2 = nil
559
- @file_doc = nil
560
- end
561
-
562
- def self.shutdown
563
- @@windows = nil
564
- @@jruby = nil
565
- @@elevated = nil if @@windows
566
- @@logroup = nil unless @@windows
567
- end
568
- end