win32-file 0.7.2 → 0.7.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.
@@ -1,284 +1,284 @@
1
- #####################################################################
2
- # test_win32_file_stat.rb
3
- #
4
- # Test case for stat related methods of win32-file. You should run
5
- # this via the 'rake test' or 'rake test:stat' task.
6
- #####################################################################
7
- require 'test-unit'
8
- require 'fileutils'
9
- require 'win32/file'
10
- require 'win32/security'
11
- require 'ffi'
12
-
13
- class TC_Win32_File_Stat < Test::Unit::TestCase
14
- extend FFI::Library
15
- ffi_lib :kernel32
16
-
17
- attach_function :GetDriveTypeA, [:string], :uint
18
-
19
- def self.startup
20
- @@txt_file = File.join(Dir.pwd, 'stat_test.txt')
21
- @@exe_file = File.join(Dir.pwd, 'stat_test.exe')
22
- @@sys_file = "C:/pagefile.sys"
23
-
24
- Dir.chdir(File.expand_path(File.dirname(__FILE__)))
25
- File.open(@@txt_file, 'w'){ |fh| fh.puts "This is a test." }
26
-
27
- FileUtils.touch(@@exe_file)
28
-
29
- @@java = RUBY_PLATFORM == 'java'
30
- @@block_dev = nil
31
- @@elevated = Win32::Security.elevated_security?
32
-
33
- # Find a block device
34
- 'A'.upto('Z'){ |volume|
35
- volume += ":\\"
36
- if [2,5,6].include?(GetDriveTypeA(volume))
37
- @@block_dev = volume
38
- break
39
- end
40
- }
41
- end
42
-
43
- def setup
44
- @blksize = 4096 # Most likely
45
- end
46
-
47
- test "File::Stat class returned is from win32-file-stat library" do
48
- assert_respond_to(File, :stat)
49
- assert_kind_of(File::Stat, File.stat(@@txt_file))
50
- assert_nothing_raised{ File.stat(@@txt_file).hidden? }
51
- end
52
-
53
- test "blksize basic functionality" do
54
- assert_respond_to(File, :blksize)
55
- assert_kind_of(Fixnum, File.blksize(@@txt_file))
56
- end
57
-
58
- test "blksize returns the expected value" do
59
- assert_equal(@blksize, File.blksize(@@txt_file))
60
- assert_equal(@blksize, File.blksize("C:/"))
61
- end
62
-
63
- test "blksize requires a single argument" do
64
- assert_raises(ArgumentError){ File.blksize }
65
- assert_raises(ArgumentError){ File.blksize(@@txt_file, 'foo') }
66
- end
67
-
68
- test "blockdev? basic functionality" do
69
- assert_respond_to(File, :blockdev?)
70
- assert_nothing_raised{ File.blockdev?("C:\\") }
71
- assert_boolean(File.blockdev?('NUL'))
72
- end
73
-
74
- test "blockdev? returns false for non-block devices" do
75
- assert_false(File.blockdev?(@@txt_file))
76
- assert_false(File.blockdev?('NUL'))
77
- assert_false(File.blockdev?('bogus'))
78
- end
79
-
80
- test "blockdev? returns true for block devices" do
81
- omit_unless(@@block_dev)
82
- omit_unless(File.exist?(@@block_dev), "No media in device - skipping")
83
- assert_true(File.blockdev?(@@block_dev))
84
- end
85
-
86
- test "blockdev? requires a single argument" do
87
- assert_raises(ArgumentError){ File.blockdev? }
88
- assert_raises(ArgumentError){ File.blockdev?(@@txt_file, 'foo') }
89
- end
90
-
91
- test "chardev? basic functionality" do
92
- assert_respond_to(File, :chardev?)
93
- assert_nothing_raised{ File.chardev?("NUL") }
94
- assert_boolean(File.chardev?(@@txt_file))
95
- end
96
-
97
- test "chardev? method returns the expected result for regular files" do
98
- assert_false(File.chardev?(@@txt_file))
99
- assert_false(File.chardev?('bogus'))
100
- end
101
-
102
- test "chardev? method returns the expected result for character devices" do
103
- omit_if(@@java)
104
- assert_true(File.chardev?('NUL'))
105
- end
106
-
107
- test "chardev? requires a single argument" do
108
- assert_raises(ArgumentError){ File.chardev? }
109
- assert_raises(ArgumentError){ File.chardev?(@@txt_file, 'foo') }
110
- end
111
-
112
- test "lstat is an alias for stat" do
113
- assert_respond_to(File, :lstat)
114
- assert_alias_method(File, :stat, :lstat)
115
- end
116
-
117
- test "directory? method basic functionality" do
118
- assert_respond_to(File, :directory?)
119
- assert_nothing_raised{ File.directory?(Dir.pwd) }
120
- assert_boolean(File.directory?(Dir.pwd))
121
- end
122
-
123
- test "directory? method returns expected results" do
124
- assert_true(File.directory?(Dir.pwd))
125
- assert_false(File.directory?(@@txt_file))
126
- assert_false(File.directory?('NUL'))
127
- assert_false(File.directory?('bogus'))
128
- end
129
-
130
- test "executable? method basic functionality" do
131
- assert_respond_to(File, :executable?)
132
- assert_nothing_raised{ File.executable?(Dir.pwd) }
133
- assert_boolean(File.executable?(Dir.pwd))
134
- end
135
-
136
- test "executable? method returns expected results" do
137
- assert_true(File.executable?(@@exe_file))
138
- assert_false(File.executable?(@@txt_file))
139
- assert_false(File.directory?('NUL'))
140
- assert_false(File.directory?('bogus'))
141
- end
142
-
143
- test "file? method basic functionality" do
144
- assert_respond_to(File, :file?)
145
- assert_nothing_raised{ File.file?(Dir.pwd) }
146
- assert_boolean(File.file?(Dir.pwd))
147
- end
148
-
149
- test "file? method returns expected results" do
150
- assert_true(File.file?(@@txt_file))
151
- assert_true(File.file?(Dir.pwd))
152
- assert_false(File.file?('NUL'))
153
- assert_false(File.file?('bogus'))
154
- end
155
-
156
- test "ftype method basic functionality" do
157
- assert_respond_to(File, :ftype)
158
- assert_nothing_raised{ File.ftype(Dir.pwd) }
159
- assert_kind_of(String, File.ftype(Dir.pwd))
160
- end
161
-
162
- test "ftype returns the expected string" do
163
- assert_equal('file', File.ftype(@@txt_file))
164
- assert_equal('directory', File.ftype(Dir.pwd))
165
- assert_equal('characterSpecial', File.ftype('NUL'))
166
- end
167
-
168
- test "grpowned? method basic functionality" do
169
- assert_respond_to(File, :grpowned?)
170
- assert_nothing_raised{ File.grpowned?(Dir.pwd) }
171
- assert_boolean(File.grpowned?(Dir.pwd))
172
- end
173
-
174
- test "grpowned? returns expected results" do
175
- assert_true(File.grpowned?(@@txt_file))
176
- assert_false(File.grpowned?('NUL'))
177
- assert_false(File.grpowned?('bogus'))
178
- end
179
-
180
- test "owned? method basic functionality" do
181
- assert_respond_to(File, :owned?)
182
- assert_nothing_raised{ File.owned?(Dir.pwd) }
183
- assert_boolean(File.owned?(Dir.pwd))
184
- end
185
-
186
- test "owned? returns expected results" do
187
- if @@elevated
188
- assert_false(File.owned?(@@txt_file))
189
- else
190
- assert_true(File.owned?(@@txt_file))
191
- end
192
- assert_false(File.owned?('NUL'))
193
- assert_false(File.owned?('bogus'))
194
- end
195
-
196
- test "pipe? method basic functionality" do
197
- assert_respond_to(File, :pipe?)
198
- assert_nothing_raised{ File.pipe?(Dir.pwd) }
199
- assert_boolean(File.pipe?(Dir.pwd))
200
- end
201
-
202
- test "pipe? returns expected results" do
203
- assert_false(File.pipe?(@@txt_file))
204
- assert_false(File.pipe?(Dir.pwd))
205
- assert_false(File.pipe?('NUL'))
206
- assert_false(File.pipe?('bogus'))
207
- end
208
-
209
- test "readable? basic functionality" do
210
- assert_respond_to(File, :readable?)
211
- assert_boolean(File.readable?(@@txt_file))
212
- end
213
-
214
- test "readable? returns expected value" do
215
- assert_true(File.readable?(@@txt_file))
216
- assert_true(File::Stat.new(Dir.pwd).readable?)
217
- assert_false(File::Stat.new(@@sys_file).readable?)
218
- end
219
-
220
- test "readable_real? basic functionality" do
221
- assert_respond_to(File, :readable_real?)
222
- assert_boolean(File.readable_real?(@@txt_file))
223
- end
224
-
225
- test "readable_real? returns expected value" do
226
- assert_true(File.readable_real?(@@txt_file))
227
- end
228
-
229
- test "socket? is an alias for pipe?" do
230
- assert_respond_to(File, :socket?)
231
- assert_alias_method(File, :socket?, :pipe?)
232
- end
233
-
234
- test "world_readable? basic functionality" do
235
- assert_respond_to(File, :world_readable?)
236
- assert_boolean(File.world_readable?(@@txt_file))
237
- end
238
-
239
- test "world_writable? returns expected value" do
240
- assert_false(File.world_writable?(@@txt_file))
241
- end
242
-
243
- test "writable? basic functionality" do
244
- assert_respond_to(File, :writable?)
245
- assert_boolean(File.writable?(@@txt_file))
246
- end
247
-
248
- test "writable? returns expected value" do
249
- assert_true(File.writable?(@@txt_file))
250
- assert_true(File::Stat.new(Dir.pwd).writable?)
251
- assert_false(File::Stat.new(@@sys_file).writable?)
252
- end
253
-
254
- test "writable_real? basic functionality" do
255
- assert_respond_to(File, :writable_real?)
256
- assert_boolean(File.writable_real?(@@txt_file))
257
- end
258
-
259
- test "writable_real? returns expected value" do
260
- assert_true(File.writable_real?(@@txt_file))
261
- end
262
-
263
- test "check underlying custom stat attributes" do
264
- File.open(@@txt_file){ |f|
265
- assert_respond_to(f, :stat)
266
- assert_kind_of(File::Stat, f.stat)
267
- assert_false(f.stat.hidden?)
268
- }
269
- end
270
-
271
- def teardown
272
- @blksize = nil
273
- end
274
-
275
- def self.shutdown
276
- File.delete(@@txt_file) if File.exist?(@@txt_file)
277
- File.delete(@@exe_file) if File.exist?(@@exe_file)
278
- @@txt_file = nil
279
- @@exe_file = nil
280
- @@elevated = nil
281
- @@block_dev = nil
282
- @@java = nil
283
- end
284
- end
1
+ #####################################################################
2
+ # test_win32_file_stat.rb
3
+ #
4
+ # Test case for stat related methods of win32-file. You should run
5
+ # this via the 'rake test' or 'rake test:stat' task.
6
+ #####################################################################
7
+ require 'test-unit'
8
+ require 'fileutils'
9
+ require 'win32/file'
10
+ require 'win32/security'
11
+ require 'ffi'
12
+
13
+ class TC_Win32_File_Stat < Test::Unit::TestCase
14
+ extend FFI::Library
15
+ ffi_lib :kernel32
16
+
17
+ attach_function :GetDriveTypeA, [:string], :uint
18
+
19
+ def self.startup
20
+ @@txt_file = File.join(Dir.pwd, 'stat_test.txt')
21
+ @@exe_file = File.join(Dir.pwd, 'stat_test.exe')
22
+ @@sys_file = "C:/pagefile.sys"
23
+
24
+ Dir.chdir(File.expand_path(File.dirname(__FILE__)))
25
+ File.open(@@txt_file, 'w'){ |fh| fh.puts "This is a test." }
26
+
27
+ FileUtils.touch(@@exe_file)
28
+
29
+ @@java = RUBY_PLATFORM == 'java'
30
+ @@block_dev = nil
31
+ @@elevated = Win32::Security.elevated_security?
32
+
33
+ # Find a block device
34
+ 'A'.upto('Z'){ |volume|
35
+ volume += ":\\"
36
+ if [2,5,6].include?(GetDriveTypeA(volume))
37
+ @@block_dev = volume
38
+ break
39
+ end
40
+ }
41
+ end
42
+
43
+ def setup
44
+ @blksize = 4096 # Most likely
45
+ end
46
+
47
+ test "File::Stat class returned is from win32-file-stat library" do
48
+ assert_respond_to(File, :stat)
49
+ assert_kind_of(File::Stat, File.stat(@@txt_file))
50
+ assert_nothing_raised{ File.stat(@@txt_file).hidden? }
51
+ end
52
+
53
+ test "blksize basic functionality" do
54
+ assert_respond_to(File, :blksize)
55
+ assert_kind_of(Fixnum, File.blksize(@@txt_file))
56
+ end
57
+
58
+ test "blksize returns the expected value" do
59
+ assert_equal(@blksize, File.blksize(@@txt_file))
60
+ assert_equal(@blksize, File.blksize("C:/"))
61
+ end
62
+
63
+ test "blksize requires a single argument" do
64
+ assert_raises(ArgumentError){ File.blksize }
65
+ assert_raises(ArgumentError){ File.blksize(@@txt_file, 'foo') }
66
+ end
67
+
68
+ test "blockdev? basic functionality" do
69
+ assert_respond_to(File, :blockdev?)
70
+ assert_nothing_raised{ File.blockdev?("C:\\") }
71
+ assert_boolean(File.blockdev?('NUL'))
72
+ end
73
+
74
+ test "blockdev? returns false for non-block devices" do
75
+ assert_false(File.blockdev?(@@txt_file))
76
+ assert_false(File.blockdev?('NUL'))
77
+ assert_false(File.blockdev?('bogus'))
78
+ end
79
+
80
+ test "blockdev? returns true for block devices" do
81
+ omit_unless(@@block_dev)
82
+ omit_unless(File.exist?(@@block_dev), "No media in device - skipping")
83
+ assert_true(File.blockdev?(@@block_dev))
84
+ end
85
+
86
+ test "blockdev? requires a single argument" do
87
+ assert_raises(ArgumentError){ File.blockdev? }
88
+ assert_raises(ArgumentError){ File.blockdev?(@@txt_file, 'foo') }
89
+ end
90
+
91
+ test "chardev? basic functionality" do
92
+ assert_respond_to(File, :chardev?)
93
+ assert_nothing_raised{ File.chardev?("NUL") }
94
+ assert_boolean(File.chardev?(@@txt_file))
95
+ end
96
+
97
+ test "chardev? method returns the expected result for regular files" do
98
+ assert_false(File.chardev?(@@txt_file))
99
+ assert_false(File.chardev?('bogus'))
100
+ end
101
+
102
+ test "chardev? method returns the expected result for character devices" do
103
+ omit_if(@@java)
104
+ assert_true(File.chardev?('NUL'))
105
+ end
106
+
107
+ test "chardev? requires a single argument" do
108
+ assert_raises(ArgumentError){ File.chardev? }
109
+ assert_raises(ArgumentError){ File.chardev?(@@txt_file, 'foo') }
110
+ end
111
+
112
+ test "lstat is an alias for stat" do
113
+ assert_respond_to(File, :lstat)
114
+ assert_alias_method(File, :stat, :lstat)
115
+ end
116
+
117
+ test "directory? method basic functionality" do
118
+ assert_respond_to(File, :directory?)
119
+ assert_nothing_raised{ File.directory?(Dir.pwd) }
120
+ assert_boolean(File.directory?(Dir.pwd))
121
+ end
122
+
123
+ test "directory? method returns expected results" do
124
+ assert_true(File.directory?(Dir.pwd))
125
+ assert_false(File.directory?(@@txt_file))
126
+ assert_false(File.directory?('NUL'))
127
+ assert_false(File.directory?('bogus'))
128
+ end
129
+
130
+ test "executable? method basic functionality" do
131
+ assert_respond_to(File, :executable?)
132
+ assert_nothing_raised{ File.executable?(Dir.pwd) }
133
+ assert_boolean(File.executable?(Dir.pwd))
134
+ end
135
+
136
+ test "executable? method returns expected results" do
137
+ assert_true(File.executable?(@@exe_file))
138
+ assert_false(File.executable?(@@txt_file))
139
+ assert_false(File.directory?('NUL'))
140
+ assert_false(File.directory?('bogus'))
141
+ end
142
+
143
+ test "file? method basic functionality" do
144
+ assert_respond_to(File, :file?)
145
+ assert_nothing_raised{ File.file?(Dir.pwd) }
146
+ assert_boolean(File.file?(Dir.pwd))
147
+ end
148
+
149
+ test "file? method returns expected results" do
150
+ assert_true(File.file?(@@txt_file))
151
+ assert_false(File.file?(Dir.pwd))
152
+ assert_false(File.file?('NUL'))
153
+ assert_false(File.file?('bogus'))
154
+ end
155
+
156
+ test "ftype method basic functionality" do
157
+ assert_respond_to(File, :ftype)
158
+ assert_nothing_raised{ File.ftype(Dir.pwd) }
159
+ assert_kind_of(String, File.ftype(Dir.pwd))
160
+ end
161
+
162
+ test "ftype returns the expected string" do
163
+ assert_equal('file', File.ftype(@@txt_file))
164
+ assert_equal('directory', File.ftype(Dir.pwd))
165
+ assert_equal('characterSpecial', File.ftype('NUL'))
166
+ end
167
+
168
+ test "grpowned? method basic functionality" do
169
+ assert_respond_to(File, :grpowned?)
170
+ assert_nothing_raised{ File.grpowned?(Dir.pwd) }
171
+ assert_boolean(File.grpowned?(Dir.pwd))
172
+ end
173
+
174
+ test "grpowned? returns expected results" do
175
+ assert_true(File.grpowned?(@@txt_file))
176
+ assert_false(File.grpowned?('NUL'))
177
+ assert_false(File.grpowned?('bogus'))
178
+ end
179
+
180
+ test "owned? method basic functionality" do
181
+ assert_respond_to(File, :owned?)
182
+ assert_nothing_raised{ File.owned?(Dir.pwd) }
183
+ assert_boolean(File.owned?(Dir.pwd))
184
+ end
185
+
186
+ test "owned? returns expected results" do
187
+ if @@elevated
188
+ assert_false(File.owned?(@@txt_file))
189
+ else
190
+ assert_true(File.owned?(@@txt_file))
191
+ end
192
+ assert_false(File.owned?('NUL'))
193
+ assert_false(File.owned?('bogus'))
194
+ end
195
+
196
+ test "pipe? method basic functionality" do
197
+ assert_respond_to(File, :pipe?)
198
+ assert_nothing_raised{ File.pipe?(Dir.pwd) }
199
+ assert_boolean(File.pipe?(Dir.pwd))
200
+ end
201
+
202
+ test "pipe? returns expected results" do
203
+ assert_false(File.pipe?(@@txt_file))
204
+ assert_false(File.pipe?(Dir.pwd))
205
+ assert_false(File.pipe?('NUL'))
206
+ assert_false(File.pipe?('bogus'))
207
+ end
208
+
209
+ test "readable? basic functionality" do
210
+ assert_respond_to(File, :readable?)
211
+ assert_boolean(File.readable?(@@txt_file))
212
+ end
213
+
214
+ test "readable? returns expected value" do
215
+ assert_true(File.readable?(@@txt_file))
216
+ assert_true(File::Stat.new(Dir.pwd).readable?)
217
+ assert_false(File::Stat.new(@@sys_file).readable?)
218
+ end
219
+
220
+ test "readable_real? basic functionality" do
221
+ assert_respond_to(File, :readable_real?)
222
+ assert_boolean(File.readable_real?(@@txt_file))
223
+ end
224
+
225
+ test "readable_real? returns expected value" do
226
+ assert_true(File.readable_real?(@@txt_file))
227
+ end
228
+
229
+ test "socket? is an alias for pipe?" do
230
+ assert_respond_to(File, :socket?)
231
+ assert_alias_method(File, :socket?, :pipe?)
232
+ end
233
+
234
+ test "world_readable? basic functionality" do
235
+ assert_respond_to(File, :world_readable?)
236
+ assert_boolean(File.world_readable?(@@txt_file))
237
+ end
238
+
239
+ test "world_writable? returns expected value" do
240
+ assert_false(File.world_writable?(@@txt_file))
241
+ end
242
+
243
+ test "writable? basic functionality" do
244
+ assert_respond_to(File, :writable?)
245
+ assert_boolean(File.writable?(@@txt_file))
246
+ end
247
+
248
+ test "writable? returns expected value" do
249
+ assert_true(File.writable?(@@txt_file))
250
+ assert_true(File::Stat.new(Dir.pwd).writable?)
251
+ assert_false(File::Stat.new(@@sys_file).writable?)
252
+ end
253
+
254
+ test "writable_real? basic functionality" do
255
+ assert_respond_to(File, :writable_real?)
256
+ assert_boolean(File.writable_real?(@@txt_file))
257
+ end
258
+
259
+ test "writable_real? returns expected value" do
260
+ assert_true(File.writable_real?(@@txt_file))
261
+ end
262
+
263
+ test "check underlying custom stat attributes" do
264
+ File.open(@@txt_file){ |f|
265
+ assert_respond_to(f, :stat)
266
+ assert_kind_of(File::Stat, f.stat)
267
+ assert_false(f.stat.hidden?)
268
+ }
269
+ end
270
+
271
+ def teardown
272
+ @blksize = nil
273
+ end
274
+
275
+ def self.shutdown
276
+ File.delete(@@txt_file) if File.exist?(@@txt_file)
277
+ File.delete(@@exe_file) if File.exist?(@@exe_file)
278
+ @@txt_file = nil
279
+ @@exe_file = nil
280
+ @@elevated = nil
281
+ @@block_dev = nil
282
+ @@java = nil
283
+ end
284
+ end