sys-filesystem 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.2.0 - 30-Dec-2008
2
+ * Added the Filesystem.mounts method for iterating over mount or volume
3
+ information.
4
+
1
5
  == 0.1.1 - 28-Mar-2007
2
6
  * Bug fix for BSD flavors. Thanks go to Jeremy Kemper and Ole Christian
3
7
  Rynning for the spot.
data/MANIFEST CHANGED
@@ -2,10 +2,12 @@
2
2
  * CHANGES
3
3
  * Rakefile
4
4
  * README
5
- * install.rb
6
5
  * sys-fileystem.gemspec
7
6
  * examples/example_stat.rb
7
+ * doc/sys-filesystem.txt
8
8
  * ext/extconf.rb
9
9
  * ext/filesystem.c
10
10
  * lib/sys/filesystem.rb
11
- * test/tc_filesystem.rb
11
+ * test/test_sys_filesystem.rb
12
+ * test/test_sys_filesystem_unix
13
+ * test/test_sys_filesystem_windows
data/README CHANGED
@@ -3,15 +3,11 @@
3
3
 
4
4
  = Prerequisites
5
5
  === MS Windows
6
- * windows-pr, 0.6.0 or later.
6
+ * windows-pr, 0.9.8 or later.
7
7
 
8
8
  = Installation
9
- === Manual Installation
10
9
  rake test (optional)
11
- rake install
12
- === Gem Installation
13
- ruby sys-filesystem.gemspec
14
- gem install sys-filesystem-X.Y.Z.gem
10
+ rake install (non-gem) OR rake install_gem (gem)
15
11
 
16
12
  = Synopsis
17
13
  require 'sys/filesystem'
@@ -19,6 +15,26 @@
19
15
 
20
16
  p Filesystem.stat("/")
21
17
 
18
+ # Sample output
19
+
20
+ #<Sys::Filesystem::Stat:0x517440
21
+ @base_type = "ufs",
22
+ @flags = 4,
23
+ @files_available = 3817457,
24
+ @block_size = 8192,
25
+ @blocks_available = 19957633,
26
+ @blocks = 34349612,
27
+ @name_max = 255,
28
+ @path = "/",
29
+ @filesystem_id = 35651592,
30
+ @files = 4135040,
31
+ @fragment_size = 1024,
32
+ @files_free = 3817457,
33
+ @blocks_free = 20301129
34
+ >
35
+
36
+ Filesystem.mounts{ |mount| p mount }
37
+
22
38
  = Notes
23
39
  === MS Windows
24
40
  This is a pure Ruby implementation using the windows-pr package, which in
@@ -35,18 +51,18 @@
35
51
  http://www.rubyforge.org/projects/sysutils.
36
52
 
37
53
  = Future Plans
38
- Add support for mount points/volumes.
54
+ Suggestions welcome.
39
55
 
40
56
  = Acknowledgements
41
57
  Mike Hall, for ideas and code that I borrowed from his 'filesystem' package.
42
58
  Park Heesob, for implementation and API ideas for the MS Windows version.
43
59
 
44
60
  = Copyright
45
- (C) 2003-2007 Daniel J. Berger
61
+ (C) 2003-2008 Daniel J. Berger
46
62
  All Rights Reserved
47
63
 
48
64
  = Warranty
49
- This package is provided "as is" and without any express or
65
+ This library is provided "as is" and without any express or
50
66
  implied warranties, including, without limitation, the implied
51
67
  warranties of merchantability and fitness for a particular purpose.
52
68
 
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rake'
2
2
  require 'rake/clean'
3
3
  require 'rake/testtask'
4
+ include Config
4
5
 
5
6
  desc "Clean the build files for the sys-filesystem source for UNIX systems"
6
7
  task :clean do
@@ -8,35 +9,36 @@ task :clean do
8
9
  FileUtils.rm_rf('sys') if File.exists?('sys')
9
10
  end
10
11
 
11
- Dir.chdir('ext') do
12
- unless RUBY_PLATFORM.match('mswin')
13
- FileUtils.rm_rf('sys') if File.exists?('sys')
14
- build_file = 'filesystem.' + Config::CONFIG['DLEXT']
15
- sh 'make distclean' if File.exists?(build_file)
12
+ unless CONFIG['host_os'].match('mswin')
13
+ file = 'sys/filesystem.' + CONFIG['DLEXT']
14
+ Dir.chdir('ext') do
15
+ sh 'make distclean' rescue nil
16
+ rm file if File.exists?(file)
16
17
  end
17
18
  end
18
19
  end
19
20
 
20
- desc "Build the sys-filesystem package on UNIX systems (but don't install it)"
21
+ desc "Build the sys-filesystem library on UNIX systems (but don't install it)"
21
22
  task :build => [:clean] do
22
- Dir.chdir('ext') do
23
- unless RUBY_PLATFORM.match('mswin')
23
+ unless CONFIG['host_os'].match('mswin')
24
+ file = 'filesystem.' + CONFIG['DLEXT']
25
+ Dir.chdir('ext') do
24
26
  ruby 'extconf.rb'
25
27
  sh 'make'
26
- build_file = 'filesystem.' + Config::CONFIG['DLEXT']
27
- Dir.mkdir('sys') unless File.exists?('sys')
28
- FileUtils.cp(build_file, 'sys')
28
+ mv file, 'sys'
29
29
  end
30
30
  end
31
31
  end
32
32
 
33
- if RUBY_PLATFORM.match('mswin')
34
- desc "Install the sys-filesystem package"
33
+ if CONFIG['host_os'].match('mswin')
34
+ desc "Install the sys-filesystem library"
35
35
  task :install do
36
- sh 'ruby install.rb'
36
+ install_dir = File.join(CONFIG['sitelibdir'], 'sys')
37
+ Dir.mkdir(install_dir) unless File.exists?(install_dir)
38
+ FileUtils.cp('lib/sys/filesystem.rb', install_dir, :verbose => true)
37
39
  end
38
40
  else
39
- desc "Install the sys-filesystem package"
41
+ desc "Install the sys-filesystem library"
40
42
  task :install => [:build] do
41
43
  Dir.chdir('ext') do
42
44
  sh 'make install'
@@ -46,14 +48,14 @@ end
46
48
 
47
49
  desc "Run the test suite"
48
50
  Rake::TestTask.new("test") do |t|
49
- if RUBY_PLATFORM.match('mswin')
50
- t.libs << 'lib'
51
- else
51
+ unless CONFIG['host_os'].match('mswin')
52
52
  task :test => :build
53
53
  t.libs << 'ext'
54
54
  t.libs.delete('lib')
55
55
  end
56
- t.test_files = FileList['test/tc_filesystem.rb']
56
+ t.warning = true
57
+ t.verbose = true
58
+ t.test_files = FileList['test/test_sys_filesystem.rb']
57
59
  end
58
60
 
59
61
  desc "Run the example program"
@@ -0,0 +1,165 @@
1
+ = Description
2
+ A Ruby interface for getting filesystem information.
3
+
4
+ = Synopsis
5
+ require 'sys/filesystem'
6
+ include Sys
7
+
8
+ p Filesystem.stat("/") # => Sys::Filesystem::Stat object
9
+
10
+ Filesystem.mounts{ |mount|
11
+ p mount
12
+ }
13
+
14
+ = Constants
15
+ == Sys::Filesystem
16
+ VERSION
17
+ The version of this package, returned as a string.
18
+
19
+ == Sys::Filesystem::Stat
20
+ RDONLY
21
+ Read only filesystem.
22
+
23
+ See the +flags+ method for more information.
24
+
25
+ NOSUID
26
+ Filesystem does not support suid or sgid semantics.
27
+
28
+ See the +flags+ method for more information.
29
+
30
+ NOTRUNC
31
+ Filesystem does not truncate file names longer than +name_max+. Not
32
+ supported on all platforms.
33
+
34
+ See the +flags+ method for more information.
35
+
36
+ = Class Methods
37
+ === Sys::Filesystem
38
+ Sys::Filesystem.stat(path)
39
+ Returns a Filesystem::Stat object containing information about the
40
+ +path+ filesystem.
41
+
42
+ Sys::Filesystem.mounts
43
+ Returns an array of Filesystem::Mount objects containing information
44
+ about the mount points available on your system.
45
+
46
+ In block form this method yields each Mount object in turn instead
47
+ of returning an array.
48
+
49
+ = Instance Methods
50
+ === Sys::Filesystem::Mount
51
+ name
52
+ The name of the mounted resource.
53
+
54
+ On MS Windows this is the device mapping.
55
+
56
+ mount_time
57
+ The last time the volume was mounted.
58
+
59
+ On MS Windows this is your system's boot time.
60
+
61
+ mount_type
62
+ The type of mount, e.g. NFS, NTFS.
63
+
64
+ mount_point
65
+ The volume mount point.
66
+
67
+ On MS Windows this is the volume letter.
68
+
69
+ options
70
+ A list of comma separated options that denote properties of the volume.
71
+
72
+ pass_number
73
+ The number of the filesystem check, or nil if not present.
74
+
75
+ This is always nil on MS Windows.
76
+
77
+ frequency
78
+ The dump frequency in days, or nil if not present or supported.
79
+
80
+ This is always nil on MS Windows.
81
+
82
+ === Sys::Filesystem::Stat
83
+ base_type
84
+ The filesystem type, e.g. UFS.
85
+
86
+ block_size
87
+ The preferred system block size.
88
+
89
+ blocks
90
+ The total number of +fragment_size+ blocks in the filesystem.
91
+
92
+ blocks_available
93
+ The number of free blocks available to unprivileged processes.
94
+
95
+ blocks_free
96
+ The total number of free blocks in the filesystem.
97
+
98
+ files
99
+ The total number of files/inodes that can be created.
100
+
101
+ files_free
102
+ The total number of free files/inodes on the file system.
103
+
104
+ filesystem_id
105
+ The filesystem identifier.
106
+
107
+ flags
108
+ A bit mask of flags. See the 'Constants' section for a list of flags.
109
+
110
+ fragment_size
111
+ The fragment size, i.e. fundamental file system block size.
112
+
113
+ inodes
114
+ Alias for +files+.
115
+
116
+ inodes_free
117
+ Alias for +files_free+.
118
+
119
+ inodes_available
120
+ Alias for +files_available+.
121
+
122
+ name_max
123
+ The maximum length of a file name permitted on the file system.
124
+
125
+ path
126
+ The path of the filesystem.
127
+
128
+ = Fixnum helper methods
129
+ Fixnum#to_gb
130
+ Returns a number in terms of gigabytes.
131
+
132
+ Fixnum#to_kb
133
+ Returns a number in terms of kilobytes
134
+
135
+ Fixnum#to_mb
136
+ Returns a number in terms of megabytes
137
+
138
+ == Known Bugs
139
+ None that I am aware of. Please log any bugs you find on the project
140
+ website at http://www.rubyforge.org/projects/sysutils.
141
+
142
+ == License
143
+ Ruby's
144
+
145
+ == Copyright
146
+ Copyright 2002-2008, Daniel J. Berger
147
+
148
+ All Rights Reserved. This module is free software. It may be used,
149
+ redistributed and/or modified under the same terms as Ruby itself.
150
+
151
+ == Warranty
152
+ This library is provided "as is" and without any express or
153
+ implied warranties, including, without limitation, the implied
154
+ warranties of merchantability and fitness for a particular purpose.
155
+
156
+ == Acknowledgements
157
+ Mike Hall for his original source code.
158
+
159
+ == Author
160
+ Daniel J. Berger
161
+ djberg96 at nospam at gmail dot com
162
+ imperator on IRC (Freenode)
163
+
164
+ == See Also
165
+ mount
@@ -0,0 +1,24 @@
1
+ ######################################################################
2
+ # example_stat.rb
3
+ #
4
+ # Example program that demonstrates the FileSystem.stat method.
5
+ # Use the 'rake example' task to run this program.
6
+ ######################################################################
7
+ require 'sys/filesystem'
8
+ include Sys
9
+
10
+ p Filesystem::VERSION
11
+
12
+ stat = Filesystem.stat("/")
13
+ puts "Path: " + stat.path
14
+ puts "Block size: " + stat.block_size.to_s
15
+ puts "Fragment size: " + stat.fragment_size.to_s
16
+ puts "Blocks free: " + stat.blocks_free.to_s
17
+ puts "Blocks available: " + stat.blocks_available.to_s
18
+ puts "Files/Inodes: " + stat.files.to_s
19
+ puts "Files/Inodes free: " + stat.files_free.to_s
20
+ puts "Files/Inodes available: " + stat.files_available.to_s
21
+ puts "File system id: " + stat.filesystem_id.to_s
22
+ puts "Base type: " + stat.base_type if stat.base_type
23
+ puts "Flags: " + stat.flags.to_s
24
+ puts "Name max: " + stat.name_max.to_s
data/ext/extconf.rb CHANGED
@@ -1,8 +1,11 @@
1
1
  require 'mkmf'
2
2
 
3
- have_header("sys/mnttab.h")
4
- have_header("mntent.h")
3
+ dir_config('filesystem')
4
+
5
+ have_header("sys/mnttab.h") || have_header("mntent.h")
6
+
5
7
  have_func("statvfs")
8
+ have_func("getextmntent")
6
9
 
7
10
  if have_header("sys/statvfs.h")
8
11
  have_struct_member("struct statvfs", "f_basetype", "sys/statvfs.h")
@@ -10,4 +13,4 @@ else
10
13
  have_header("sys/vnode.h")
11
14
  end
12
15
 
13
- create_makefile("sys/filesystem")
16
+ create_makefile("sys/filesystem", "sys")
@@ -23,7 +23,7 @@
23
23
  #define START_MNT(F,M) fopen(F,M)
24
24
  #define GET_MNT(FP,MP) (getmntent(FP,MP) == 0)
25
25
  #define END_MNT(F) fclose(F)
26
- #define MOUNTLIST "/etc/mnttab"
26
+ #define MOUNTFILE "/etc/mnttab"
27
27
 
28
28
  #else /* Most flavors of UNIX */
29
29
 
@@ -33,12 +33,14 @@
33
33
  #define START_MNT(F,M) setmntent(F,M)
34
34
  #define GET_MNT(FP,MP) ((MP = getmntent(FP)) != NULL)
35
35
  #define END_MNT(F) endmntent(F)
36
- #define MOUNTLIST "/etc/mtab"
36
+ #define MOUNTFILE "/etc/mtab"
37
37
  #endif
38
38
 
39
39
  #endif
40
40
 
41
- VALUE mSys, cFilesys, cStat;
41
+ VALUE mSys, cFilesys, cStat, cMount;
42
+
43
+ static VALUE create_mount_object(struct MNTENT*);
42
44
 
43
45
  /* call-seq:
44
46
  * Filesystem.stat(path)
@@ -120,6 +122,81 @@ static VALUE fixnum_to_gb(VALUE self){
120
122
  return ULL2NUM(NUM2ULONG(self) / 1073741824);
121
123
  }
122
124
 
125
+ /*
126
+ * call-seq:
127
+ * Filesystem.mounts
128
+ * Filesystem.mounts{ ... }
129
+ *
130
+ * In block form, yields a Filesystem::Mount object for each mounted filesystem
131
+ * on your machine. In non-block form, returns an array of Filesystem::Mount
132
+ * objects instead.
133
+ *
134
+ * Example:
135
+ *
136
+ * Filesystem.mounts{ |fs|
137
+ * p fs.name # => e.g. '/dev/dsk/c0t0d0s0', 'proc', etc
138
+ * p fs.mount_time # => e.g. Thu Dec 11 15:07:23 -0700 2008
139
+ * p fs.mount_type # => e.g. 'ufs', 'proc', etc
140
+ * p fs.mount_point # => e.g. '/', '/proc', '/tmp', etc
141
+ * p fs.options # => e.g. "rw,intr,largefiles,logging,xattr,onerror=panic,dev=2200008"
142
+ * p fs.pass_number # => e.g. ???
143
+ * p fs.dump_frequency # => e.g. ???
144
+ * }
145
+ */
146
+ static VALUE fs_mounts(VALUE klass){
147
+ VALUE v_array;
148
+ FILE* fp;
149
+ struct MNTENT* mp;
150
+ #ifdef HAVE_SYS_MNTTAB_H
151
+ struct MNTENT mt;
152
+ mp = &mt;
153
+ #endif
154
+
155
+ v_array = Qnil;
156
+
157
+ if((fp = START_MNT(MOUNTFILE, "r")) == NULL)
158
+ rb_sys_fail(MOUNTFILE);
159
+
160
+ if(rb_block_given_p()){
161
+ while(GET_MNT(fp, mp))
162
+ rb_yield(create_mount_object(mp));
163
+ }
164
+ else{
165
+ v_array = rb_ary_new();
166
+ while(GET_MNT(fp, mp))
167
+ rb_ary_push(v_array, create_mount_object(mp));
168
+ }
169
+
170
+ END_MNT(fp);
171
+
172
+ return v_array; /* nil in block form */
173
+ }
174
+
175
+ /* Private function to create a Filesystem object */
176
+ static VALUE create_mount_object(struct MNTENT* mp){
177
+ VALUE v_mount = rb_funcall(cMount, rb_intern("new"), 0, 0);
178
+
179
+ #ifdef HAVE_SYS_MNTTAB_H
180
+ rb_iv_set(v_mount, "@name", rb_tainted_str_new2(mp->mnt_special));
181
+ rb_iv_set(v_mount, "@mount_point", rb_tainted_str_new2(mp->mnt_mountp));
182
+ rb_iv_set(v_mount, "@mount_type", rb_tainted_str_new2(mp->mnt_fstype));
183
+ rb_iv_set(v_mount, "@options", rb_tainted_str_new2(mp->mnt_mntopts));
184
+ rb_iv_set(v_mount, "@mount_time", rb_time_new(atoi(mp->mnt_time), 0));
185
+ rb_iv_set(v_mount, "@dump_frequency", Qnil);
186
+ rb_iv_set(v_mount, "@pass_number", Qnil);
187
+ #else
188
+ rb_iv_set(v_mount, "@name", rb_tainted_str_new2(mp->mnt_fsname));
189
+ rb_iv_set(v_mount, "@mount_point", rb_tainted_str_new2(mp->mnt_dir));
190
+ rb_iv_set(v_mount, "@mount_type", rb_tainted_str_new2(mp->mnt_type));
191
+ rb_iv_set(v_mount, "@options", rb_tainted_str_new2(mp->mnt_opts));
192
+ rb_iv_set(v_mount, "@mount_time", Qnil);
193
+ rb_iv_set(v_mount, "@dump_frequency", INT2NUM(mp->mnt_freq));
194
+ rb_iv_set(v_mount, "@pass_number", INT2NUM(mp->mnt_passno));
195
+ #endif
196
+
197
+ return v_mount;
198
+ }
199
+
123
200
  void Init_filesystem(){
124
201
  /* The toplevel namespace */
125
202
  mSys = rb_define_module("Sys");
@@ -129,13 +206,48 @@ void Init_filesystem(){
129
206
  */
130
207
  cFilesys = rb_define_class_under(mSys, "Filesystem", rb_cObject);
131
208
 
209
+ /* Instances of this class are returned by the Filesystem.mount method */
210
+ cMount = rb_define_class_under(cFilesys, "Mount", rb_cObject);
211
+
132
212
  /* Instances of this class are returned by the Filesystem.stat method */
133
- cStat = rb_define_class_under(cFilesys, "Stat", rb_cObject);
213
+ cStat = rb_define_class_under(cFilesys, "Stat", rb_cObject);
134
214
 
135
215
  /* Singleton methods */
216
+ rb_define_singleton_method(cFilesys, "mounts", fs_mounts, 0);
136
217
  rb_define_singleton_method(cFilesys, "stat", fs_stat, 1);
137
218
 
138
- /* Stat accessors */
219
+ /* Filesystem::Mount accessors */
220
+
221
+ /* The name of the mounted resource */
222
+ rb_define_attr(cMount, "name", 1, 0);
223
+
224
+ /* The mount point/directory */
225
+ rb_define_attr(cMount, "mount_point", 1, 0);
226
+
227
+ /* The type of the file system mount, e.g. 'ufs', 'nfs', etc */
228
+ rb_define_attr(cMount, "mount_type", 1, 0);
229
+
230
+ /* A list of comma separated options for the mount, e.g. 'rw', etc */
231
+ rb_define_attr(cMount, "options", 1, 0);
232
+
233
+ /* The time the file system was mounted or nil if not supported */
234
+ rb_define_attr(cMount, "mount_time", 1, 0);
235
+
236
+ /* The dump frequency in days (or nil if not supported) */
237
+ rb_define_attr(cMount, "dump_frequency", 1, 0);
238
+
239
+ /* The pass number of the file system check or nil if not supported */
240
+ rb_define_attr(cMount, "pass_number", 1, 0);
241
+
242
+ /* Filesystem::Mount Aliases */
243
+
244
+ rb_define_alias(cMount, "fsname", "name");
245
+ rb_define_alias(cMount, "dir", "mount_point");
246
+ rb_define_alias(cMount, "opts", "options");
247
+ rb_define_alias(cMount, "passno", "pass_number");
248
+ rb_define_alias(cMount, "freq", "dump_frequency");
249
+
250
+ /* Filesystem::Stat accessors */
139
251
 
140
252
  /* The path of the file system */
141
253
  rb_define_attr(cStat, "path", 1, 0);
@@ -178,8 +290,8 @@ void Init_filesystem(){
178
290
 
179
291
  /* Constants */
180
292
 
181
- /* 0.1.1: The version of this package */
182
- rb_define_const(cFilesys, "VERSION", rb_str_new2("0.1.1"));
293
+ /* 0.2.0: The version of this library (a String) */
294
+ rb_define_const(cFilesys, "VERSION", rb_str_new2("0.2.0"));
183
295
 
184
296
  /* 0x00000001: Read only file system */
185
297
  rb_define_const(cStat, "RDONLY", INT2FIX(ST_RDONLY));
@@ -0,0 +1,9 @@
1
+ $LOAD_PATH.unshift File.dirname(File.expand_path(__FILE__))
2
+
3
+ require 'rbconfig'
4
+
5
+ if Config::CONFIG['host_os'].match('mswin')
6
+ require 'test_sys_filesystem_windows'
7
+ else
8
+ require 'test_sys_filesystem_unix'
9
+ end
@@ -0,0 +1,234 @@
1
+ ####################################################################
2
+ # tc_unix.rb
3
+ #
4
+ # Test case for the Sys::Filesystem.stat method and related stuff.
5
+ # This test suite should be run via the 'rake test' task.
6
+ ####################################################################
7
+ require 'rubygems'
8
+ gem 'test-unit'
9
+
10
+ require 'test/unit'
11
+ require 'sys/filesystem'
12
+ include Sys
13
+
14
+ class TC_Sys_Filesystem_Unix < Test::Unit::TestCase
15
+ def self.startup
16
+ @@solaris = Config::CONFIG['host_os'] =~ /solaris/i
17
+ @@linux = Config::CONFIG['host_os'] =~ /linux/i
18
+ end
19
+
20
+ def setup
21
+ @dir = "/"
22
+ @stat = Filesystem.stat(@dir)
23
+ @mnt = Filesystem.mounts[0]
24
+ @size = 58720256
25
+ @array = []
26
+ end
27
+
28
+ def test_version
29
+ assert_equal('0.2.0', Filesystem::VERSION)
30
+ end
31
+
32
+ def test_stat_path
33
+ assert_respond_to(@stat, :path)
34
+ assert_equal("/", @stat.path)
35
+ end
36
+
37
+ def test_stat_block_size
38
+ assert_respond_to(@stat, :block_size)
39
+ assert_kind_of(Fixnum, @stat.block_size)
40
+ end
41
+
42
+ def test_stat_fragment_size
43
+ assert_respond_to(@stat, :fragment_size)
44
+ assert_kind_of(Fixnum, @stat.fragment_size)
45
+ end
46
+
47
+ def test_stat_blocks
48
+ assert_respond_to(@stat, :blocks)
49
+ assert_kind_of(Fixnum, @stat.blocks)
50
+ end
51
+
52
+ def test_stat_blocks_free
53
+ assert_respond_to(@stat, :blocks_free)
54
+ assert_kind_of(Fixnum, @stat.blocks_free)
55
+ end
56
+
57
+ def test_stat_blocks_available
58
+ assert_respond_to(@stat, :blocks_available)
59
+ assert_kind_of(Fixnum, @stat.blocks_available)
60
+ end
61
+
62
+ def test_stat_files
63
+ assert_respond_to(@stat, :files)
64
+ assert_kind_of(Fixnum, @stat.files)
65
+ end
66
+
67
+ def test_inodes_alias
68
+ assert_respond_to(@stat, :inodes)
69
+ assert_true(@stat.method(:inodes) == @stat.method(:files))
70
+ end
71
+
72
+ def test_stat_files_free
73
+ assert_respond_to(@stat, :files_free)
74
+ assert_kind_of(Fixnum, @stat.files_free)
75
+ end
76
+
77
+ def test_stat_inodes_free_alias
78
+ assert_respond_to(@stat, :inodes_free)
79
+ assert_true(@stat.method(:inodes_free) == @stat.method(:files_free))
80
+ end
81
+
82
+ def test_stat_files_available
83
+ assert_respond_to(@stat, :files_available)
84
+ assert_kind_of(Fixnum, @stat.files_available)
85
+ end
86
+
87
+ def test_stat_inodes_available_alias
88
+ assert_respond_to(@stat, :inodes_available)
89
+ assert_true(@stat.method(:inodes_available) == @stat.method(:files_available))
90
+ end
91
+
92
+ def test_stat_filesystem_id
93
+ assert_respond_to(@stat, :filesystem_id)
94
+ assert_kind_of(Integer, @stat.filesystem_id)
95
+ end
96
+
97
+ def test_stat_flags
98
+ assert_respond_to(@stat, :flags)
99
+ assert_kind_of(Fixnum, @stat.flags)
100
+ end
101
+
102
+ def test_stat_name_max
103
+ assert_respond_to(@stat, :name_max)
104
+ assert_kind_of(Fixnum, @stat.name_max)
105
+ end
106
+
107
+ def test_stat_base_type
108
+ omit_unless(@@solaris, "NOTRUNC test skipped except on Solaris")
109
+ assert_respond_to(@stat, :base_type)
110
+ assert_kind_of(String, @stat.base_type)
111
+ end
112
+
113
+ def test_stat_constants
114
+ assert_not_nil(Filesystem::Stat::RDONLY)
115
+ assert_not_nil(Filesystem::Stat::NOSUID)
116
+ omit_unless(@@solaris, "NOTRUNC test skipped except on Solaris")
117
+ assert_not_nil(Filesystem::Stat::NOTRUNC)
118
+ end
119
+
120
+ def test_stat_expected_errors
121
+ assert_raises(ArgumentError){ Filesystem.stat }
122
+ end
123
+
124
+ def test_fixnum_methods_basic
125
+ assert_respond_to(@size, :to_kb)
126
+ assert_respond_to(@size, :to_mb)
127
+ assert_respond_to(@size, :to_gb)
128
+ end
129
+
130
+ def test_to_kb
131
+ assert_equal(57344, @size.to_kb)
132
+ end
133
+
134
+ def test_to_mb
135
+ assert_equal(56, @size.to_mb)
136
+ end
137
+
138
+ def test_to_gb
139
+ assert_equal(0, @size.to_gb)
140
+ end
141
+
142
+ # Filesystem::Mount tests
143
+
144
+ def test_mounts_with_no_block
145
+ assert_nothing_raised{ @array = Filesystem.mounts }
146
+ assert_kind_of(Filesystem::Mount, @array[0])
147
+ end
148
+
149
+ def test_mounts_with_block
150
+ assert_nothing_raised{ Filesystem.mounts{ |m| @array << m } }
151
+ assert_kind_of(Filesystem::Mount, @array[0])
152
+ end
153
+
154
+ def test_mounts_high_iteration
155
+ assert_nothing_raised{ 1000.times{ @array = Filesystem.mounts } }
156
+ end
157
+
158
+ def test_mount_name
159
+ assert_respond_to(@mnt, :name)
160
+ assert_kind_of(String, @mnt.name)
161
+ end
162
+
163
+ def test_fsname_alias
164
+ assert_respond_to(@mnt, :fsname)
165
+ assert_true(@mnt.method(:fsname) == @mnt.method(:name))
166
+ end
167
+
168
+ def test_mount_point
169
+ assert_respond_to(@mnt, :mount_point)
170
+ assert_kind_of(String, @mnt.mount_point)
171
+ end
172
+
173
+ def test_dir_alias
174
+ assert_respond_to(@mnt, :dir)
175
+ assert_true(@mnt.method(:dir) == @mnt.method(:mount_point))
176
+ end
177
+
178
+ def test_mount_type
179
+ assert_respond_to(@mnt, :mount_type)
180
+ assert_kind_of(String, @mnt.mount_type)
181
+ end
182
+
183
+ def test_mount_options
184
+ assert_respond_to(@mnt, :options)
185
+ assert_kind_of(String, @mnt.options)
186
+ end
187
+
188
+ def test_opts_alias
189
+ assert_respond_to(@mnt, :opts)
190
+ assert_true(@mnt.method(:opts) == @mnt.method(:options))
191
+ end
192
+
193
+ def test_mount_time
194
+ assert_respond_to(@mnt, :mount_time)
195
+ if @@solaris
196
+ assert_kind_of(String, @mnt.mount_time)
197
+ else
198
+ assert_nil(@mnt.mount_time)
199
+ end
200
+ end
201
+
202
+ def test_mount_dump_frequency
203
+ omit_if(@@solaris, 'dump_frequency test skipped on Solaris')
204
+ assert_respond_to(@mnt, :dump_frequency)
205
+ assert_kind_of(Fixnum, @mnt.dump_frequency)
206
+ end
207
+
208
+ def test_freq_alias
209
+ assert_respond_to(@mnt, :freq)
210
+ assert_true(@mnt.method(:freq) == @mnt.method(:dump_frequency))
211
+ end
212
+
213
+ def test_mount_pass_number
214
+ omit_if(@@solaris, 'pass_number test skipped on Solaris')
215
+ assert_respond_to(@mnt, :pass_number)
216
+ assert_kind_of(Fixnum, @mnt.pass_number)
217
+ end
218
+
219
+ def test_passno_alias
220
+ assert_respond_to(@mnt, :passno)
221
+ assert_true(@mnt.method(:passno) == @mnt.method(:pass_number))
222
+ end
223
+
224
+ def teardown
225
+ @dir = nil
226
+ @stat = nil
227
+ @array = nil
228
+ end
229
+
230
+ def self.shutdown
231
+ @@solaris = nil
232
+ @@linux = nil
233
+ end
234
+ end
@@ -0,0 +1,192 @@
1
+ ####################################################################
2
+ # tc_windows.rb
3
+ #
4
+ # Test case for the Sys::Filesystem.stat method and related stuff.
5
+ # This should be run via the 'rake test' task.
6
+ ####################################################################
7
+ require 'rubygems'
8
+ gem 'test-unit'
9
+
10
+ require 'test/unit'
11
+ require 'sys/filesystem'
12
+ require 'rbconfig'
13
+ include Sys
14
+
15
+ class TC_Sys_Filesystem_Windows < Test::Unit::TestCase
16
+ def setup
17
+ @dir = '/'
18
+ @stat = Filesystem.stat(@dir)
19
+ @mount = Filesystem.mounts[0]
20
+ @size = 58720256
21
+ @array = []
22
+ end
23
+
24
+ def test_version
25
+ assert_equal('0.2.0', Filesystem::VERSION)
26
+ end
27
+
28
+ def test_stat_path
29
+ assert_respond_to(@stat, :path)
30
+ assert_equal("/", @stat.path)
31
+ end
32
+
33
+ def test_stat_block_size
34
+ assert_respond_to(@stat, :block_size)
35
+ assert_kind_of(Fixnum, @stat.block_size)
36
+ end
37
+
38
+ def test_stat_fragment_size
39
+ assert_respond_to(@stat, :fragment_size)
40
+ assert_nil(@stat.fragment_size)
41
+ end
42
+
43
+ def test_stat_blocks
44
+ assert_respond_to(@stat, :blocks)
45
+ assert_kind_of(Fixnum, @stat.blocks)
46
+ end
47
+
48
+ def test_stat_blocks_free
49
+ assert_respond_to(@stat, :blocks_free)
50
+ assert_kind_of(Fixnum, @stat.blocks_free)
51
+ end
52
+
53
+ def test_stat_blocks_available
54
+ assert_respond_to(@stat, :blocks_available)
55
+ assert_kind_of(Fixnum, @stat.blocks_available)
56
+ end
57
+
58
+ def test_stat_files
59
+ assert_respond_to(@stat, :files)
60
+ assert_respond_to(@stat, :inodes) # Alias
61
+ assert_nil(@stat.files)
62
+ end
63
+
64
+ def test_stat_files_free
65
+ assert_respond_to(@stat, :files_free)
66
+ assert_respond_to(@stat, :inodes_free) # Alias
67
+ assert_nil(@stat.files_free)
68
+ end
69
+
70
+ def test_stat_files_available
71
+ assert_respond_to(@stat, :files_available)
72
+ assert_respond_to(@stat, :inodes_available) # Alias
73
+ assert_nil(@stat.files_available)
74
+ end
75
+
76
+ def test_stat_filesystem_id
77
+ assert_respond_to(@stat, :filesystem_id)
78
+ assert_kind_of(Integer, @stat.filesystem_id)
79
+ end
80
+
81
+ def test_stat_flags
82
+ assert_respond_to(@stat, :flags)
83
+ assert_kind_of(Fixnum, @stat.flags)
84
+ end
85
+
86
+ def test_stat_name_max
87
+ assert_respond_to(@stat, :name_max)
88
+ assert_kind_of(Fixnum, @stat.name_max)
89
+ end
90
+
91
+ def test_stat_base_type
92
+ assert_respond_to(@stat, :base_type)
93
+ assert_kind_of(String, @stat.base_type)
94
+ end
95
+
96
+ def test_constants
97
+ assert_not_nil(Filesystem::CASE_SENSITIVE_SEARCH)
98
+ assert_not_nil(Filesystem::CASE_PRESERVED_NAMES)
99
+ assert_not_nil(Filesystem::UNICODE_ON_DISK)
100
+ assert_not_nil(Filesystem::PERSISTENT_ACLS)
101
+ assert_not_nil(Filesystem::FILE_COMPRESSION)
102
+ assert_not_nil(Filesystem::VOLUME_QUOTAS)
103
+ assert_not_nil(Filesystem::SUPPORTS_SPARSE_FILES)
104
+ assert_not_nil(Filesystem::SUPPORTS_REPARSE_POINTS)
105
+ assert_not_nil(Filesystem::SUPPORTS_REMOTE_STORAGE)
106
+ assert_not_nil(Filesystem::VOLUME_IS_COMPRESSED)
107
+ assert_not_nil(Filesystem::SUPPORTS_OBJECT_IDS)
108
+ assert_not_nil(Filesystem::SUPPORTS_ENCRYPTION)
109
+ assert_not_nil(Filesystem::NAMED_STREAMS)
110
+ assert_not_nil(Filesystem::READ_ONLY_VOLUME)
111
+ end
112
+
113
+ def test_stat_expected_errors
114
+ assert_raises(ArgumentError){ Filesystem.stat }
115
+ end
116
+
117
+ # Filesystem.mounts
118
+
119
+ def test_mounts_constructor_basic
120
+ assert_respond_to(Filesystem, :mounts)
121
+ assert_nothing_raised{ Filesystem.mounts }
122
+ assert_nothing_raised{ Filesystem.mounts{} }
123
+ end
124
+
125
+ def test_mounts
126
+ assert_kind_of(Array, Filesystem.mounts)
127
+ assert_kind_of(Filesystem::Mount, Filesystem.mounts[0])
128
+ end
129
+
130
+ def test_mounts_block_form
131
+ assert_nil(Filesystem.mounts{})
132
+ assert_nothing_raised{ Filesystem.mounts{ |mt| @array << mt }}
133
+ assert_kind_of(Filesystem::Mount, @array[0])
134
+ end
135
+
136
+ def test_mount_name
137
+ assert_respond_to(@mount, :name)
138
+ assert_kind_of(String, @mount.name)
139
+ end
140
+
141
+ def test_mount_time
142
+ assert_respond_to(@mount, :mount_time)
143
+ assert_kind_of(Time, @mount.mount_time)
144
+ end
145
+
146
+ def test_mount_type
147
+ assert_respond_to(@mount, :mount_type)
148
+ assert_kind_of(String, @mount.mount_type)
149
+ end
150
+
151
+ def test_mount_point
152
+ assert_respond_to(@mount, :mount_point)
153
+ assert_kind_of(String, @mount.mount_point)
154
+ end
155
+
156
+ def test_mount_options
157
+ assert_respond_to(@mount, :options)
158
+ assert_kind_of(String, @mount.options)
159
+ end
160
+
161
+ def test_pass_number
162
+ assert_respond_to(@mount, :pass_number)
163
+ assert_nil(@mount.pass_number)
164
+ end
165
+
166
+ def test_frequency
167
+ assert_respond_to(@mount, :frequency)
168
+ assert_nil(@mount.frequency)
169
+ end
170
+
171
+ def test_mounts_expected_errors
172
+ assert_raise(ArgumentError){ Filesystem.mounts("C:\\") }
173
+ end
174
+
175
+ def test_fixnum_methods
176
+ assert_respond_to(@size, :to_kb)
177
+ assert_respond_to(@size, :to_mb)
178
+ assert_respond_to(@size, :to_gb)
179
+
180
+ assert_equal(57344, @size.to_kb)
181
+ assert_equal(56, @size.to_mb)
182
+ assert_equal(0, @size.to_gb)
183
+ end
184
+
185
+ def teardown
186
+ @array = nil
187
+ @dir = nil
188
+ @stat = nil
189
+ @size = nil
190
+ @mount = nil
191
+ end
192
+ end
metadata CHANGED
@@ -1,57 +1,67 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.2
3
- specification_version: 1
4
2
  name: sys-filesystem
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.1.1
7
- date: 2007-03-28 00:00:00 -06:00
8
- summary: A Ruby interface for getting file system information.
9
- require_paths:
10
- - lib
11
- email: djberg96@gmail.com
12
- homepage: http://www.rubyforge.org/projects/sysutils
13
- rubyforge_project: sysutils
14
- description: A Ruby interface for getting file system information.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.8.0
24
- version:
4
+ version: 0.2.0
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Daniel J. Berger
31
- files:
32
- - test/tc_filesystem.rb
33
- - test/tc_unix.rb
34
- - test/tc_windows.rb
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-12-13 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: A Ruby interface for getting file system information.
17
+ email: djberg96@gmail.com
18
+ executables: []
19
+
20
+ extensions:
21
+ - ext/extconf.rb
22
+ extra_rdoc_files:
35
23
  - CHANGES
24
+ - README
25
+ - MANIFEST
26
+ - ext/sys/filesystem.c
27
+ files:
28
+ - doc/sys-filesystem.txt
29
+ - examples/example_stat.rb
30
+ - test/test_sys_filesystem_unix.rb
31
+ - test/test_sys_filesystem.rb
32
+ - test/test_sys_filesystem_windows.rb
36
33
  - MANIFEST
37
34
  - README
35
+ - CHANGES
38
36
  - Rakefile
39
37
  - ext/extconf.rb
40
- - ext/filesystem.c
41
- test_files:
42
- - test/tc_filesystem.rb
38
+ - ext/sys
39
+ - ext/sys/filesystem.c
40
+ has_rdoc: true
41
+ homepage: http://www.rubyforge.org/projects/sysutils
42
+ post_install_message:
43
43
  rdoc_options: []
44
44
 
45
- extra_rdoc_files:
46
- - CHANGES
47
- - README
48
- - MANIFEST
49
- - ext/filesystem.c
50
- executables: []
51
-
52
- extensions:
53
- - ext/extconf.rb
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: 1.8.0
52
+ version:
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: "0"
58
+ version:
54
59
  requirements: []
55
60
 
56
- dependencies: []
57
-
61
+ rubyforge_project: sysutils
62
+ rubygems_version: 1.3.1
63
+ signing_key:
64
+ specification_version: 2
65
+ summary: A Ruby interface for getting file system information.
66
+ test_files:
67
+ - test/test_sys_filesystem.rb
@@ -1,7 +0,0 @@
1
- $LOAD_PATH.unshift File.dirname(File.expand_path(__FILE__))
2
-
3
- if RUBY_PLATFORM.match('mswin')
4
- require 'tc_windows'
5
- else
6
- require 'tc_unix'
7
- end
data/test/tc_unix.rb DELETED
@@ -1,118 +0,0 @@
1
- ####################################################################
2
- # tc_unix.rb
3
- #
4
- # Test case for the Sys::Filesystem.stat method and related stuff.
5
- # This test suite should be run via the 'rake test' task.
6
- ####################################################################
7
- require 'test/unit'
8
- require 'sys/filesystem'
9
- include Sys
10
-
11
- class TC_Filesystem_Unix < Test::Unit::TestCase
12
- def setup
13
- @dir = "/"
14
- @stat = Filesystem.stat(@dir)
15
- @size = 58720256
16
- end
17
-
18
- def test_version
19
- assert_equal('0.1.1', Filesystem::VERSION)
20
- end
21
-
22
- def test_stat_path
23
- assert_respond_to(@stat, :path)
24
- assert_equal("/", @stat.path)
25
- end
26
-
27
- def test_stat_block_size
28
- assert_respond_to(@stat, :block_size)
29
- assert_kind_of(Fixnum, @stat.block_size)
30
- end
31
-
32
- def test_stat_fragment_size
33
- assert_respond_to(@stat, :fragment_size)
34
- assert_kind_of(Fixnum, @stat.fragment_size)
35
- end
36
-
37
- def test_stat_blocks
38
- assert_respond_to(@stat, :blocks)
39
- assert_kind_of(Fixnum, @stat.blocks)
40
- end
41
-
42
- def test_stat_blocks_free
43
- assert_respond_to(@stat, :blocks_free)
44
- assert_kind_of(Fixnum, @stat.blocks_free)
45
- end
46
-
47
- def test_stat_blocks_available
48
- assert_respond_to(@stat, :blocks_available)
49
- assert_kind_of(Fixnum, @stat.blocks_available)
50
- end
51
-
52
- def test_stat_files
53
- assert_respond_to(@stat, :files)
54
- assert_respond_to(@stat, :inodes) # Alias
55
- assert_kind_of(Fixnum, @stat.files)
56
- end
57
-
58
- def test_stat_files_free
59
- assert_respond_to(@stat, :files_free)
60
- assert_respond_to(@stat, :inodes_free) # Alias
61
- assert_kind_of(Fixnum, @stat.files_free)
62
- end
63
-
64
- def test_stat_files_available
65
- assert_respond_to(@stat, :files_available)
66
- assert_respond_to(@stat, :inodes_available) # Alias
67
- assert_kind_of(Fixnum, @stat.files_available)
68
- end
69
-
70
- def test_stat_filesystem_id
71
- assert_respond_to(@stat, :filesystem_id)
72
- assert_kind_of(Fixnum, @stat.filesystem_id)
73
- end
74
-
75
- def test_stat_flags
76
- assert_respond_to(@stat, :flags)
77
- assert_kind_of(Fixnum, @stat.flags)
78
- end
79
-
80
- def test_stat_name_max
81
- assert_respond_to(@stat, :name_max)
82
- assert_kind_of(Fixnum, @stat.name_max)
83
- end
84
-
85
- unless RUBY_PLATFORM =~ /linux|darwin/i
86
- def test_stat_base_type
87
- assert_respond_to(@stat, :base_type)
88
- assert_kind_of(String, @stat.base_type)
89
- end
90
- end
91
-
92
- def test_stat_constants
93
- assert_not_nil(Filesystem::Stat::RDONLY)
94
- assert_not_nil(Filesystem::Stat::NOSUID)
95
- unless RUBY_PLATFORM =~ /linux|darwin/i
96
- assert_not_nil(Filesystem::Stat::NOTRUNC)
97
- end
98
- end
99
-
100
- def test_stat_expected_errors
101
- assert_raises(ArgumentError){ Filesystem.stat }
102
- end
103
-
104
- def test_fixnum_methods
105
- assert_respond_to(@size, :to_kb)
106
- assert_respond_to(@size, :to_mb)
107
- assert_respond_to(@size, :to_gb)
108
-
109
- assert_equal(57344, @size.to_kb)
110
- assert_equal(56, @size.to_mb)
111
- assert_equal(0, @size.to_gb)
112
- end
113
-
114
- def teardown
115
- @dir = nil
116
- @stat = nil
117
- end
118
- end
data/test/tc_windows.rb DELETED
@@ -1,127 +0,0 @@
1
- ####################################################################
2
- # tc_windows.rb
3
- #
4
- # Test case for the Sys::Filesystem.stat method and related stuff.
5
- # This should be run via the 'rake test' task.
6
- ####################################################################
7
- require 'test/unit'
8
- require 'sys/filesystem'
9
- include Sys
10
-
11
- class TC_Filesystem_Unix < Test::Unit::TestCase
12
- def setup
13
- @dir = "/"
14
- @stat = Filesystem.stat(@dir)
15
- @size = 58720256
16
- end
17
-
18
- def test_version
19
- assert_equal('0.1.1', Filesystem::VERSION)
20
- end
21
-
22
- def test_stat_path
23
- assert_respond_to(@stat, :path)
24
- assert_equal("/", @stat.path)
25
- end
26
-
27
- def test_stat_block_size
28
- assert_respond_to(@stat, :block_size)
29
- assert_kind_of(Fixnum, @stat.block_size)
30
- end
31
-
32
- def test_stat_fragment_size
33
- assert_respond_to(@stat, :fragment_size)
34
- assert_nil(@stat.fragment_size)
35
- end
36
-
37
- def test_stat_blocks
38
- assert_respond_to(@stat, :blocks)
39
- assert_kind_of(Fixnum, @stat.blocks)
40
- end
41
-
42
- def test_stat_blocks_free
43
- assert_respond_to(@stat, :blocks_free)
44
- assert_kind_of(Fixnum, @stat.blocks_free)
45
- end
46
-
47
- def test_stat_blocks_available
48
- assert_respond_to(@stat, :blocks_available)
49
- assert_kind_of(Fixnum, @stat.blocks_available)
50
- end
51
-
52
- def test_stat_files
53
- assert_respond_to(@stat, :files)
54
- assert_respond_to(@stat, :inodes) # Alias
55
- assert_nil(@stat.files)
56
- end
57
-
58
- def test_stat_files_free
59
- assert_respond_to(@stat, :files_free)
60
- assert_respond_to(@stat, :inodes_free) # Alias
61
- assert_nil(@stat.files_free)
62
- end
63
-
64
- def test_stat_files_available
65
- assert_respond_to(@stat, :files_available)
66
- assert_respond_to(@stat, :inodes_available) # Alias
67
- assert_nil(@stat.files_available)
68
- end
69
-
70
- def test_stat_filesystem_id
71
- assert_respond_to(@stat, :filesystem_id)
72
- assert_kind_of(Integer, @stat.filesystem_id)
73
- end
74
-
75
- def test_stat_flags
76
- assert_respond_to(@stat, :flags)
77
- assert_kind_of(Fixnum, @stat.flags)
78
- end
79
-
80
- def test_stat_name_max
81
- assert_respond_to(@stat, :name_max)
82
- assert_kind_of(Fixnum, @stat.name_max)
83
- end
84
-
85
- unless RUBY_PLATFORM.match('linux')
86
- def test_stat_base_type
87
- assert_respond_to(@stat, :base_type)
88
- assert_kind_of(String, @stat.base_type)
89
- end
90
- end
91
-
92
- def test_stat_constants
93
- assert_not_nil(Filesystem::Stat::CASE_SENSITIVE_SEARCH)
94
- assert_not_nil(Filesystem::Stat::CASE_PRESERVED_NAMES)
95
- assert_not_nil(Filesystem::Stat::UNICODE_ON_DISK)
96
- assert_not_nil(Filesystem::Stat::PERSISTENT_ACLS)
97
- assert_not_nil(Filesystem::Stat::FILE_COMPRESSION)
98
- assert_not_nil(Filesystem::Stat::VOLUME_QUOTAS)
99
- assert_not_nil(Filesystem::Stat::SUPPORTS_SPARSE_FILES)
100
- assert_not_nil(Filesystem::Stat::SUPPORTS_REPARSE_POINTS)
101
- assert_not_nil(Filesystem::Stat::SUPPORTS_REMOTE_STORAGE)
102
- assert_not_nil(Filesystem::Stat::VOLUME_IS_COMPRESSED)
103
- assert_not_nil(Filesystem::Stat::SUPPORTS_OBJECT_IDS)
104
- assert_not_nil(Filesystem::Stat::SUPPORTS_ENCRYPTION)
105
- assert_not_nil(Filesystem::Stat::NAMED_STREAMS)
106
- assert_not_nil(Filesystem::Stat::READ_ONLY_VOLUME)
107
- end
108
-
109
- def test_stat_expected_errors
110
- assert_raises(ArgumentError){ Filesystem.stat }
111
- end
112
-
113
- def test_fixnum_methods
114
- assert_respond_to(@size, :to_kb)
115
- assert_respond_to(@size, :to_mb)
116
- assert_respond_to(@size, :to_gb)
117
-
118
- assert_equal(57344, @size.to_kb)
119
- assert_equal(56, @size.to_mb)
120
- assert_equal(0, @size.to_gb)
121
- end
122
-
123
- def teardown
124
- @dir = nil
125
- @stat = nil
126
- end
127
- end