file-find 0.3.5 → 0.3.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MTNmNWQwYTQ0NDdjNzQ5NDI4YjFjZWY0YjFmZjUzMmY0ZDJmZDNlZA==
5
+ data.tar.gz: !binary |-
6
+ YzU0Mzg2ZjA1ZGE2ZDcyOTAxMDZkNWI5YWE3MzI3MDYxNGViYTJmYw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YjM2Mjk1YTFlNmIwMzQ3YTNkNmIxOWNlZDE1YjEzOWFjOTVjMzBjNzMzZGYz
10
+ YTJjNTJjYmQ0ZGYyM2ViYWY4YWJiNTg4YzFmNGUzNTBkNjQyNTUxYWZmNjRk
11
+ ZGYxZDU3YTdjNDA1YjJmNWU0MjVkOTU4YzcwZjljNGMyZTMwNzA=
12
+ data.tar.gz: !binary |-
13
+ MDg3NjA3OGRiOWFhYzZmZjVkYTk5YjQ5MjRkMDQxZDYyNzZlOGIxMjVmNTUz
14
+ MjZmMWMxZWY1ZWRhZWFlYzUzMGIxMGRhZTE0ODMxZGYyMjFhM2M4NDRmMjBh
15
+ YTNkMTQ4MjhmMzQwN2RhNjg3ZDc4NmI2YmExNTJmOWMzOTgwMjU=
data/CHANGES CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.3.6 - 6-Sep-2013
2
+ * Removed rbconfig from library and test file. Just use File::ALT_SEPARATOR
3
+ to check for Windows instead.
4
+ * Removed unused variables.
5
+ * Updated dev dependencies.
6
+
1
7
  == 0.3.5 - 15-Jul-2011
2
8
  * Fixed a bug with the :follow option.
3
9
  * Gemspec, Rakefile and test cleanup.
data/README CHANGED
@@ -76,6 +76,8 @@
76
76
  * ok - This is not interactive software.
77
77
 
78
78
  = Known Issues
79
+ The mindepth and maxdepth options do not work for more than 1 path.
80
+
79
81
  The 'perm' option does not work on MS Windows, even for its limited subset of
80
82
  permissions, i.e. 664 and 666. This is arguably a bug in Ruby's
81
83
  File::Stat.mode method on MS Windows.
@@ -91,8 +93,9 @@
91
93
 
92
94
  = Bugs
93
95
  None that I'm aware of beyond the ones mentioned in the Known Issues. Please
94
- log any bug reports on the project page at
95
- http://www.rubyforge.org/projects/shards.
96
+ log any bug reports on the project page at:
97
+
98
+ http://github.com/djberg96/file-find
96
99
 
97
100
  = Acknowledgements
98
101
  * Richard Clamp's File::Find::Rule Perl module for additional ideas and
@@ -104,7 +107,7 @@
104
107
  Artistic 2.0
105
108
 
106
109
  = Copyright
107
- (C) 2007-2011, Daniel J. Berger, All Rights Reserved
110
+ (C) 2007-2013, Daniel J. Berger, All Rights Reserved
108
111
 
109
112
  = Author
110
113
  Daniel J. Berger
data/Rakefile CHANGED
@@ -14,7 +14,12 @@ namespace :gem do
14
14
  spec.add_dependency('sys-admin', '>= 1.5.2')
15
15
  end
16
16
 
17
- Gem::Builder.new(spec).build
17
+ if Gem::VERSION.to_f < 2.0
18
+ Gem::Builder.new(spec).build
19
+ else
20
+ require 'rubygems/package'
21
+ Gem::Package.build(spec)
22
+ end
18
23
  end
19
24
 
20
25
  desc "Install the file-find gem"
@@ -2,20 +2,21 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'file-find'
5
- spec.version = '0.3.5'
5
+ spec.version = '0.3.6'
6
6
  spec.author = 'Daniel Berger'
7
7
  spec.license = 'Artistic 2.0'
8
8
  spec.summary = 'A better way to find files'
9
9
  spec.email = 'djberg96@gmail.com'
10
- spec.homepage = 'http://www.rubyforge.org/projects/shards'
11
- spec.platform = Gem::Platform::RUBY
10
+ spec.homepage = 'http://github.com/djberg96/file-find'
12
11
  spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
13
12
  spec.test_file = 'test/test_file_find.rb'
14
13
 
15
14
  spec.rubyforge_project = 'shards'
16
15
  spec.extra_rdoc_files = ['README', 'CHANGES', 'MANIFEST']
17
16
 
18
- spec.add_development_dependency('test-unit', '>= 2.1.1')
17
+ spec.add_development_dependency('test-unit', '>= 2.5.0')
18
+ spec.add_development_dependency('sys-admin')
19
+ spec.add_development_dependency('rake')
19
20
 
20
21
  spec.description = <<-EOF
21
22
  The file-find library provides a better, more object oriented approach
@@ -1,5 +1,4 @@
1
1
  require 'date'
2
- require 'rbconfig'
3
2
 
4
3
  # For alternate implementations of Ruby, such as JRuby, that cannot
5
4
  # build C extensions fall back to the Etc module.
@@ -11,7 +10,7 @@ end
11
10
 
12
11
  class File::Find
13
12
  # The version of the file-find library
14
- VERSION = '0.3.5'
13
+ VERSION = '0.3.6'
15
14
 
16
15
  # :stopdoc:
17
16
  VALID_OPTIONS = %w/
@@ -234,7 +233,6 @@ class File::Find
234
233
  next if prune_regex.match(file)
235
234
  end
236
235
 
237
- orig = file.dup
238
236
  file = File.join(path, file)
239
237
 
240
238
  stat_method = @follow ? :stat : :lstat
@@ -347,7 +345,7 @@ class File::Find
347
345
  end
348
346
  end
349
347
 
350
- unless Config::CONFIG['host_os'] =~ /windows|mswin/i
348
+ unless File::ALT_SEPARATOR
351
349
  if @inum
352
350
  next unless stat_info.ino == @inum
353
351
  end
@@ -461,10 +459,10 @@ class File::Find
461
459
  match = cmd.match(regex)
462
460
  raise "Invalid symbolic permissions: '#{str}'" if match.nil?
463
461
 
464
- junk, who, what, how = match.to_a
462
+ who, what, how = match.to_a[1..-1]
465
463
 
466
- who = who.split(//).inject(who_num=0){ |num,b| num |= left[b]; num }
467
- how = how.split(//).inject(how_num=0){ |num,b| num |= right[b]; num }
464
+ who = who.split(//).inject(0){ |num,b| num |= left[b]; num }
465
+ how = how.split(//).inject(0){ |num,b| num |= right[b]; num }
468
466
  mask = who & how
469
467
 
470
468
  case what
@@ -4,32 +4,27 @@
4
4
  # Test case for the File::Find package. You should run this via the
5
5
  # 'rake test' task.
6
6
  ######################################################################
7
- require 'rubygems'
8
- gem 'test-unit'
9
-
10
- require 'test/unit'
7
+ require 'test-unit'
11
8
  require 'fileutils'
12
9
  require 'file/find'
13
- require 'rbconfig'
14
10
 
15
11
  begin
16
- require 'sys/admin'
12
+ require 'sys/admin'
17
13
  rescue LoadError
18
- require 'etc'
14
+ require 'etc'
19
15
  end
20
16
 
21
- include Config
22
17
  include FileUtils
23
18
 
24
19
  class TC_File_Find < Test::Unit::TestCase
25
20
  def self.startup
26
21
  Dir.chdir(File.dirname(File.expand_path(__FILE__)))
27
22
 
28
- @@windows = CONFIG['host_os'] =~ /win32|mswin|msdos|cygwin|mingw/i
23
+ @@windows = File::ALT_SEPARATOR
29
24
  @@jruby = RUBY_PLATFORM.match('java')
30
25
 
31
26
  unless @@windows
32
- if @@jruby
27
+ if @@jruby || !defined? Sys::Admin
33
28
  @@loguser = Etc.getpwnam(Etc.getlogin)
34
29
  @@logroup = Etc.getgrgid(@@loguser.gid)
35
30
  else
@@ -67,402 +62,402 @@ class TC_File_Find < Test::Unit::TestCase
67
62
  @rule2 = File::Find.new
68
63
  end
69
64
 
70
- def test_version
71
- assert_equal('0.3.5', File::Find::VERSION)
72
- end
73
-
74
- def test_path
75
- assert_respond_to(@rule1, :path)
76
- assert_respond_to(@rule1, :path=)
77
- assert_equal(Dir.pwd, @rule1.path)
78
- end
79
-
80
- def test_options
81
- assert_respond_to(@rule1, :options)
82
- assert_respond_to(@rule1, :options=)
83
- assert_equal({:name => '*.txt'}, @rule1.options)
84
- end
85
-
86
- def test_atime_basic
87
- assert_respond_to(@rule1, :atime)
88
- assert_respond_to(@rule1, :atime=)
89
- assert_nil(@rule1.atime)
90
- end
91
-
92
- def test_atime
93
- rule1 = File::Find.new(:name => "*.rb", :atime => 0)
94
- rule2 = File::Find.new(:name => "*.rb", :atime => 1)
95
-
96
- assert_false(rule1.find.empty?)
97
- assert_true(rule2.find.empty?)
98
- end
99
-
100
- def test_ctime_basic
101
- assert_respond_to(@rule1, :ctime)
102
- assert_respond_to(@rule1, :ctime=)
103
- assert_nil(@rule1.ctime)
104
- end
105
-
106
- def test_ctime
107
- rule1 = File::Find.new(:name => "*.rb", :ctime => 0)
108
- rule2 = File::Find.new(:name => "*.rb", :ctime => 1)
109
-
110
- assert_false(rule1.find.empty?)
111
- assert_true(rule2.find.empty?)
112
- end
113
-
114
- def test_find_basic
115
- assert_respond_to(@rule1, :find)
116
- assert_nothing_raised{ @rule1.find }
117
- end
118
-
119
- def test_find
120
- assert_kind_of(Array, @rule1.find)
121
- assert_nil(@rule1.find{})
122
- end
123
-
124
- def test_filetest_basic
125
- assert_respond_to(@rule1, :filetest)
126
- assert_respond_to(@rule1, :filetest=)
127
- assert_nothing_raised{ @rule1.filetest }
128
- assert_kind_of(Array, @rule1.filetest)
129
- end
130
-
131
- def test_filetest_valid_options
132
- assert_nothing_raised{ File::Find.new(:readable? => true) }
133
- assert_nothing_raised{ File::Find.new(:writable? => true) }
134
- end
135
-
136
- def test_filetest
137
- omit_if(@@windows && @@jruby, "Skipping file test on JRuby/Windows")
138
-
139
- rule = File::Find.new(:name => "*.doc", :writable? => true)
140
- File.chmod(0644, @file_doc)
141
-
142
- assert_equal([@file_doc], rule.find.map{ |f| File.basename(f) })
143
-
144
- File.chmod(0444, @file_doc)
145
-
146
- assert_equal([], rule.find)
147
- end
148
-
149
- def test_mtime
150
- rule1 = File::Find.new(:name => "*.rb", :mtime => 0)
151
- rule2 = File::Find.new(:name => "*.rb", :mtime => 1)
152
-
153
- assert_false(rule1.find.empty?)
154
- assert_true(rule2.find.empty?)
155
- end
156
-
157
- def test_mtime_basic
158
- assert_respond_to(@rule1, :mtime)
159
- assert_respond_to(@rule1, :mtime=)
160
- assert_nil(@rule1.mtime)
161
- end
162
-
163
- def test_ftype_basic
164
- assert_respond_to(@rule1, :ftype)
165
- assert_respond_to(@rule1, :ftype=)
166
- assert_nil(@rule1.ftype)
167
- end
168
-
169
- def test_ftype
170
- rule1 = File::Find.new(:name => "*.rb", :ftype => "file")
171
- rule2 = File::Find.new(:name => "*.rb", :ftype => "characterSpecial")
172
-
173
- assert_false(rule1.find.empty?)
174
- assert_true(rule2.find.empty?)
175
- end
176
-
177
- def test_group_basic
178
- assert_respond_to(@rule1, :group)
179
- assert_respond_to(@rule1, :group=)
180
- assert_nil(@rule1.group)
181
- end
182
-
183
- def test_group_with_numeric_id
184
- omit_if(@@windows, 'group test skipped on MS Windows')
185
- @rule1 = File::Find.new(:name => '*.doc', :group => @@loguser.gid)
186
- assert_equal([File.expand_path(@file_doc)], @rule1.find)
187
- end
188
-
189
- def test_group_with_string
190
- omit_if(@@windows, 'group test skipped on MS Windows')
191
- @rule1 = File::Find.new(:name => '*.doc', :group => @@logroup.name)
192
- assert_equal([File.expand_path(@file_doc)], @rule1.find)
193
- end
194
-
195
- def test_group_with_bad_id
196
- omit_if(@@windows, 'group test skipped on MS Windows')
197
- @rule1 = File::Find.new(:name => '*.doc', :group => 'totallybogus')
198
- @rule2 = File::Find.new(:name => '*.doc', :group => 99999999)
199
- assert_equal([], @rule1.find)
200
- assert_equal([], @rule2.find)
201
- end
202
-
203
- def test_inum_basic
204
- assert_respond_to(@rule1, :inum)
205
- assert_respond_to(@rule1, :inum=)
206
- assert_nil(@rule1.inum)
207
- end
208
-
209
- def test_follow_basic
210
- assert_respond_to(@rule1, :follow)
211
- assert_respond_to(@rule1, :follow=)
212
- assert_true(@rule1.follow)
213
- end
214
-
215
- def test_links_basic
216
- assert_respond_to(@rule1, :links)
217
- assert_respond_to(@rule1, :links=)
218
- assert_nil(@rule1.links)
219
- end
220
-
221
- def test_links
222
- omit_if(@@windows, 'links test skipped on MS Windows')
223
-
224
- @rule1 = File::Find.new(:name => '*.rb', :links => 2)
225
- @rule2 = File::Find.new(:name => '*.doc', :links => 1)
226
-
227
- assert_equal([], @rule1.find)
228
- assert_equal([File.expand_path(@file_doc)], @rule2.find)
229
- end
230
-
231
- def test_maxdepth_basic
232
- assert_respond_to(@rule1, :maxdepth)
233
- assert_respond_to(@rule1, :maxdepth=)
234
- assert_nil(@rule1.maxdepth)
235
- end
236
-
237
- def test_maxdepth_file
238
- mkpath('a1/a2/a3')
239
- touch('a1/a.foo')
240
- touch('a1/a2/b.foo')
241
- touch('a1/a2/c.foo')
242
- touch('a1/a2/a3/d.foo')
243
- touch('a1/a2/a3/e.foo')
244
- touch('a1/a2/a3/f.foo')
245
-
246
- @rule2.pattern = "*.foo"
247
- @rule2.maxdepth = 1
248
- assert_equal([], @rule2.find)
249
-
250
- @rule2.maxdepth = 2
251
- assert_equal(['a.foo'], @rule2.find.map{ |e| File.basename(e) })
252
-
253
- @rule2.maxdepth = 3
254
- assert_equal(['a.foo', 'b.foo', 'c.foo'], @rule2.find.map{ |e| File.basename(e) })
255
-
256
- @rule2.maxdepth = nil
257
- assert_equal(
258
- ['a.foo', 'b.foo', 'c.foo', 'd.foo', 'e.foo', 'f.foo'],
259
- @rule2.find.map{ |e| File.basename(e) }.sort
260
- )
261
- end
262
-
263
- def test_maxdepth_directory
264
- mkpath('a/b/c')
265
- @rule2.pattern = "c"
266
-
267
- @rule2.maxdepth = 1
268
- assert_equal([], @rule2.find)
269
-
270
- @rule2.maxdepth = 2
271
- assert_equal([], @rule2.find)
272
-
273
- @rule2.maxdepth = 3
274
- assert_equal(['c'], @rule2.find.map{ |e| File.basename(e) })
275
- end
276
-
277
- def test_mindepth_basic
278
- assert_respond_to(@rule1, :mindepth)
279
- assert_respond_to(@rule1, :mindepth=)
280
- assert_nil(@rule1.mindepth)
281
- end
282
-
283
- def test_mindepth_file
284
- mkpath('a1/a2/a3')
285
- touch('z.min')
286
- touch('a1/a.min')
287
- touch('a1/a2/b.min')
288
- touch('a1/a2/c.min')
289
- touch('a1/a2/a3/d.min')
290
- touch('a1/a2/a3/e.min')
291
- touch('a1/a2/a3/f.min')
292
-
293
- @rule2.pattern = "*.min"
294
-
295
- @rule2.mindepth = 0
296
- assert_equal(
297
- ['a.min', 'b.min', 'c.min', 'd.min', 'e.min', 'f.min', 'z.min'],
298
- @rule2.find.map{ |e| File.basename(e) }.sort
299
- )
65
+ def test_version
66
+ assert_equal('0.3.6', File::Find::VERSION)
67
+ end
300
68
 
301
- @rule2.mindepth = 1
302
- assert_equal(
303
- ['a.min', 'b.min', 'c.min', 'd.min', 'e.min', 'f.min', 'z.min'],
304
- @rule2.find.map{ |e| File.basename(e) }.sort
305
- )
69
+ def test_path
70
+ assert_respond_to(@rule1, :path)
71
+ assert_respond_to(@rule1, :path=)
72
+ assert_equal(Dir.pwd, @rule1.path)
73
+ end
306
74
 
307
- @rule2.mindepth = 2
308
- assert_equal(
309
- ['a.min', 'b.min', 'c.min', 'd.min', 'e.min', 'f.min'],
310
- @rule2.find.map{ |e| File.basename(e) }.sort
311
- )
312
-
313
- @rule2.mindepth = 3
314
- assert_equal(
315
- ['b.min', 'c.min', 'd.min', 'e.min', 'f.min'],
75
+ def test_options
76
+ assert_respond_to(@rule1, :options)
77
+ assert_respond_to(@rule1, :options=)
78
+ assert_equal({:name => '*.txt'}, @rule1.options)
79
+ end
80
+
81
+ def test_atime_basic
82
+ assert_respond_to(@rule1, :atime)
83
+ assert_respond_to(@rule1, :atime=)
84
+ assert_nil(@rule1.atime)
85
+ end
86
+
87
+ def test_atime
88
+ rule1 = File::Find.new(:name => "*.rb", :atime => 0)
89
+ rule2 = File::Find.new(:name => "*.rb", :atime => 1)
90
+
91
+ assert_false(rule1.find.empty?)
92
+ assert_true(rule2.find.empty?)
93
+ end
94
+
95
+ def test_ctime_basic
96
+ assert_respond_to(@rule1, :ctime)
97
+ assert_respond_to(@rule1, :ctime=)
98
+ assert_nil(@rule1.ctime)
99
+ end
100
+
101
+ def test_ctime
102
+ rule1 = File::Find.new(:name => "*.rb", :ctime => 0)
103
+ rule2 = File::Find.new(:name => "*.rb", :ctime => 1)
104
+
105
+ assert_false(rule1.find.empty?)
106
+ assert_true(rule2.find.empty?)
107
+ end
108
+
109
+ def test_find_basic
110
+ assert_respond_to(@rule1, :find)
111
+ assert_nothing_raised{ @rule1.find }
112
+ end
113
+
114
+ def test_find
115
+ assert_kind_of(Array, @rule1.find)
116
+ assert_nil(@rule1.find{})
117
+ end
118
+
119
+ def test_filetest_basic
120
+ assert_respond_to(@rule1, :filetest)
121
+ assert_respond_to(@rule1, :filetest=)
122
+ assert_nothing_raised{ @rule1.filetest }
123
+ assert_kind_of(Array, @rule1.filetest)
124
+ end
125
+
126
+ def test_filetest_valid_options
127
+ assert_nothing_raised{ File::Find.new(:readable? => true) }
128
+ assert_nothing_raised{ File::Find.new(:writable? => true) }
129
+ end
130
+
131
+ def test_filetest
132
+ omit_if(@@windows && @@jruby, "Skipping file test on JRuby/Windows")
133
+
134
+ rule = File::Find.new(:name => "*.doc", :writable? => true)
135
+ File.chmod(0644, @file_doc)
136
+
137
+ assert_equal([@file_doc], rule.find.map{ |f| File.basename(f) })
138
+
139
+ File.chmod(0444, @file_doc)
140
+
141
+ assert_equal([], rule.find)
142
+ end
143
+
144
+ def test_mtime
145
+ rule1 = File::Find.new(:name => "*.rb", :mtime => 0)
146
+ rule2 = File::Find.new(:name => "*.rb", :mtime => 1)
147
+
148
+ assert_false(rule1.find.empty?)
149
+ assert_true(rule2.find.empty?)
150
+ end
151
+
152
+ def test_mtime_basic
153
+ assert_respond_to(@rule1, :mtime)
154
+ assert_respond_to(@rule1, :mtime=)
155
+ assert_nil(@rule1.mtime)
156
+ end
157
+
158
+ def test_ftype_basic
159
+ assert_respond_to(@rule1, :ftype)
160
+ assert_respond_to(@rule1, :ftype=)
161
+ assert_nil(@rule1.ftype)
162
+ end
163
+
164
+ def test_ftype
165
+ rule1 = File::Find.new(:name => "*.rb", :ftype => "file")
166
+ rule2 = File::Find.new(:name => "*.rb", :ftype => "characterSpecial")
167
+
168
+ assert_false(rule1.find.empty?)
169
+ assert_true(rule2.find.empty?)
170
+ end
171
+
172
+ def test_group_basic
173
+ assert_respond_to(@rule1, :group)
174
+ assert_respond_to(@rule1, :group=)
175
+ assert_nil(@rule1.group)
176
+ end
177
+
178
+ def test_group_with_numeric_id
179
+ omit_if(@@windows, 'group test skipped on MS Windows')
180
+ @rule1 = File::Find.new(:name => '*.doc', :group => @@loguser.gid)
181
+ assert_equal([File.expand_path(@file_doc)], @rule1.find)
182
+ end
183
+
184
+ def test_group_with_string
185
+ omit_if(@@windows, 'group test skipped on MS Windows')
186
+ @rule1 = File::Find.new(:name => '*.doc', :group => @@logroup.name)
187
+ assert_equal([File.expand_path(@file_doc)], @rule1.find)
188
+ end
189
+
190
+ def test_group_with_bad_id
191
+ omit_if(@@windows, 'group test skipped on MS Windows')
192
+ @rule1 = File::Find.new(:name => '*.doc', :group => 'totallybogus')
193
+ @rule2 = File::Find.new(:name => '*.doc', :group => 99999999)
194
+ assert_equal([], @rule1.find)
195
+ assert_equal([], @rule2.find)
196
+ end
197
+
198
+ def test_inum_basic
199
+ assert_respond_to(@rule1, :inum)
200
+ assert_respond_to(@rule1, :inum=)
201
+ assert_nil(@rule1.inum)
202
+ end
203
+
204
+ def test_follow_basic
205
+ assert_respond_to(@rule1, :follow)
206
+ assert_respond_to(@rule1, :follow=)
207
+ assert_true(@rule1.follow)
208
+ end
209
+
210
+ def test_links_basic
211
+ assert_respond_to(@rule1, :links)
212
+ assert_respond_to(@rule1, :links=)
213
+ assert_nil(@rule1.links)
214
+ end
215
+
216
+ def test_links
217
+ omit_if(@@windows, 'links test skipped on MS Windows')
218
+
219
+ @rule1 = File::Find.new(:name => '*.rb', :links => 2)
220
+ @rule2 = File::Find.new(:name => '*.doc', :links => 1)
221
+
222
+ assert_equal([], @rule1.find)
223
+ assert_equal([File.expand_path(@file_doc)], @rule2.find)
224
+ end
225
+
226
+ def test_maxdepth_basic
227
+ assert_respond_to(@rule1, :maxdepth)
228
+ assert_respond_to(@rule1, :maxdepth=)
229
+ assert_nil(@rule1.maxdepth)
230
+ end
231
+
232
+ def test_maxdepth_file
233
+ mkpath('a1/a2/a3')
234
+ touch('a1/a.foo')
235
+ touch('a1/a2/b.foo')
236
+ touch('a1/a2/c.foo')
237
+ touch('a1/a2/a3/d.foo')
238
+ touch('a1/a2/a3/e.foo')
239
+ touch('a1/a2/a3/f.foo')
240
+
241
+ @rule2.pattern = "*.foo"
242
+ @rule2.maxdepth = 1
243
+ assert_equal([], @rule2.find)
244
+
245
+ @rule2.maxdepth = 2
246
+ assert_equal(['a.foo'], @rule2.find.map{ |e| File.basename(e) })
247
+
248
+ @rule2.maxdepth = 3
249
+ assert_equal(['a.foo', 'b.foo', 'c.foo'], @rule2.find.map{ |e| File.basename(e) })
250
+
251
+ @rule2.maxdepth = nil
252
+ assert_equal(
253
+ ['a.foo', 'b.foo', 'c.foo', 'd.foo', 'e.foo', 'f.foo'],
316
254
  @rule2.find.map{ |e| File.basename(e) }.sort
317
- )
318
-
319
- @rule2.mindepth = 4
320
- assert_equal(['d.min', 'e.min', 'f.min'], @rule2.find.map{ |e| File.basename(e) }.sort)
321
-
322
- @rule2.mindepth = 5
323
- assert_equal([], @rule2.find.map{ |e| File.basename(e) })
324
- end
325
-
326
- def test_mindepth_directory
327
- mkpath('a/b/c')
328
- @rule2.pattern = "a"
329
-
330
- @rule2.mindepth = 1
331
- assert_equal(['a'], @rule2.find.map{ |e| File.basename(e) })
332
-
333
- @rule2.mindepth = 2
334
- assert_equal([], @rule2.find)
335
-
336
- @rule2.mindepth = 3
337
- assert_equal([], @rule2.find)
338
- end
339
-
340
- def test_mount_basic
341
- assert_respond_to(@rule1, :mount)
342
- assert_respond_to(@rule1, :mount=)
343
- assert_nil(@rule1.mount)
344
- end
345
-
346
- def test_name_basic
347
- assert_respond_to(@rule1, :name)
348
- assert_respond_to(@rule1, :name=)
349
- assert_equal('*.txt', @rule1.name)
350
- end
351
-
352
- def test_pattern_alias
353
- assert_respond_to(@rule1, :pattern)
354
- assert_respond_to(@rule1, :pattern=)
355
- assert_true(@rule1.method(:name) == @rule1.method(:pattern))
356
- assert_true(@rule1.method(:name=) == @rule1.method(:pattern=))
357
- end
358
-
359
- def test_perm_basic
360
- assert_respond_to(@rule1, :perm)
361
- assert_respond_to(@rule1, :perm=)
362
- assert_nil(@rule1.perm)
363
- end
364
-
365
- def test_perm
366
- omit_if(@@windows, 'perm test skipped on MS Windows')
367
- File.chmod(0664, @file_rb)
368
- File.chmod(0644, @file_txt1)
369
- results = File::Find.new(:name => "test1*", :perm => 664).find
370
-
371
- assert_equal(1, results.length)
372
- assert_equal('test1.rb', File.basename(results.first))
373
- end
374
-
375
- def test_perm_with_symbolic_permissions
376
- omit_if(@@windows, 'symbolic perm test skipped on MS Windows')
377
-
378
- File.chmod(0664, @file_rb) # test1.rb
379
- File.chmod(0644, @file_txt1) # test1.txt
380
- results1 = File::Find.new(:name => "test1*", :perm => "g=rw").find
381
- results2 = File::Find.new(:name => "test1*", :perm => "u=rw").find
382
-
383
- assert_equal(1, results1.length)
384
- assert_equal(2, results2.length)
385
- assert_equal('test1.rb', File.basename(results1.first))
386
- assert_equal(['test1.rb', 'test1.txt'], results2.map{ |e| File.basename(e) }.sort)
387
- end
388
-
389
- def test_prune_basic
390
- assert_respond_to(@rule1, :prune)
391
- assert_respond_to(@rule1, :prune=)
392
- assert_nil(@rule1.prune)
393
- end
394
-
395
- def test_prune
396
- rule = File::Find.new(:name => "*.txt", :prune => 'foo')
397
- assert_equal('test1.txt', File.basename(rule.find.first))
398
- end
399
-
400
- def test_size_basic
401
- assert_respond_to(@rule1, :size)
402
- assert_respond_to(@rule1, :size=)
403
- assert_nil(@rule1.size)
404
- end
405
-
406
- def test_user_basic
407
- assert_respond_to(@rule1, :user)
408
- assert_respond_to(@rule1, :user=)
409
- assert_nil(@rule1.user)
410
- end
411
-
412
- def test_user_with_numeric_id
413
- omit_if(@@windows, 'user test skipped on MS Windows')
414
- @rule1 = File::Find.new(:name => '*.doc', :user => @@loguser.uid)
415
- assert_equal([File.expand_path(@file_doc)], @rule1.find)
416
- end
417
-
418
- def test_user_with_string
419
- omit_if(@@windows, 'user test skipped on MS Windows')
420
- @rule1 = File::Find.new(:name => '*.doc', :user => @@loguser.name)
421
- assert_equal([File.expand_path(@file_doc)], @rule1.find)
422
- end
423
-
424
- def test_user_with_bad_id
425
- omit_if(@@windows, 'user test skipped on MS Windows')
426
- @rule1 = File::Find.new(:name => '*.doc', :user => 'totallybogus')
427
- @rule2 = File::Find.new(:name => '*.doc', :user => 99999999)
428
- assert_equal([], @rule1.find)
429
- assert_equal([], @rule2.find)
430
- end
431
-
432
- def test_previous_basic
433
- assert_respond_to(@rule1, :previous)
434
- end
435
-
436
- def test_expected_errors
437
- assert_raise(Errno::ENOENT){ File::Find.new(:path => '/bogus/dir').find }
438
- assert_raise(ArgumentError){ File::Find.new(:bogus => 1) }
439
- assert_raise(ArgumentError){ File::Find.new(:bogus? => true) }
440
- end
441
-
442
- def teardown
443
- rm_rf(@file_rb)
444
- rm_rf(@file_txt1)
445
- rm_rf(@file_txt2)
446
- rm_rf(@file_doc)
447
- rm_rf(@directory1)
448
- rm_rf(@directory2)
449
- rm_rf(@link1) unless @@windows
450
- rm_rf('a')
451
- rm_rf('a1')
452
- rm_rf('z.min') if File.exists?('z.min')
453
-
454
- @rule1 = nil
455
- @rule2 = nil
456
- @file_rb = nil
457
- @file_txt1 = nil
458
- @file_txt2 = nil
459
- @file_doc = nil
460
- end
461
-
462
- def self.shutdown
463
- @@windows = nil
464
- @@jruby = nil
465
- @@loguser = nil unless @@windows
466
- @@logroup = nil unless @@windows
467
- end
255
+ )
256
+ end
257
+
258
+ def test_maxdepth_directory
259
+ mkpath('a/b/c')
260
+ @rule2.pattern = "c"
261
+
262
+ @rule2.maxdepth = 1
263
+ assert_equal([], @rule2.find)
264
+
265
+ @rule2.maxdepth = 2
266
+ assert_equal([], @rule2.find)
267
+
268
+ @rule2.maxdepth = 3
269
+ assert_equal(['c'], @rule2.find.map{ |e| File.basename(e) })
270
+ end
271
+
272
+ def test_mindepth_basic
273
+ assert_respond_to(@rule1, :mindepth)
274
+ assert_respond_to(@rule1, :mindepth=)
275
+ assert_nil(@rule1.mindepth)
276
+ end
277
+
278
+ def test_mindepth_file
279
+ mkpath('a1/a2/a3')
280
+ touch('z.min')
281
+ touch('a1/a.min')
282
+ touch('a1/a2/b.min')
283
+ touch('a1/a2/c.min')
284
+ touch('a1/a2/a3/d.min')
285
+ touch('a1/a2/a3/e.min')
286
+ touch('a1/a2/a3/f.min')
287
+
288
+ @rule2.pattern = "*.min"
289
+
290
+ @rule2.mindepth = 0
291
+ assert_equal(
292
+ ['a.min', 'b.min', 'c.min', 'd.min', 'e.min', 'f.min', 'z.min'],
293
+ @rule2.find.map{ |e| File.basename(e) }.sort
294
+ )
295
+
296
+ @rule2.mindepth = 1
297
+ assert_equal(
298
+ ['a.min', 'b.min', 'c.min', 'd.min', 'e.min', 'f.min', 'z.min'],
299
+ @rule2.find.map{ |e| File.basename(e) }.sort
300
+ )
301
+
302
+ @rule2.mindepth = 2
303
+ assert_equal(
304
+ ['a.min', 'b.min', 'c.min', 'd.min', 'e.min', 'f.min'],
305
+ @rule2.find.map{ |e| File.basename(e) }.sort
306
+ )
307
+
308
+ @rule2.mindepth = 3
309
+ assert_equal(
310
+ ['b.min', 'c.min', 'd.min', 'e.min', 'f.min'],
311
+ @rule2.find.map{ |e| File.basename(e) }.sort
312
+ )
313
+
314
+ @rule2.mindepth = 4
315
+ assert_equal(['d.min', 'e.min', 'f.min'], @rule2.find.map{ |e| File.basename(e) }.sort)
316
+
317
+ @rule2.mindepth = 5
318
+ assert_equal([], @rule2.find.map{ |e| File.basename(e) })
319
+ end
320
+
321
+ def test_mindepth_directory
322
+ mkpath('a/b/c')
323
+ @rule2.pattern = "a"
324
+
325
+ @rule2.mindepth = 1
326
+ assert_equal(['a'], @rule2.find.map{ |e| File.basename(e) })
327
+
328
+ @rule2.mindepth = 2
329
+ assert_equal([], @rule2.find)
330
+
331
+ @rule2.mindepth = 3
332
+ assert_equal([], @rule2.find)
333
+ end
334
+
335
+ def test_mount_basic
336
+ assert_respond_to(@rule1, :mount)
337
+ assert_respond_to(@rule1, :mount=)
338
+ assert_nil(@rule1.mount)
339
+ end
340
+
341
+ def test_name_basic
342
+ assert_respond_to(@rule1, :name)
343
+ assert_respond_to(@rule1, :name=)
344
+ assert_equal('*.txt', @rule1.name)
345
+ end
346
+
347
+ def test_pattern_alias
348
+ assert_respond_to(@rule1, :pattern)
349
+ assert_respond_to(@rule1, :pattern=)
350
+ assert_true(@rule1.method(:name) == @rule1.method(:pattern))
351
+ assert_true(@rule1.method(:name=) == @rule1.method(:pattern=))
352
+ end
353
+
354
+ def test_perm_basic
355
+ assert_respond_to(@rule1, :perm)
356
+ assert_respond_to(@rule1, :perm=)
357
+ assert_nil(@rule1.perm)
358
+ end
359
+
360
+ def test_perm
361
+ omit_if(@@windows, 'perm test skipped on MS Windows')
362
+ File.chmod(0664, @file_rb)
363
+ File.chmod(0644, @file_txt1)
364
+ results = File::Find.new(:name => "test1*", :perm => 664).find
365
+
366
+ assert_equal(1, results.length)
367
+ assert_equal('test1.rb', File.basename(results.first))
368
+ end
369
+
370
+ def test_perm_with_symbolic_permissions
371
+ omit_if(@@windows, 'symbolic perm test skipped on MS Windows')
372
+
373
+ File.chmod(0664, @file_rb) # test1.rb
374
+ File.chmod(0644, @file_txt1) # test1.txt
375
+ results1 = File::Find.new(:name => "test1*", :perm => "g=rw").find
376
+ results2 = File::Find.new(:name => "test1*", :perm => "u=rw").find
377
+
378
+ assert_equal(1, results1.length)
379
+ assert_equal(2, results2.length)
380
+ assert_equal('test1.rb', File.basename(results1.first))
381
+ assert_equal(['test1.rb', 'test1.txt'], results2.map{ |e| File.basename(e) }.sort)
382
+ end
383
+
384
+ def test_prune_basic
385
+ assert_respond_to(@rule1, :prune)
386
+ assert_respond_to(@rule1, :prune=)
387
+ assert_nil(@rule1.prune)
388
+ end
389
+
390
+ def test_prune
391
+ rule = File::Find.new(:name => "*.txt", :prune => 'foo')
392
+ assert_equal('test1.txt', File.basename(rule.find.first))
393
+ end
394
+
395
+ def test_size_basic
396
+ assert_respond_to(@rule1, :size)
397
+ assert_respond_to(@rule1, :size=)
398
+ assert_nil(@rule1.size)
399
+ end
400
+
401
+ def test_user_basic
402
+ assert_respond_to(@rule1, :user)
403
+ assert_respond_to(@rule1, :user=)
404
+ assert_nil(@rule1.user)
405
+ end
406
+
407
+ def test_user_with_numeric_id
408
+ omit_if(@@windows, 'user test skipped on MS Windows')
409
+ @rule1 = File::Find.new(:name => '*.doc', :user => @@loguser.uid)
410
+ assert_equal([File.expand_path(@file_doc)], @rule1.find)
411
+ end
412
+
413
+ def test_user_with_string
414
+ omit_if(@@windows, 'user test skipped on MS Windows')
415
+ @rule1 = File::Find.new(:name => '*.doc', :user => @@loguser.name)
416
+ assert_equal([File.expand_path(@file_doc)], @rule1.find)
417
+ end
418
+
419
+ def test_user_with_bad_id
420
+ omit_if(@@windows, 'user test skipped on MS Windows')
421
+ @rule1 = File::Find.new(:name => '*.doc', :user => 'totallybogus')
422
+ @rule2 = File::Find.new(:name => '*.doc', :user => 99999999)
423
+ assert_equal([], @rule1.find)
424
+ assert_equal([], @rule2.find)
425
+ end
426
+
427
+ def test_previous_basic
428
+ assert_respond_to(@rule1, :previous)
429
+ end
430
+
431
+ def test_expected_errors
432
+ assert_raise(Errno::ENOENT){ File::Find.new(:path => '/bogus/dir').find }
433
+ assert_raise(ArgumentError){ File::Find.new(:bogus => 1) }
434
+ assert_raise(ArgumentError){ File::Find.new(:bogus? => true) }
435
+ end
436
+
437
+ def teardown
438
+ rm_rf(@file_rb)
439
+ rm_rf(@file_txt1)
440
+ rm_rf(@file_txt2)
441
+ rm_rf(@file_doc)
442
+ rm_rf(@directory1)
443
+ rm_rf(@directory2)
444
+ rm_rf(@link1) unless @@windows
445
+ rm_rf('a')
446
+ rm_rf('a1')
447
+ rm_rf('z.min') if File.exists?('z.min')
448
+
449
+ @rule1 = nil
450
+ @rule2 = nil
451
+ @file_rb = nil
452
+ @file_txt1 = nil
453
+ @file_txt2 = nil
454
+ @file_doc = nil
455
+ end
456
+
457
+ def self.shutdown
458
+ @@windows = nil
459
+ @@jruby = nil
460
+ @@loguser = nil unless @@windows
461
+ @@logroup = nil unless @@windows
462
+ end
468
463
  end
metadata CHANGED
@@ -1,65 +1,83 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: file-find
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 5
10
- version: 0.3.5
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.6
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Daniel Berger
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-07-15 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2013-09-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: test-unit
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 9
29
- segments:
30
- - 2
31
- - 1
32
- - 1
33
- version: 2.1.1
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 2.5.0
34
20
  type: :development
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 2.5.0
27
+ - !ruby/object:Gem::Dependency
37
28
  name: sys-admin
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
38
49
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 7
45
- segments:
46
- - 1
47
- - 5
48
- - 2
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sys-admin
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
49
61
  version: 1.5.2
50
62
  type: :runtime
51
- version_requirements: *id002
52
- description: " The file-find library provides a better, more object oriented approach\n to finding files. It allows you to find files based on a variety of\n properties, such as access time, size, owner, etc. You can also limit\n directory depth.\n"
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.5.2
69
+ description: ! " The file-find library provides a better, more object oriented
70
+ approach\n to finding files. It allows you to find files based on a variety of\n
71
+ \ properties, such as access time, size, owner, etc. You can also limit\n directory
72
+ depth.\n"
53
73
  email: djberg96@gmail.com
54
74
  executables: []
55
-
56
75
  extensions: []
57
-
58
- extra_rdoc_files:
76
+ extra_rdoc_files:
59
77
  - README
60
78
  - CHANGES
61
79
  - MANIFEST
62
- files:
80
+ files:
63
81
  - CHANGES
64
82
  - file-find.gemspec
65
83
  - lib/file/find.rb
@@ -67,38 +85,29 @@ files:
67
85
  - Rakefile
68
86
  - README
69
87
  - test/test_file_find.rb
70
- homepage: http://www.rubyforge.org/projects/shards
71
- licenses:
88
+ homepage: http://github.com/djberg96/file-find
89
+ licenses:
72
90
  - Artistic 2.0
91
+ metadata: {}
73
92
  post_install_message:
74
93
  rdoc_options: []
75
-
76
- require_paths:
94
+ require_paths:
77
95
  - lib
78
- required_ruby_version: !ruby/object:Gem::Requirement
79
- none: false
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- hash: 3
84
- segments:
85
- - 0
86
- version: "0"
87
- required_rubygems_version: !ruby/object:Gem::Requirement
88
- none: false
89
- requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- hash: 3
93
- segments:
94
- - 0
95
- version: "0"
96
+ required_ruby_version: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ required_rubygems_version: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
96
106
  requirements: []
97
-
98
107
  rubyforge_project: shards
99
- rubygems_version: 1.8.3
108
+ rubygems_version: 2.0.3
100
109
  signing_key:
101
- specification_version: 3
110
+ specification_version: 4
102
111
  summary: A better way to find files
103
- test_files:
112
+ test_files:
104
113
  - test/test_file_find.rb