sys-filesystem 1.1.6 → 1.4.3

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.
data/README DELETED
@@ -1,80 +0,0 @@
1
- = Description
2
- A Ruby interface for getting file system information.
3
-
4
- = Installation
5
- gem install sys-filesystem
6
-
7
- = Synopsis
8
- require 'sys/filesystem'
9
- include Sys
10
-
11
- # Display information about a particular filesystem.
12
- p Filesystem.stat('/')
13
-
14
- # Sample output
15
-
16
- #<Sys::Filesystem::Stat:0x517440
17
- @base_type = "ufs",
18
- @flags = 4,
19
- @files_available = 3817457,
20
- @block_size = 8192,
21
- @blocks_available = 19957633,
22
- @blocks = 34349612,
23
- @name_max = 255,
24
- @path = "/",
25
- @filesystem_id = 35651592,
26
- @files = 4135040,
27
- @fragment_size = 1024,
28
- @files_free = 3817457,
29
- @blocks_free = 20301129
30
- >
31
-
32
- # Describe all mount points on the system
33
- Filesystem.mounts{ |mount| p mount }
34
-
35
- # Find the mount point of any particular file
36
- puts Filesystem.mount_point('/home/djberge/some_file.txt') => '/home'
37
-
38
- = Notes
39
- This is a pure Ruby implementation that uses FFI. This means it should work
40
- with JRuby, too.
41
-
42
- = Sample code
43
- Run 'rake example' if you want to see a basic sample run. The actual code
44
- is 'example_stat.rb' in the 'examples' directory. Modify it as you see fit.
45
-
46
- = Known Bugs
47
- None that I'm aware of. Please report bugs on the project page at
48
- https://github.com/djberg96/sys-filesystem
49
-
50
- = Future Plans
51
- Add better 64-bit support for Linux and BSD.
52
- Other suggestions welcome.
53
-
54
- = Acknowledgements
55
- Mike Hall, for ideas and code that I borrowed from his 'filesystem' library.
56
-
57
- Park Heesob, for implementation and API ideas for the MS Windows version.
58
-
59
- Nobuyoshi Miyokawa, for adding the original FreeBSD and OS X support.
60
-
61
- = License
62
- Artistic 2.0
63
-
64
- == Contributions
65
- Although this library is free, please consider having your company
66
- setup a gittip if used by your company professionally.
67
-
68
- http://www.gittip.com/djberg96/
69
-
70
- = Copyright
71
- (C) 2003-2016 Daniel J. Berger
72
- All Rights Reserved
73
-
74
- = Warranty
75
- This library is provided "as is" and without any express or
76
- implied warranties, including, without limitation, the implied
77
- warranties of merchantability and fitness for a particular purpose.
78
-
79
- = Author
80
- Daniel J. Berger
@@ -1,7 +0,0 @@
1
- $LOAD_PATH.unshift File.dirname(File.expand_path(__FILE__))
2
-
3
- if File::ALT_SEPARATOR
4
- require 'test_sys_filesystem_windows'
5
- else
6
- require 'test_sys_filesystem_unix'
7
- end
@@ -1,278 +0,0 @@
1
- ####################################################################
2
- # test_sys_filesystem_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_Sys_Filesystem_Unix < Test::Unit::TestCase
12
- def self.startup
13
- @@solaris = RbConfig::CONFIG['host_os'] =~ /solaris/i
14
- @@linux = RbConfig::CONFIG['host_os'] =~ /linux/i
15
- @@freebsd = RbConfig::CONFIG['host_os'] =~ /freebsd/i
16
- @@darwin = RbConfig::CONFIG['host_os'] =~ /darwin/i
17
- end
18
-
19
- def setup
20
- @dir = "/"
21
- @stat = Filesystem.stat(@dir)
22
- @mnt = Filesystem.mounts[0]
23
- @size = 58720256
24
- @array = []
25
- end
26
-
27
- def test_version
28
- assert_equal('1.1.6', Filesystem::VERSION)
29
- end
30
-
31
- def test_stat_path
32
- assert_respond_to(@stat, :path)
33
- assert_equal("/", @stat.path)
34
- end
35
-
36
- def test_stat_block_size
37
- assert_respond_to(@stat, :block_size)
38
- assert_kind_of(Fixnum, @stat.block_size)
39
- end
40
-
41
- def test_block_size_is_a_plausible_value
42
- assert_true(@stat.block_size >= 1024)
43
- assert_true(@stat.block_size <= 16384)
44
- end
45
-
46
- def test_stat_fragment_size
47
- assert_respond_to(@stat, :fragment_size)
48
- assert_kind_of(Fixnum, @stat.fragment_size)
49
- end
50
-
51
- def test_stat_blocks
52
- assert_respond_to(@stat, :blocks)
53
- assert_kind_of(Fixnum, @stat.blocks)
54
- end
55
-
56
- def test_stat_blocks_free
57
- assert_respond_to(@stat, :blocks_free)
58
- assert_kind_of(Fixnum, @stat.blocks_free)
59
- end
60
-
61
- def test_stat_blocks_available
62
- assert_respond_to(@stat, :blocks_available)
63
- assert_kind_of(Fixnum, @stat.blocks_available)
64
- end
65
-
66
- def test_stat_files
67
- assert_respond_to(@stat, :files)
68
- assert_kind_of(Fixnum, @stat.files)
69
- end
70
-
71
- def test_inodes_alias
72
- assert_respond_to(@stat, :inodes)
73
- assert_true(@stat.method(:inodes) == @stat.method(:files))
74
- end
75
-
76
- def test_stat_files_free
77
- assert_respond_to(@stat, :files_free)
78
- assert_kind_of(Fixnum, @stat.files_free)
79
- end
80
-
81
- def test_stat_inodes_free_alias
82
- assert_respond_to(@stat, :inodes_free)
83
- assert_true(@stat.method(:inodes_free) == @stat.method(:files_free))
84
- end
85
-
86
- def test_stat_files_available
87
- assert_respond_to(@stat, :files_available)
88
- assert_kind_of(Fixnum, @stat.files_available)
89
- end
90
-
91
- def test_stat_inodes_available_alias
92
- assert_respond_to(@stat, :inodes_available)
93
- assert_true(@stat.method(:inodes_available) == @stat.method(:files_available))
94
- end
95
-
96
- def test_stat_filesystem_id
97
- assert_respond_to(@stat, :filesystem_id)
98
- assert_kind_of(Integer, @stat.filesystem_id)
99
- end
100
-
101
- def test_stat_flags
102
- assert_respond_to(@stat, :flags)
103
- assert_kind_of(Fixnum, @stat.flags)
104
- end
105
-
106
- def test_stat_name_max
107
- assert_respond_to(@stat, :name_max)
108
- assert_kind_of(Fixnum, @stat.name_max)
109
- end
110
-
111
- def test_stat_base_type
112
- omit_unless(@@solaris, "base_type test skipped except on Solaris")
113
-
114
- assert_respond_to(@stat, :base_type)
115
- assert_kind_of(String, @stat.base_type)
116
- end
117
-
118
- def test_stat_constants
119
- assert_not_nil(Filesystem::Stat::RDONLY)
120
- assert_not_nil(Filesystem::Stat::NOSUID)
121
-
122
- omit_unless(@@solaris, "NOTRUNC test skipped except on Solaris")
123
-
124
- assert_not_nil(Filesystem::Stat::NOTRUNC)
125
- end
126
-
127
- def test_stat_bytes_total
128
- assert_respond_to(@stat, :bytes_total)
129
- assert_kind_of(Numeric, @stat.bytes_total)
130
- end
131
-
132
- def test_stat_bytes_free
133
- assert_respond_to(@stat, :bytes_free)
134
- assert_kind_of(Numeric, @stat.bytes_free)
135
- end
136
-
137
- def test_stat_bytes_used
138
- assert_respond_to(@stat, :bytes_used)
139
- assert_kind_of(Numeric, @stat.bytes_used)
140
- end
141
-
142
- def test_stat_percent_used
143
- assert_respond_to(@stat, :percent_used)
144
- assert_kind_of(Float, @stat.percent_used)
145
- end
146
-
147
- def test_stat_expected_errors
148
- assert_raises(ArgumentError){ Filesystem.stat }
149
- end
150
-
151
- def test_numeric_methods_basic
152
- assert_respond_to(@size, :to_kb)
153
- assert_respond_to(@size, :to_mb)
154
- assert_respond_to(@size, :to_gb)
155
- assert_respond_to(@size, :to_tb)
156
- end
157
-
158
- def test_to_kb
159
- assert_equal(57344, @size.to_kb)
160
- end
161
-
162
- def test_to_mb
163
- assert_equal(56, @size.to_mb)
164
- end
165
-
166
- def test_to_gb
167
- assert_equal(0, @size.to_gb)
168
- end
169
-
170
- # Filesystem::Mount tests
171
-
172
- def test_mounts_with_no_block
173
- assert_nothing_raised{ @array = Filesystem.mounts }
174
- assert_kind_of(Filesystem::Mount, @array[0])
175
- end
176
-
177
- def test_mounts_with_block
178
- assert_nothing_raised{ Filesystem.mounts{ |m| @array << m } }
179
- assert_kind_of(Filesystem::Mount, @array[0])
180
- end
181
-
182
- def test_mounts_high_iteration
183
- assert_nothing_raised{ 1000.times{ @array = Filesystem.mounts } }
184
- end
185
-
186
- def test_mount_name
187
- assert_respond_to(@mnt, :name)
188
- assert_kind_of(String, @mnt.name)
189
- end
190
-
191
- def test_fsname_alias
192
- assert_respond_to(@mnt, :fsname)
193
- assert_true(@mnt.method(:fsname) == @mnt.method(:name))
194
- end
195
-
196
- def test_mount_point
197
- assert_respond_to(@mnt, :mount_point)
198
- assert_kind_of(String, @mnt.mount_point)
199
- end
200
-
201
- def test_dir_alias
202
- assert_respond_to(@mnt, :dir)
203
- assert_true(@mnt.method(:dir) == @mnt.method(:mount_point))
204
- end
205
-
206
- def test_mount_type
207
- assert_respond_to(@mnt, :mount_type)
208
- assert_kind_of(String, @mnt.mount_type)
209
- end
210
-
211
- def test_mount_options
212
- assert_respond_to(@mnt, :options)
213
- assert_kind_of(String, @mnt.options)
214
- end
215
-
216
- def test_opts_alias
217
- assert_respond_to(@mnt, :opts)
218
- assert_true(@mnt.method(:opts) == @mnt.method(:options))
219
- end
220
-
221
- def test_mount_time
222
- assert_respond_to(@mnt, :mount_time)
223
-
224
- if @@solaris
225
- assert_kind_of(Time, @mnt.mount_time)
226
- else
227
- assert_nil(@mnt.mount_time)
228
- end
229
- end
230
-
231
- def test_mount_dump_frequency
232
- msg = 'dump_frequency test skipped on this platform'
233
- omit_if(@@solaris || @@freebsd || @@darwin, msg)
234
- assert_respond_to(@mnt, :dump_frequency)
235
- assert_kind_of(Fixnum, @mnt.dump_frequency)
236
- end
237
-
238
- def test_freq_alias
239
- assert_respond_to(@mnt, :freq)
240
- assert_true(@mnt.method(:freq) == @mnt.method(:dump_frequency))
241
- end
242
-
243
- def test_mount_pass_number
244
- msg = 'pass_number test skipped on this platform'
245
- omit_if(@@solaris || @@freebsd || @@darwin, msg)
246
- assert_respond_to(@mnt, :pass_number)
247
- assert_kind_of(Fixnum, @mnt.pass_number)
248
- end
249
-
250
- def test_passno_alias
251
- assert_respond_to(@mnt, :passno)
252
- assert_true(@mnt.method(:passno) == @mnt.method(:pass_number))
253
- end
254
-
255
- def test_mount_point_singleton
256
- assert_respond_to(Filesystem, :mount_point)
257
- assert_nothing_raised{ Filesystem.mount_point(Dir.pwd) }
258
- assert_kind_of(String, Filesystem.mount_point(Dir.pwd))
259
- end
260
-
261
- def test_ffi_functions_are_private
262
- assert_false(Filesystem.methods.include?('statvfs'))
263
- assert_false(Filesystem.methods.include?('strerror'))
264
- end
265
-
266
- def teardown
267
- @dir = nil
268
- @stat = nil
269
- @array = nil
270
- end
271
-
272
- def self.shutdown
273
- @@solaris = nil
274
- @@linux = nil
275
- @@freebsd = nil
276
- @@darwin = nil
277
- end
278
- end
@@ -1,250 +0,0 @@
1
- ####################################################################
2
- # test_sys_filesystem_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
- require 'rbconfig'
10
- include Sys
11
-
12
- class TC_Sys_Filesystem_Windows < Test::Unit::TestCase
13
- def setup
14
- @dir = 'C:/'
15
- @stat = Filesystem.stat(@dir)
16
- @mount = Filesystem.mounts[0]
17
- @size = 58720256
18
- @array = []
19
- end
20
-
21
- test "version number is set to the expected value" do
22
- assert_equal('1.1.6', Filesystem::VERSION)
23
- end
24
-
25
- test "stat path works as expected" do
26
- assert_respond_to(@stat, :path)
27
- assert_equal("C:/", @stat.path)
28
- end
29
-
30
- test "stat block_size works as expected" do
31
- assert_respond_to(@stat, :block_size)
32
- assert_kind_of(Fixnum, @stat.block_size)
33
- end
34
-
35
- test "stat fragment_size works as expected" do
36
- assert_respond_to(@stat, :fragment_size)
37
- assert_nil(@stat.fragment_size)
38
- end
39
-
40
- test "stat blocks works as expected" do
41
- assert_respond_to(@stat, :blocks)
42
- assert_kind_of(Fixnum, @stat.blocks)
43
- end
44
-
45
- test "stat blocks_free works as expected" do
46
- assert_respond_to(@stat, :blocks_free)
47
- assert_kind_of(Fixnum, @stat.blocks_free)
48
- end
49
-
50
- test "stat blocks_available works as expected" do
51
- assert_respond_to(@stat, :blocks_available)
52
- assert_kind_of(Fixnum, @stat.blocks_available)
53
- end
54
-
55
- test "stat files works as expected" do
56
- assert_respond_to(@stat, :files)
57
- assert_nil(@stat.files)
58
- end
59
-
60
- test "stat inodes is an alias for files" do
61
- assert_alias_method(@stat, :inodes, :files)
62
- end
63
-
64
- test "stat files_free works as expected" do
65
- assert_respond_to(@stat, :files_free)
66
- assert_nil(@stat.files_free)
67
- end
68
-
69
- test "stat inodes_free is an alias for files_free" do
70
- assert_respond_to(@stat, :inodes_free)
71
- end
72
-
73
- test "stat files available works as expected" do
74
- assert_respond_to(@stat, :files_available)
75
- assert_nil(@stat.files_available)
76
- end
77
-
78
- test "stat inodes_available is an alias for files_available" do
79
- assert_alias_method(@stat, :inodes_available, :files_available)
80
- end
81
-
82
- test "stat filesystem_id works as expected" do
83
- assert_respond_to(@stat, :filesystem_id)
84
- assert_kind_of(Integer, @stat.filesystem_id)
85
- end
86
-
87
- test "stat flags works as expected" do
88
- assert_respond_to(@stat, :flags)
89
- assert_kind_of(Fixnum, @stat.flags)
90
- end
91
-
92
- test "stat name_max works as expected" do
93
- assert_respond_to(@stat, :name_max)
94
- assert_kind_of(Fixnum, @stat.name_max)
95
- end
96
-
97
- test "stat base_type works as expected" do
98
- assert_respond_to(@stat, :base_type)
99
- assert_kind_of(String, @stat.base_type)
100
- end
101
-
102
- test "stat bytes_total basic functionality" do
103
- assert_respond_to(@stat, :bytes_total)
104
- assert_kind_of(Numeric, @stat.bytes_total)
105
- end
106
-
107
- test "stat bytes_free basic functionality" do
108
- assert_respond_to(@stat, :bytes_free)
109
- assert_kind_of(Numeric, @stat.bytes_free)
110
- end
111
-
112
- test "stat bytes_used basic functionality" do
113
- assert_respond_to(@stat, :bytes_used)
114
- assert_kind_of(Numeric, @stat.bytes_used)
115
- end
116
-
117
- test "stat percent_used basic functionality" do
118
- assert_respond_to(@stat, :percent_used)
119
- assert_kind_of(Float, @stat.percent_used)
120
- end
121
-
122
- test "mount_point singleton method basic functionality" do
123
- assert_respond_to(Filesystem, :mount_point)
124
- assert_nothing_raised{ Filesystem.mount_point(Dir.pwd) }
125
- assert_kind_of(String, Filesystem.mount_point(Dir.pwd))
126
- end
127
-
128
- test "mount_point singleton method returns expected value" do
129
- assert_equal("C:\\", Filesystem.mount_point("C:\\Users\\foo"))
130
- assert_equal("\\\\foo\\bar", Filesystem.mount_point("//foo/bar/baz"))
131
- end
132
-
133
- test "filesystem constants are defined" do
134
- assert_not_nil(Filesystem::CASE_SENSITIVE_SEARCH)
135
- assert_not_nil(Filesystem::CASE_PRESERVED_NAMES)
136
- assert_not_nil(Filesystem::UNICODE_ON_DISK)
137
- assert_not_nil(Filesystem::PERSISTENT_ACLS)
138
- assert_not_nil(Filesystem::FILE_COMPRESSION)
139
- assert_not_nil(Filesystem::VOLUME_QUOTAS)
140
- assert_not_nil(Filesystem::SUPPORTS_SPARSE_FILES)
141
- assert_not_nil(Filesystem::SUPPORTS_REPARSE_POINTS)
142
- assert_not_nil(Filesystem::SUPPORTS_REMOTE_STORAGE)
143
- assert_not_nil(Filesystem::VOLUME_IS_COMPRESSED)
144
- assert_not_nil(Filesystem::SUPPORTS_OBJECT_IDS)
145
- assert_not_nil(Filesystem::SUPPORTS_ENCRYPTION)
146
- assert_not_nil(Filesystem::NAMED_STREAMS)
147
- assert_not_nil(Filesystem::READ_ONLY_VOLUME)
148
- end
149
-
150
- test "stat singleton method defaults to root path if proviced" do
151
- assert_nothing_raised{ Filesystem.stat("C://Program Files") }
152
- end
153
-
154
- test "stat singleton method requires a single argument" do
155
- assert_raise(ArgumentError){ Filesystem.stat }
156
- assert_raise(ArgumentError){ Filesystem.stat(Dir.pwd, Dir.pwd) }
157
- end
158
-
159
- test "stat singleton method raises an error if path is not found" do
160
- assert_raise(Errno::ESRCH){ Filesystem.stat("C://Bogus//Dir") }
161
- end
162
-
163
- # Filesystem.mounts
164
-
165
- test "mounts singleton method basic functionality" do
166
- assert_respond_to(Filesystem, :mounts)
167
- assert_nothing_raised{ Filesystem.mounts }
168
- assert_nothing_raised{ Filesystem.mounts{} }
169
- end
170
-
171
- test "mounts singleton method returns the expected value" do
172
- assert_kind_of(Array, Filesystem.mounts)
173
- assert_kind_of(Filesystem::Mount, Filesystem.mounts[0])
174
- end
175
-
176
- test "mounts singleton method works as expected when a block is provided" do
177
- assert_nil(Filesystem.mounts{})
178
- assert_nothing_raised{ Filesystem.mounts{ |mt| @array << mt }}
179
- assert_kind_of(Filesystem::Mount, @array[0])
180
- end
181
-
182
- test "mount name works as expected" do
183
- assert_respond_to(@mount, :name)
184
- assert_kind_of(String, @mount.name)
185
- end
186
-
187
- test "mount time works as expected" do
188
- assert_respond_to(@mount, :mount_time)
189
- assert_kind_of(Time, @mount.mount_time)
190
- end
191
-
192
- test "mount type works as expected" do
193
- assert_respond_to(@mount, :mount_type)
194
- assert_kind_of(String, @mount.mount_type)
195
- end
196
-
197
- test "mount point works as expected" do
198
- assert_respond_to(@mount, :mount_point)
199
- assert_kind_of(String, @mount.mount_point)
200
- end
201
-
202
- test "mount options works as expected" do
203
- assert_respond_to(@mount, :options)
204
- assert_kind_of(String, @mount.options)
205
- end
206
-
207
- test "mount pass_number works as expected" do
208
- assert_respond_to(@mount, :pass_number)
209
- assert_nil(@mount.pass_number)
210
- end
211
-
212
- test "mount frequency works as expected" do
213
- assert_respond_to(@mount, :frequency)
214
- assert_nil(@mount.frequency)
215
- end
216
-
217
- test "mounts singleton method does not accept any arguments" do
218
- assert_raise(ArgumentError){ Filesystem.mounts("C:\\") }
219
- end
220
-
221
- test "custom Fixnum#to_kb method works as expected" do
222
- assert_respond_to(@size, :to_kb)
223
- assert_equal(57344, @size.to_kb)
224
- end
225
-
226
- test "custom Fixnum#to_mb method works as expected" do
227
- assert_respond_to(@size, :to_mb)
228
- assert_equal(56, @size.to_mb)
229
- end
230
-
231
- test "custom Fixnum#to_gb method works as expected" do
232
- assert_respond_to(@size, :to_gb)
233
- assert_equal(0, @size.to_gb)
234
- end
235
-
236
- # FFI
237
-
238
- test "internal ffi functions are not public" do
239
- assert_false(Filesystem.methods.include?(:GetVolumeInformationA))
240
- assert_false(Filesystem.instance_methods.include?(:GetVolumeInformationA))
241
- end
242
-
243
- def teardown
244
- @array = nil
245
- @dir = nil
246
- @stat = nil
247
- @size = nil
248
- @mount = nil
249
- end
250
- end