file-find 0.3.5 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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