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.
@@ -0,0 +1,348 @@
1
+ ####################################################################
2
+ # sys_filesystem_windows_spec.rb
3
+ #
4
+ # Specs for the Sys::Filesystem.stat method and related stuff.
5
+ # This should be run via the 'rake spec' task.
6
+ ####################################################################
7
+ require 'spec_helper'
8
+ require 'sys/filesystem'
9
+ require 'pathname'
10
+
11
+ RSpec.describe Sys::Filesystem, :windows => true do
12
+ let(:root) { 'C:/' }
13
+
14
+ before do
15
+ @stat = Sys::Filesystem.stat(root)
16
+ @size = 58720256
17
+ end
18
+
19
+ example "version number is set to the expected value" do
20
+ expect(Sys::Filesystem::VERSION).to eq('1.4.3')
21
+ expect(Sys::Filesystem::VERSION).to be_frozen
22
+ end
23
+
24
+ example "you cannot instantiate an instance" do
25
+ expect{ described_class.new }.to raise_error(NoMethodError)
26
+ end
27
+
28
+ example "stat path works as expected" do
29
+ expect(@stat).to respond_to(:path)
30
+ expect(@stat.path).to eq(root)
31
+ end
32
+
33
+ example "stat block_size works as expected" do
34
+ expect(@stat).to respond_to(:block_size)
35
+ expect(@stat.block_size).to be_kind_of(Numeric)
36
+ end
37
+
38
+ example "stat works with or without trailing slash on standard paths" do
39
+ expect(Sys::Filesystem.stat("C:/").path).to eq("C:/")
40
+ expect(Sys::Filesystem.stat("C:/Users").path).to eq("C:/Users")
41
+ expect(Sys::Filesystem.stat("C:/Users/").path).to eq("C:/Users/")
42
+ expect(Sys::Filesystem.stat("C:/Users/").path).to eq("C:/Users/")
43
+ end
44
+
45
+ example "stat works with or without trailing slash on UNC paths" do
46
+ expect(Sys::Filesystem.stat("//127.0.0.1/C$").path).to eq("//127.0.0.1/C$")
47
+ expect(Sys::Filesystem.stat("//127.0.0.1/C$/").path).to eq("//127.0.0.1/C$/")
48
+ expect(Sys::Filesystem.stat("\\\\127.0.0.1\\C$").path).to eq("\\\\127.0.0.1\\C$")
49
+ expect(Sys::Filesystem.stat("\\\\127.0.0.1\\C$\\").path).to eq("\\\\127.0.0.1\\C$\\")
50
+ end
51
+
52
+ example "stat fragment_size works as expected" do
53
+ expect(@stat).to respond_to(:fragment_size)
54
+ expect(@stat.fragment_size).to be_nil
55
+ end
56
+
57
+ example "stat blocks works as expected" do
58
+ expect(@stat).to respond_to(:blocks)
59
+ expect(@stat.blocks).to be_kind_of(Numeric)
60
+ end
61
+
62
+ example "stat blocks_free works as expected" do
63
+ expect(@stat).to respond_to(:blocks_free)
64
+ expect(@stat.blocks_free).to be_kind_of(Numeric)
65
+ end
66
+
67
+ example "stat blocks_available works as expected" do
68
+ expect(@stat).to respond_to(:blocks_available)
69
+ expect(@stat.blocks_available).to be_kind_of(Numeric)
70
+ end
71
+
72
+ example "block stats return expected relative values" do
73
+ expect(@stat.blocks >= @stat.blocks_free).to be true
74
+ expect(@stat.blocks_free >= @stat.blocks_available).to be true
75
+ end
76
+
77
+ example "stat files works as expected" do
78
+ expect(@stat).to respond_to(:files)
79
+ expect(@stat.files).to be_nil
80
+ end
81
+
82
+ example "stat inodes is an alias for files" do
83
+ expect(@stat.method(:inodes)).to eq(@stat.method(:files))
84
+ end
85
+
86
+ example "stat files_free works as expected" do
87
+ expect(@stat).to respond_to(:files_free)
88
+ expect(@stat.files_free).to be_nil
89
+ end
90
+
91
+ example "stat inodes_free is an alias for files_free" do
92
+ expect(@stat).to respond_to(:inodes_free)
93
+ end
94
+
95
+ example "stat files available works as expected" do
96
+ expect(@stat).to respond_to(:files_available)
97
+ expect(@stat.files_available).to be_nil
98
+ end
99
+
100
+ example "stat inodes_available is an alias for files_available" do
101
+ expect(@stat.method(:inodes_available)).to eq(@stat.method(:files_available))
102
+ end
103
+
104
+ example "stat filesystem_id works as expected" do
105
+ expect(@stat).to respond_to(:filesystem_id)
106
+ expect(@stat.filesystem_id).to be_kind_of(Integer)
107
+ end
108
+
109
+ example "stat flags works as expected" do
110
+ expect(@stat).to respond_to(:flags)
111
+ expect(@stat.flags).to be_kind_of(Numeric)
112
+ end
113
+
114
+ example "stat name_max works as expected" do
115
+ expect(@stat).to respond_to(:name_max)
116
+ expect(@stat.name_max).to be_kind_of(Numeric)
117
+ end
118
+
119
+ example "stat base_type works as expected" do
120
+ expect(@stat).to respond_to(:base_type)
121
+ expect(@stat.base_type).to be_kind_of(String)
122
+ end
123
+
124
+ example "stat bytes_total basic functionality" do
125
+ expect(@stat).to respond_to(:bytes_total)
126
+ expect(@stat.bytes_total).to be_kind_of(Numeric)
127
+ end
128
+
129
+ example "stat bytes_free basic functionality" do
130
+ expect(@stat).to respond_to(:bytes_free)
131
+ expect(@stat.bytes_free).to be_kind_of(Numeric)
132
+ expect(@stat.blocks_free * @stat.block_size).to eq(@stat.bytes_free)
133
+ end
134
+
135
+ example "stat bytes_available basic functionality" do
136
+ expect(@stat).to respond_to(:bytes_available)
137
+ expect(@stat.bytes_available).to be_kind_of(Numeric)
138
+ expect(@stat.blocks_available * @stat.block_size).to eq(@stat.bytes_available)
139
+ end
140
+
141
+ example "stat bytes_used basic functionality" do
142
+ expect(@stat).to respond_to(:bytes_used)
143
+ expect(@stat.bytes_used).to be_kind_of(Numeric)
144
+ end
145
+
146
+ example "stat percent_used basic functionality" do
147
+ expect(@stat).to respond_to(:percent_used)
148
+ expect(@stat.percent_used).to be_kind_of(Float)
149
+ end
150
+
151
+ example "case_insensitive returns expected result" do
152
+ expect(@stat).to respond_to(:case_insensitive?)
153
+ expect(@stat.case_insensitive?).to eq(true)
154
+ end
155
+
156
+ context "Filesystem.stat(Pathname)" do
157
+ before do
158
+ @stat_pathname = Sys::Filesystem.stat(Pathname.new(root))
159
+ end
160
+
161
+ example "stat with Pathname argument works as expected" do
162
+ expect(@stat_pathname.class).to eq(@stat.class)
163
+ expect(@stat_pathname.path).to eq(@stat.path)
164
+ expect(@stat_pathname.block_size).to eq(@stat.block_size)
165
+ expect(@stat_pathname.fragment_size).to eq(@stat.fragment_size)
166
+ expect(@stat_pathname.blocks).to eq(@stat.blocks)
167
+ expect(@stat_pathname.blocks_free).to eq(@stat.blocks_free)
168
+ expect(@stat_pathname.blocks_available).to eq(@stat.blocks_available)
169
+ expect(@stat_pathname.files).to eq(@stat.files)
170
+ expect(@stat_pathname.files_free).to eq(@stat.files_free)
171
+ expect(@stat_pathname.files_available).to eq(@stat.files_available)
172
+ expect(@stat_pathname.filesystem_id).to eq(@stat.filesystem_id)
173
+ expect(@stat_pathname.flags).to eq(@stat.flags)
174
+ expect(@stat_pathname.name_max).to eq(@stat.name_max)
175
+ expect(@stat_pathname.base_type).to eq(@stat.base_type)
176
+ end
177
+ end
178
+
179
+ context "Filesystem.stat(Dir)" do
180
+ before do
181
+ @stat_dir = Dir.open(root){ |dir| Sys::Filesystem.stat(dir) }
182
+ end
183
+
184
+ example "stat with Dir argument works as expected" do
185
+ expect( @stat_dir.class).to eq(@stat.class)
186
+ expect( @stat_dir.path).to eq(@stat.path)
187
+ expect( @stat_dir.block_size).to eq(@stat.block_size)
188
+ expect( @stat_dir.fragment_size).to eq(@stat.fragment_size)
189
+ expect( @stat_dir.blocks).to eq(@stat.blocks)
190
+ expect( @stat_dir.blocks_free).to eq(@stat.blocks_free)
191
+ expect( @stat_dir.blocks_available).to eq(@stat.blocks_available)
192
+ expect( @stat_dir.files).to eq(@stat.files)
193
+ expect( @stat_dir.files_free).to eq(@stat.files_free)
194
+ expect( @stat_dir.files_available).to eq(@stat.files_available)
195
+ expect( @stat_dir.filesystem_id).to eq(@stat.filesystem_id)
196
+ expect( @stat_dir.flags).to eq(@stat.flags)
197
+ expect( @stat_dir.name_max).to eq(@stat.name_max)
198
+ expect( @stat_dir.base_type).to eq(@stat.base_type)
199
+ end
200
+ end
201
+
202
+ context "mount_point" do
203
+ example "mount_point singleton method basic functionality" do
204
+ expect(Sys::Filesystem).to respond_to(:mount_point)
205
+ expect{ Sys::Filesystem.mount_point(Dir.pwd) }.not_to raise_error
206
+ expect(Sys::Filesystem.mount_point(Dir.pwd)).to be_kind_of(String)
207
+ end
208
+
209
+ example "mount_point singleton method returns expected value" do
210
+ expect(Sys::Filesystem.mount_point("C:\\Users\\foo")).to eq("C:\\")
211
+ expect(Sys::Filesystem.mount_point("//foo/bar/baz")).to eq("\\\\foo\\bar")
212
+ end
213
+
214
+ example "mount_point works with Pathname object" do
215
+ expect{ Sys::Filesystem.mount_point(Pathname.new("C:/Users/foo")) }.not_to raise_error
216
+ expect(Sys::Filesystem.mount_point("C:\\Users\\foo")).to eq("C:\\")
217
+ expect(Sys::Filesystem.mount_point("//foo/bar/baz")).to eq("\\\\foo\\bar")
218
+ end
219
+ end
220
+
221
+ example "filesystem constants are defined" do
222
+ expect(Sys::Filesystem::CASE_SENSITIVE_SEARCH).not_to be_nil
223
+ expect(Sys::Filesystem::CASE_PRESERVED_NAMES).not_to be_nil
224
+ expect(Sys::Filesystem::UNICODE_ON_DISK).not_to be_nil
225
+ expect(Sys::Filesystem::PERSISTENT_ACLS).not_to be_nil
226
+ expect(Sys::Filesystem::FILE_COMPRESSION).not_to be_nil
227
+ expect(Sys::Filesystem::VOLUME_QUOTAS).not_to be_nil
228
+ expect(Sys::Filesystem::SUPPORTS_SPARSE_FILES).not_to be_nil
229
+ expect(Sys::Filesystem::SUPPORTS_REPARSE_POINTS).not_to be_nil
230
+ expect(Sys::Filesystem::SUPPORTS_REMOTE_STORAGE).not_to be_nil
231
+ expect(Sys::Filesystem::VOLUME_IS_COMPRESSED).not_to be_nil
232
+ expect(Sys::Filesystem::SUPPORTS_OBJECT_IDS).not_to be_nil
233
+ expect(Sys::Filesystem::SUPPORTS_ENCRYPTION).not_to be_nil
234
+ expect(Sys::Filesystem::NAMED_STREAMS).not_to be_nil
235
+ expect(Sys::Filesystem::READ_ONLY_VOLUME).not_to be_nil
236
+ end
237
+
238
+ example "stat singleton method defaults to root path if proviced" do
239
+ expect{ Sys::Filesystem.stat("C://Program Files") }.not_to raise_error
240
+ end
241
+
242
+ example "stat singleton method accepts a Pathname object" do
243
+ expect{ Sys::Filesystem.stat(Pathname.new("C://Program Files")) }.not_to raise_error
244
+ end
245
+
246
+ example "stat singleton method requires a single argument" do
247
+ expect{ Sys::Filesystem.stat }.to raise_error(ArgumentError)
248
+ expect{ Sys::Filesystem.stat(Dir.pwd, Dir.pwd) }.to raise_error(ArgumentError)
249
+ end
250
+
251
+ example "stat singleton method raises an error if path is not found" do
252
+ expect{ Sys::Filesystem.stat("C://Bogus//Dir") }.to raise_error(Errno::ESRCH)
253
+ end
254
+
255
+ context "Filesystem::Mount" do
256
+ let(:mount){ Sys::Filesystem.mounts[0] }
257
+
258
+ before do
259
+ @array = []
260
+ end
261
+
262
+ example "mount singleton method exists" do
263
+ expect(Sys::Filesystem).to respond_to(:mount)
264
+ end
265
+
266
+ example "umount singleton method exists" do
267
+ expect(Sys::Filesystem).to respond_to(:umount)
268
+ end
269
+
270
+ example "mounts singleton method basic functionality" do
271
+ expect(Sys::Filesystem).to respond_to(:mounts)
272
+ expect{ Sys::Filesystem.mounts }.not_to raise_error
273
+ expect{ Sys::Filesystem.mounts{}.not_to raise_error }
274
+ end
275
+
276
+ example "mounts singleton method returns the expected value" do
277
+ expect(Sys::Filesystem.mounts).to be_kind_of(Array)
278
+ expect(Sys::Filesystem.mounts[0]).to be_kind_of(Sys::Filesystem::Mount)
279
+ end
280
+
281
+ example "mounts singleton method works as expected when a block is provided" do
282
+ expect(Sys::Filesystem.mounts{}).to be_nil
283
+ expect{ Sys::Filesystem.mounts{ |mt| @array << mt } }.not_to raise_error
284
+ expect(@array[0]).to be_kind_of(Sys::Filesystem::Mount)
285
+ end
286
+
287
+ example "mount name works as expected" do
288
+ expect(mount).to respond_to(:name)
289
+ expect(mount.name).to be_kind_of(String)
290
+ end
291
+
292
+ example "mount_time works as expected" do
293
+ expect(mount).to respond_to(:mount_time)
294
+ expect(mount.mount_time).to be_kind_of(Time)
295
+ end
296
+
297
+ example "mount type works as expected" do
298
+ expect(mount).to respond_to(:mount_type)
299
+ expect(mount.mount_type).to be_kind_of(String)
300
+ end
301
+
302
+ example "mount point works as expected" do
303
+ expect(mount).to respond_to(:mount_point)
304
+ expect(mount.mount_point).to be_kind_of(String)
305
+ end
306
+
307
+ example "mount options works as expected" do
308
+ expect(mount).to respond_to(:options)
309
+ expect(mount.options).to be_kind_of(String)
310
+ end
311
+
312
+ example "mount pass_number works as expected" do
313
+ expect(mount).to respond_to(:pass_number)
314
+ expect(mount.pass_number).to be_nil
315
+ end
316
+
317
+ example "mount frequency works as expected" do
318
+ expect(mount).to respond_to(:frequency)
319
+ expect(mount.frequency).to be_nil
320
+ end
321
+
322
+ example "mounts singleton method does not accept any arguments" do
323
+ expect{ Sys::Filesystem.mounts("C:\\") }.to raise_error(ArgumentError)
324
+ end
325
+ end
326
+
327
+ example "custom Numeric#to_kb method works as expected" do
328
+ expect(@size).to respond_to(:to_kb)
329
+ expect(@size.to_kb).to eq(57344)
330
+ end
331
+
332
+ example "custom Numeric#to_mb method works as expected" do
333
+ expect(@size).to respond_to(:to_mb)
334
+ expect(@size.to_mb).to eq(56)
335
+ end
336
+
337
+ example "custom Numeric#to_gb method works as expected" do
338
+ expect(@size).to respond_to(:to_gb)
339
+ expect(@size.to_gb).to eq(0)
340
+ end
341
+
342
+ context "FFI" do
343
+ example "internal ffi functions are not public" do
344
+ expect(Sys::Filesystem.methods.include?(:GetVolumeInformationA)).to eq(false)
345
+ expect(Sys::Filesystem.instance_methods.include?(:GetVolumeInformationA)).to eq(false)
346
+ end
347
+ end
348
+ end
@@ -2,21 +2,29 @@ require 'rubygems'
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = 'sys-filesystem'
5
- spec.version = '1.1.6'
5
+ spec.version = '1.4.3'
6
6
  spec.author = 'Daniel J. Berger'
7
7
  spec.email = 'djberg96@gmail.com'
8
8
  spec.homepage = 'https://github.com/djberg96/sys-filesystem'
9
9
  spec.summary = 'A Ruby interface for getting file system information.'
10
- spec.test_file = 'test/test_sys_filesystem.rb'
11
- spec.license = 'Artistic 2.0'
10
+ spec.license = 'Apache-2.0'
11
+ spec.test_files = Dir['spec/*_spec.rb']
12
12
  spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
13
13
  spec.cert_chain = Dir['certs/*']
14
14
 
15
- spec.extra_rdoc_files = ['CHANGES', 'README', 'MANIFEST']
16
-
17
- spec.add_dependency('ffi')
18
- spec.add_development_dependency('test-unit', '>= 2.5.0')
15
+ spec.add_dependency('ffi', '~> 1.1')
16
+ spec.add_development_dependency('mkmf-lite', '~> 0.5') unless Gem.win_platform?
19
17
  spec.add_development_dependency('rake')
18
+ spec.add_development_dependency('rspec', '~> 3.9')
19
+
20
+ spec.metadata = {
21
+ 'homepage_uri' => 'https://github.com/djberg96/sys-filesystem',
22
+ 'bug_tracker_uri' => 'https://github.com/djberg96/sys-filesystem/issues',
23
+ 'changelog_uri' => 'https://github.com/djberg96/sys-filesystem/blob/main/CHANGES.md',
24
+ 'documentation_uri' => 'https://github.com/djberg96/sys-filesystem/wiki',
25
+ 'source_code_uri' => 'https://github.com/djberg96/sys-filesystem',
26
+ 'wiki_uri' => 'https://github.com/djberg96/sys-filesystem/wiki'
27
+ }
20
28
 
21
29
  spec.description = <<-EOF
22
30
  The sys-filesystem library provides a cross-platform interface for
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,65 +1,70 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sys-filesystem
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel J. Berger
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhkamJl
13
+ MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MREwDwYDVQQDDAhkamJl
14
14
  cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
15
- MB4XDTE1MDkwMjIwNDkxOFoXDTE2MDkwMTIwNDkxOFowPzERMA8GA1UEAwwIZGpi
15
+ MB4XDTE4MDMxODE1MjIwN1oXDTI4MDMxNTE1MjIwN1owPzERMA8GA1UEAwwIZGpi
16
16
  ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
17
- bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMyTkvXqRp6hLs9eoJOS
18
- Hmi8kRYbq9Vkf15/hMxJpotYMgJVHHWrmDcC5Dye2PbnXjTkKf266Zw0PtT9h+lI
19
- S3ts9HO+vaCFSMwFFZmnWJSpQ3CNw2RcHxjWkk9yF7imEM8Kz9ojhiDXzBetdV6M
20
- gr0lV/alUr7TNVBDngbXEfTWscyXh1qd7xZ4EcOdsDktCe5G45N/o3662tPQvJsi
21
- FOF0CM/KuBsa/HL1/eoEmF4B3EKIRfTHrQ3hu20Kv3RJ88QM4ec2+0dd97uX693O
22
- zv6981fyEg+aXLkxrkViM/tz2qR2ZE0jPhHTREPYeMEgptRkTmWSKAuLVWrJEfgl
23
- DtkCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFEwe
24
- nn6bfJADmuIDiMSOzedOrL+xMB0GA1UdEQQWMBSBEmRqYmVyZzk2QGdtYWlsLmNv
25
- bTAdBgNVHRIEFjAUgRJkamJlcmc5NkBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
26
- ggEBAHmNOCWoDVD75zHFueY0viwGDVP1BNGFC+yXcb7u2GlK+nEMCORqzURbYPf7
27
- tL+/hzmePIRz7i30UM//64GI1NLv9jl7nIwjhPpXpf7/lu2I9hOTsvwSumb5UiKC
28
- /sqBxI3sfj9pr79Wpv4MuikX1XPik7Ncb7NPsJPw06Lvyc3Hkg5X2XpPtLtS+Gr2
29
- wKJnmzb5rIPS1cmsqv0M9LPWflzfwoZ/SpnmhagP+g05p8bRNKjZSA2iImM/GyYZ
30
- EJYzxdPOrx2n6NYR3Hk+vHP0U7UBSveI6+qx+ndQYaeyCn+GRX2PKS9h66YF/Q1V
31
- tGSHgAmcLlkdGgan182qsE/4kKM=
17
+ bTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALgfaroVM6CI06cxr0/h
18
+ A+j+pc8fgpRgBVmHFaFunq28GPC3IvW7Nvc3Y8SnAW7pP1EQIbhlwRIaQzJ93/yj
19
+ u95KpkP7tA9erypnV7dpzBkzNlX14ACaFD/6pHoXoe2ltBxk3CCyyzx70mTqJpph
20
+ 75IB03ni9a8yqn8pmse+s83bFJOAqddSj009sGPcQO+QOWiNxqYv1n5EHcvj2ebO
21
+ 6hN7YTmhx7aSia4qL/quc4DlIaGMWoAhvML7u1fmo53CYxkKskfN8MOecq2vfEmL
22
+ iLu+SsVVEAufMDDFMXMJlvDsviolUSGMSNRTujkyCcJoXKYYxZSNtIiyd9etI0X3
23
+ ctu0uhrFyrMZXCedutvXNjUolD5r9KGBFSWH1R9u2I3n3SAyFF2yzv/7idQHLJJq
24
+ 74BMnx0FIq6fCpu5slAipvxZ3ZkZpEXZFr3cIBtO1gFvQWW7E/Y3ijliWJS1GQFq
25
+ 058qERadHGu1yu1dojmFRo6W2KZvY9al2yIlbkpDrD5MYQIDAQABo3cwdTAJBgNV
26
+ HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUFZsMapgzJimzsbaBG2Tm8j5e
27
+ AzgwHQYDVR0RBBYwFIESZGpiZXJnOTZAZ21haWwuY29tMB0GA1UdEgQWMBSBEmRq
28
+ YmVyZzk2QGdtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAW2tnYixXQtKxgGXq
29
+ /3iSWG2bLwvxS4go3srO+aRXZHrFUMlJ5W0mCxl03aazxxKTsVVpZD8QZxvK91OQ
30
+ h9zr9JBYqCLcCVbr8SkmYCi/laxIZxsNE5YI8cC8vvlLI7AMgSfPSnn/Epq1GjGY
31
+ 6L1iRcEDtanGCIvjqlCXO9+BmsnCfEVehqZkQHeYczA03tpOWb6pon2wzvMKSsKH
32
+ ks0ApVdstSLz1kzzAqem/uHdG9FyXdbTAwH1G4ZPv69sQAFAOCgAqYmdnzedsQtE
33
+ 1LQfaQrx0twO+CZJPcRLEESjq8ScQxWRRkfuh2VeR7cEU7L7KqT10mtUwrvw7APf
34
+ DYoeCY9KyjIBjQXfbj2ke5u1hZj94Fsq9FfbEQg8ygCgwThnmkTrrKEiMSs3alYR
35
+ ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
36
+ WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
32
37
  -----END CERTIFICATE-----
33
- date: 2016-05-17 00:00:00.000000000 Z
38
+ date: 2021-10-20 00:00:00.000000000 Z
34
39
  dependencies:
35
40
  - !ruby/object:Gem::Dependency
36
41
  name: ffi
37
42
  requirement: !ruby/object:Gem::Requirement
38
43
  requirements:
39
- - - ">="
44
+ - - "~>"
40
45
  - !ruby/object:Gem::Version
41
- version: '0'
46
+ version: '1.1'
42
47
  type: :runtime
43
48
  prerelease: false
44
49
  version_requirements: !ruby/object:Gem::Requirement
45
50
  requirements:
46
- - - ">="
51
+ - - "~>"
47
52
  - !ruby/object:Gem::Version
48
- version: '0'
53
+ version: '1.1'
49
54
  - !ruby/object:Gem::Dependency
50
- name: test-unit
55
+ name: mkmf-lite
51
56
  requirement: !ruby/object:Gem::Requirement
52
57
  requirements:
53
- - - ">="
58
+ - - "~>"
54
59
  - !ruby/object:Gem::Version
55
- version: 2.5.0
60
+ version: '0.5'
56
61
  type: :development
57
62
  prerelease: false
58
63
  version_requirements: !ruby/object:Gem::Requirement
59
64
  requirements:
60
- - - ">="
65
+ - - "~>"
61
66
  - !ruby/object:Gem::Version
62
- version: 2.5.0
67
+ version: '0.5'
63
68
  - !ruby/object:Gem::Dependency
64
69
  name: rake
65
70
  requirement: !ruby/object:Gem::Requirement
@@ -74,53 +79,62 @@ dependencies:
74
79
  - - ">="
75
80
  - !ruby/object:Gem::Version
76
81
  version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rspec
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.9'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.9'
77
96
  description: |2
78
97
  The sys-filesystem library provides a cross-platform interface for
79
98
  gathering filesystem information, such as disk space and mount point data.
80
99
  email: djberg96@gmail.com
81
100
  executables: []
82
101
  extensions: []
83
- extra_rdoc_files:
84
- - CHANGES
85
- - README
86
- - MANIFEST
102
+ extra_rdoc_files: []
87
103
  files:
88
- - certs
104
+ - CHANGES.md
105
+ - Gemfile
106
+ - LICENSE
107
+ - MANIFEST.md
108
+ - README.md
109
+ - Rakefile
89
110
  - certs/djberg96_pub.pem
90
- - CHANGES
91
- - examples
111
+ - examples/example_mount.rb
92
112
  - examples/example_stat.rb
93
- - lib
94
- - lib/sys
113
+ - lib/sys-filesystem.rb
95
114
  - lib/sys/filesystem.rb
96
- - lib/sys/unix
97
- - lib/sys/unix/sys
98
- - lib/sys/unix/sys/filesystem
115
+ - lib/sys/unix/sys/filesystem.rb
99
116
  - lib/sys/unix/sys/filesystem/constants.rb
100
117
  - lib/sys/unix/sys/filesystem/functions.rb
101
118
  - lib/sys/unix/sys/filesystem/structs.rb
102
- - lib/sys/unix/sys/filesystem.rb
103
- - lib/sys/windows
104
- - lib/sys/windows/sys
105
- - lib/sys/windows/sys/filesystem
119
+ - lib/sys/windows/sys/filesystem.rb
106
120
  - lib/sys/windows/sys/filesystem/constants.rb
107
121
  - lib/sys/windows/sys/filesystem/functions.rb
108
122
  - lib/sys/windows/sys/filesystem/helper.rb
109
- - lib/sys/windows/sys/filesystem.rb
110
- - lib/sys-filesystem.rb
111
- - MANIFEST
112
- - Rakefile
113
- - README
123
+ - spec/spec_helper.rb
124
+ - spec/sys_filesystem_unix_spec.rb
125
+ - spec/sys_filesystem_windows_spec.rb
114
126
  - sys-filesystem.gemspec
115
- - test
116
- - test/test_sys_filesystem.rb
117
- - test/test_sys_filesystem_unix.rb
118
- - test/test_sys_filesystem_windows.rb
119
127
  homepage: https://github.com/djberg96/sys-filesystem
120
128
  licenses:
121
- - Artistic 2.0
122
- metadata: {}
123
- post_install_message:
129
+ - Apache-2.0
130
+ metadata:
131
+ homepage_uri: https://github.com/djberg96/sys-filesystem
132
+ bug_tracker_uri: https://github.com/djberg96/sys-filesystem/issues
133
+ changelog_uri: https://github.com/djberg96/sys-filesystem/blob/main/CHANGES.md
134
+ documentation_uri: https://github.com/djberg96/sys-filesystem/wiki
135
+ source_code_uri: https://github.com/djberg96/sys-filesystem
136
+ wiki_uri: https://github.com/djberg96/sys-filesystem/wiki
137
+ post_install_message:
124
138
  rdoc_options: []
125
139
  require_paths:
126
140
  - lib
@@ -135,10 +149,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
149
  - !ruby/object:Gem::Version
136
150
  version: '0'
137
151
  requirements: []
138
- rubyforge_project:
139
- rubygems_version: 2.6.4
140
- signing_key:
152
+ rubygems_version: 3.2.29
153
+ signing_key:
141
154
  specification_version: 4
142
155
  summary: A Ruby interface for getting file system information.
143
156
  test_files:
144
- - test/test_sys_filesystem.rb
157
+ - spec/sys_filesystem_unix_spec.rb
158
+ - spec/sys_filesystem_windows_spec.rb
metadata.gz.sig CHANGED
Binary file
data/CHANGES DELETED
@@ -1,89 +0,0 @@
1
- == 1.1.6 - 17-May-2016
2
- * On versions that use setmntent or fopen, explicitly raise an error if
3
- either of those calls return a null value.
4
-
5
- == 1.1.5 - 5-Dec-2015
6
- * This gem is now signed.
7
- * The gem related tasks in the Rakefile now assume Rubygems 2.x.
8
- * Updates to the gemspec, added cert_chain, removed rubyforge_project.
9
- * Internal reorganization, and use of relative_require as appropriate.
10
- * Added a sys-filesystem.rb file for convenience.
11
-
12
- == 1.1.4 - 15-Mar-2015
13
- * The File.mounts method no longer raises an error if a mount point
14
- is not accessible. Thanks go to Michael Pope for the patch.
15
- * Some internal code reorganization.
16
-
17
- == 1.1.3 - 1-Oct-2014
18
- * Now ignores EPERM errors when trying to find the mount point for a path.
19
- Thanks go to petersen for the patch.
20
- * The Filesystem.stat method now defaults to using the root path on Windows
21
- for volume information.
22
-
23
- == 1.1.2 - 9-May-2014
24
- * Added the percent_used, bytes_total, bytes_free and bytes_used methods
25
- to the Filesystem::Stat class. Thanks go to xanview for the suggestion.
26
- * Changed File.exists? to File.exist? to avoid warnings in Ruby 2.1.x.
27
- * The convenience methods to_mb, to_gb, etc, are now defined in Numeric
28
- instead of Fixnum.
29
- * Added the to_tb method for terabytes.
30
- * Minor updates to the gem:create and gem:install Rake tasks.
31
-
32
- == 1.1.1 - 3-Oct-2013
33
- * Solaris now always uses statvfs64 on Solaris for better 64-bit support.
34
- Thanks go to Jeff Shantz for the spot.
35
-
36
- == 1.1.0 - 19-Jan-2013
37
- * Converted the Windows source code to use FFI. Consequently, there is now
38
- a single gem rather than separate gems for Windows and Unix.
39
- * Revamped the Windows tests.
40
-
41
- == 1.0.0 - 11-Jan-2012
42
- * Converted everything from C to FFI for the Unix flavors. The Windows
43
- source code remains untouched.
44
-
45
- == 0.3.4 - 19-Nov-2010
46
- * Fixed a bug where negative block counts were happening on very large
47
- hard drives. Thanks go to Jonas Pfenniger for the spot.
48
- * Refactored the clean task in the Rakefile.
49
- * Some cosmetic source code changes.
50
-
51
- == 0.3.3 - 21-May-2010
52
- * Added a workaround for the Sys::Filesystem#block_size member to deal with
53
- a bug in OS X. Thanks go to Josh Pasqualetto for the spot.
54
-
55
- == 0.3.2 - 29-Dec-2009
56
- * Source has been moved to github.
57
- * Added the 'gem' task and removed build logic from the gemspec.
58
- * Updated the install task.
59
- * Minor correction to the manifest.
60
- * Removed some junk build files that were inadvertently included in
61
- the last gem.
62
-
63
- == 0.3.1 - 5-Aug-2009
64
- * Now compatible with Ruby 1.9.x.
65
- * Changed license to Artistic 2.0
66
- * Updated the gemspec, including the explicit addition of a license and
67
- test-unit as a development dependency, as well as an updated description.
68
-
69
- == 0.3.0 - 26-Feb-2009
70
- * Added support for OS X and FreeBSD thanks to an awesome patch by Nobuyoshi
71
- Miyokawa.
72
- * Added the Filesystem.mount_point method that takes a file and returns
73
- the mount point it's sitting on.
74
-
75
- == 0.2.0 - 30-Dec-2008
76
- * Added the Filesystem.mounts method for iterating over mount or volume
77
- information.
78
-
79
- == 0.1.1 - 28-Mar-2007
80
- * Bug fix for BSD flavors. Thanks go to Jeremy Kemper and Ole Christian
81
- Rynning for the spot.
82
- * Bug fix for OS X (along the same lines as the BSD fix). Thanks go to
83
- Aurelian Dehay for the spot.
84
- * Some Rdoc improvements for the C extension.
85
- * Tweaks to the gemspec.
86
- * Added synopsis to the README.
87
-
88
- == 0.1.0 - 17-Nov-2006
89
- * Initial release. Alpha. Code is stable, but API is not.