sys-filesystem 0.2.0-x86-mswin32-60 → 0.3.0-x86-mswin32-60

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.3.0 - 26-Feb-2009
2
+ * Added support for OS X and FreeBSD thanks to an awesome patch by Nobuyoshi
3
+ Miyokawa.
4
+ * Added the Filesystem.mount_point method that takes a file and returns
5
+ the mount point its sitting on.
6
+
1
7
  == 0.2.0 - 30-Dec-2008
2
8
  * Added the Filesystem.mounts method for iterating over mount or volume
3
9
  information.
data/README CHANGED
@@ -13,7 +13,8 @@
13
13
  require 'sys/filesystem'
14
14
  include Sys
15
15
 
16
- p Filesystem.stat("/")
16
+ # Display information about a particular filesystem.
17
+ p Filesystem.stat('/')
17
18
 
18
19
  # Sample output
19
20
 
@@ -33,11 +34,15 @@
33
34
  @blocks_free = 20301129
34
35
  >
35
36
 
37
+ # Describe all mount points on the system
36
38
  Filesystem.mounts{ |mount| p mount }
39
+
40
+ # Find the mount point of any particular file
41
+ puts Filesystem.mount_point('/home/djberge/some_file.txt') => '/home'
37
42
 
38
43
  = Notes
39
44
  === MS Windows
40
- This is a pure Ruby implementation using the windows-pr package, which in
45
+ This is a pure Ruby implementation using the windows-pr library, which in
41
46
  turn wraps native Windows functions.
42
47
  === UNIX
43
48
  This is a C extension that wraps statvfs, etc.
@@ -54,11 +59,15 @@
54
59
  Suggestions welcome.
55
60
 
56
61
  = Acknowledgements
57
- Mike Hall, for ideas and code that I borrowed from his 'filesystem' package.
62
+ Mike Hall, for ideas and code that I borrowed from his 'filesystem'
63
+ library.
64
+
58
65
  Park Heesob, for implementation and API ideas for the MS Windows version.
66
+
67
+ Nobuyoshi Miyokawa, for adding FreeBSD and OS X support.
59
68
 
60
69
  = Copyright
61
- (C) 2003-2008 Daniel J. Berger
70
+ (C) 2003-2009 Daniel J. Berger
62
71
  All Rights Reserved
63
72
 
64
73
  = Warranty
data/Rakefile CHANGED
@@ -58,6 +58,10 @@ Rake::TestTask.new("test") do |t|
58
58
  t.test_files = FileList['test/test_sys_filesystem.rb']
59
59
  end
60
60
 
61
+ task :test do
62
+ Rake.application[:clean].execute
63
+ end
64
+
61
65
  desc "Run the example program"
62
66
  task :example => [:build] do |t|
63
67
  Dir.chdir('examples') do
@@ -1,4 +1,5 @@
1
1
  require 'windows/error'
2
+ require 'windows/path'
2
3
  require 'windows/filesystem'
3
4
  require 'windows/volume'
4
5
  require 'windows/handle'
@@ -20,6 +21,7 @@ module Sys
20
21
  extend Windows::Error
21
22
  extend Windows::FileSystem
22
23
  extend Windows::Volume
24
+ extend Windows::Path
23
25
 
24
26
  # Error typically raised if any of the Sys::Filesystem methods fail.
25
27
  class Error < StandardError; end
@@ -39,7 +41,7 @@ module Sys
39
41
  NAMED_STREAMS = 0x00040000
40
42
  READ_ONLY_VOLUME = 0x00080000
41
43
 
42
- VERSION = '0.2.0'
44
+ VERSION = '0.2.1'
43
45
 
44
46
  class Mount
45
47
  # The name of the volume. This is the device mapping.
@@ -235,10 +237,23 @@ module Sys
235
237
  mounts # Nil if the block form was used.
236
238
  end
237
239
 
240
+ # Returns the mount point for the given +file+. For MS Windows this
241
+ # means the root of the path.
242
+ #
243
+ # Example:
244
+ #
245
+ # File.mount_point("C:\\Documents and Settings") # => "C:\\'
246
+ #
247
+ def self.mount_point(file)
248
+ file = file.tr(File::SEPARATOR, File::ALT_SEPARATOR)
249
+ PathStripToRoot(file)
250
+ file[/^[^\0]*/]
251
+ end
252
+
238
253
  # Returns a Filesystem::Stat object that contains information about the
239
254
  # +path+ file system.
240
255
  #
241
- # Example:
256
+ # Examples:
242
257
  #
243
258
  # File.stat("C:\\")
244
259
  # File.stat("C:\\Documents and Settings\\some_user")
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  spec = Gem::Specification.new do |gem|
4
4
  gem.name = 'sys-filesystem'
5
- gem.version = '0.2.0'
5
+ gem.version = '0.3.0'
6
6
  gem.author = 'Daniel J. Berger'
7
7
  gem.email = 'djberg96@gmail.com'
8
8
  gem.homepage = 'http://www.rubyforge.org/projects/sysutils'
@@ -15,6 +15,8 @@ class TC_Sys_Filesystem_Unix < Test::Unit::TestCase
15
15
  def self.startup
16
16
  @@solaris = Config::CONFIG['host_os'] =~ /solaris/i
17
17
  @@linux = Config::CONFIG['host_os'] =~ /linux/i
18
+ @@freebsd = Config::CONFIG['host_os'] =~ /freebsd/i
19
+ @@darwin = Config::CONFIG['host_os'] =~ /darwin/i
18
20
  end
19
21
 
20
22
  def setup
@@ -26,7 +28,7 @@ class TC_Sys_Filesystem_Unix < Test::Unit::TestCase
26
28
  end
27
29
 
28
30
  def test_version
29
- assert_equal('0.2.0', Filesystem::VERSION)
31
+ assert_equal('0.3.0', Filesystem::VERSION)
30
32
  end
31
33
 
32
34
  def test_stat_path
@@ -105,7 +107,8 @@ class TC_Sys_Filesystem_Unix < Test::Unit::TestCase
105
107
  end
106
108
 
107
109
  def test_stat_base_type
108
- omit_unless(@@solaris, "NOTRUNC test skipped except on Solaris")
110
+ omit_unless(@@solaris, "base_type test skipped except on Solaris")
111
+
109
112
  assert_respond_to(@stat, :base_type)
110
113
  assert_kind_of(String, @stat.base_type)
111
114
  end
@@ -113,7 +116,9 @@ class TC_Sys_Filesystem_Unix < Test::Unit::TestCase
113
116
  def test_stat_constants
114
117
  assert_not_nil(Filesystem::Stat::RDONLY)
115
118
  assert_not_nil(Filesystem::Stat::NOSUID)
119
+
116
120
  omit_unless(@@solaris, "NOTRUNC test skipped except on Solaris")
121
+
117
122
  assert_not_nil(Filesystem::Stat::NOTRUNC)
118
123
  end
119
124
 
@@ -192,15 +197,16 @@ class TC_Sys_Filesystem_Unix < Test::Unit::TestCase
192
197
 
193
198
  def test_mount_time
194
199
  assert_respond_to(@mnt, :mount_time)
200
+
195
201
  if @@solaris
196
- assert_kind_of(String, @mnt.mount_time)
202
+ assert_kind_of(Time, @mnt.mount_time)
197
203
  else
198
204
  assert_nil(@mnt.mount_time)
199
205
  end
200
206
  end
201
207
 
202
208
  def test_mount_dump_frequency
203
- omit_if(@@solaris, 'dump_frequency test skipped on Solaris')
209
+ omit_if(@@solaris || @@freebsd || @@darwin, 'dump_frequency test skipped on this platform')
204
210
  assert_respond_to(@mnt, :dump_frequency)
205
211
  assert_kind_of(Fixnum, @mnt.dump_frequency)
206
212
  end
@@ -211,7 +217,7 @@ class TC_Sys_Filesystem_Unix < Test::Unit::TestCase
211
217
  end
212
218
 
213
219
  def test_mount_pass_number
214
- omit_if(@@solaris, 'pass_number test skipped on Solaris')
220
+ omit_if(@@solaris || @@freebsd || @@darwin, 'pass_number test skipped on this platform')
215
221
  assert_respond_to(@mnt, :pass_number)
216
222
  assert_kind_of(Fixnum, @mnt.pass_number)
217
223
  end
@@ -221,6 +227,12 @@ class TC_Sys_Filesystem_Unix < Test::Unit::TestCase
221
227
  assert_true(@mnt.method(:passno) == @mnt.method(:pass_number))
222
228
  end
223
229
 
230
+ def test_mount_point_singleton
231
+ assert_respond_to(Filesystem, :mount_point)
232
+ assert_nothing_raised{ Filesystem.mount_point(Dir.pwd) }
233
+ assert_kind_of(String, Filesystem.mount_point(Dir.pwd))
234
+ end
235
+
224
236
  def teardown
225
237
  @dir = nil
226
238
  @stat = nil
@@ -230,5 +242,7 @@ class TC_Sys_Filesystem_Unix < Test::Unit::TestCase
230
242
  def self.shutdown
231
243
  @@solaris = nil
232
244
  @@linux = nil
245
+ @@freebsd = nil
246
+ @@darwin = nil
233
247
  end
234
248
  end
@@ -22,7 +22,7 @@ class TC_Sys_Filesystem_Windows < Test::Unit::TestCase
22
22
  end
23
23
 
24
24
  def test_version
25
- assert_equal('0.2.0', Filesystem::VERSION)
25
+ assert_equal('0.3.0', Filesystem::VERSION)
26
26
  end
27
27
 
28
28
  def test_stat_path
@@ -93,6 +93,12 @@ class TC_Sys_Filesystem_Windows < Test::Unit::TestCase
93
93
  assert_kind_of(String, @stat.base_type)
94
94
  end
95
95
 
96
+ def test_mount_point_singleton
97
+ assert_respond_to(Filesystem, :mount_point)
98
+ assert_nothing_raised{ Filesystem.mount_point(Dir.pwd) }
99
+ assert_kind_of(String, Filesystem.mount_point(Dir.pwd))
100
+ end
101
+
96
102
  def test_constants
97
103
  assert_not_nil(Filesystem::CASE_SENSITIVE_SEARCH)
98
104
  assert_not_nil(Filesystem::CASE_PRESERVED_NAMES)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sys-filesystem
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: x86-mswin32-60
6
6
  authors:
7
7
  - Daniel J. Berger
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-30 00:00:00 -07:00
12
+ date: 2009-02-26 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency