win32-file 0.7.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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