win32-file 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
1
+ This is a test.
@@ -0,0 +1,253 @@
1
+ #############################################################################
2
+ # tc_file_attributes.rb
3
+ #
4
+ # Test case for the attribute related methods of win32-file.
5
+ #############################################################################
6
+ base = File.basename(Dir.pwd)
7
+
8
+ if base == 'test' || base =~ /win32-file/
9
+ Dir.chdir('..') if base == 'test'
10
+ $LOAD_PATH.unshift(Dir.pwd + '/lib')
11
+ Dir.chdir('test') rescue nil
12
+ end
13
+
14
+ require "test/unit"
15
+ require "win32/file"
16
+
17
+ class TC_Win32_File_Attributes < Test::Unit::TestCase
18
+ include Windows::File
19
+ def setup
20
+ @file = 'sometestfile.txt'
21
+ @fh = File.open(@file)
22
+ @attr = GetFileAttributes(@file)
23
+ end
24
+
25
+ def test_version
26
+ assert_equal('0.5.3', File::VERSION)
27
+ end
28
+
29
+ def test_temporary
30
+ assert_respond_to(File, :temporary?)
31
+ assert_nothing_raised{ File.temporary?(@file) }
32
+ assert_equal(false, File.temporary?(@file))
33
+ end
34
+
35
+ def test_temporary_instance
36
+ assert_respond_to(@fh, :temporary=)
37
+ assert_nothing_raised{ @fh.temporary = true }
38
+ assert(File.temporary?(@file))
39
+ end
40
+
41
+ def test_temporary_expected_errors
42
+ assert_raises(ArgumentError){ File.temporary? }
43
+ assert_raises(ArgumentError){ File.temporary?(@file, 'foo') }
44
+ end
45
+
46
+ def test_system
47
+ assert_respond_to(File, :system?)
48
+ assert_nothing_raised{ File.system?(@file) }
49
+ assert_equal(false, File.system?(@file))
50
+ end
51
+
52
+ def test_system_instance
53
+ assert_respond_to(@fh, :system=)
54
+ assert_nothing_raised{ @fh.system = true }
55
+ assert(File.system?(@file))
56
+ end
57
+
58
+ def test_system_expected_errors
59
+ assert_raises(ArgumentError){ File.system? }
60
+ assert_raises(ArgumentError){ File.system?(@file, 'foo') }
61
+ end
62
+
63
+ def test_sparse
64
+ assert_respond_to(File, :sparse?)
65
+ assert_nothing_raised{ File.sparse?(@file) }
66
+ assert_equal(false, File.sparse?(@file))
67
+ end
68
+
69
+ # I don't actually test assignment here since making a file a sparse
70
+ # file can't be undone.
71
+ def test_sparse_instance
72
+ assert_respond_to(@fh, :sparse=)
73
+ end
74
+
75
+ def test_sparse_file_expected_errors
76
+ assert_raises(ArgumentError){ File.sparse? }
77
+ assert_raises(ArgumentError){ File.sparse?(@file, 'foo') }
78
+ end
79
+
80
+ def test_reparse_point
81
+ assert_respond_to(File, :reparse_point?)
82
+ assert_nothing_raised{ File.reparse_point?(@file) }
83
+ assert_equal(false, File.reparse_point?(@file))
84
+ end
85
+
86
+ def test_reparse_point_expected_errors
87
+ assert_raises(ArgumentError){ File.reparse_point? }
88
+ assert_raises(ArgumentError){ File.reparse_point?(@file, 'foo') }
89
+ end
90
+
91
+ def test_readonly
92
+ assert_respond_to(File, :readonly?)
93
+ assert_respond_to(File, :read_only?) # alias
94
+ assert_nothing_raised{ File.read_only?(@file) }
95
+ assert_equal(false, File.read_only?(@file))
96
+ end
97
+
98
+ def test_readonly_instance
99
+ assert_respond_to(@fh, :readonly=)
100
+ assert_nothing_raised{ @fh.readonly = true }
101
+ assert(File.readonly?(@file))
102
+ end
103
+
104
+ def test_read_only_expected_errors
105
+ assert_raises(ArgumentError){ File.read_only? }
106
+ assert_raises(ArgumentError){ File.read_only?(@file, 'foo') }
107
+ end
108
+
109
+ def test_offline
110
+ assert_respond_to(File, :offline?)
111
+ assert_nothing_raised{ File.offline?(@file) }
112
+ assert_equal(false, File.offline?(@file))
113
+ end
114
+
115
+ def test_offline_instance
116
+ assert_respond_to(@fh, :offline=)
117
+ assert_nothing_raised{ @fh.offline = true }
118
+ assert(File.offline?(@file))
119
+ end
120
+
121
+ def test_offline_expected_errors
122
+ assert_raises(ArgumentError){ File.offline? }
123
+ assert_raises(ArgumentError){ File.offline?(@file, 'foo') }
124
+ end
125
+
126
+ def test_normal
127
+ assert_respond_to(File, :normal?)
128
+ assert_nothing_raised{ File.normal?(@file) }
129
+ assert_equal(false, File.normal?(@file))
130
+ end
131
+
132
+ def test_normal_instance
133
+ assert_respond_to(@fh, :normal=)
134
+ assert_nothing_raised{ @fh.normal = true }
135
+ assert(File.normal?(@file))
136
+ end
137
+
138
+ def test_normal_expected_errors
139
+ assert_raises(ArgumentError){ File.normal? }
140
+ assert_raises(ArgumentError){ File.normal?(@file, 'foo') }
141
+ assert_raises(ArgumentError){ @fh.normal = false }
142
+ end
143
+
144
+ def test_hidden
145
+ assert_respond_to(File, :hidden?)
146
+ assert_nothing_raised{ File.hidden?(@file) }
147
+ assert_equal(false, File.hidden?(@file))
148
+ end
149
+
150
+ def test_hidden_instance
151
+ assert_respond_to(@fh, :hidden=)
152
+ assert_nothing_raised{ @fh.hidden = true }
153
+ assert(File.hidden?(@file))
154
+ end
155
+
156
+ def test_hidden_expected_errors
157
+ assert_raises(ArgumentError){ File.hidden? }
158
+ assert_raises(ArgumentError){ File.hidden?(@file, 'foo') }
159
+ end
160
+
161
+ def test_encrypted
162
+ assert_respond_to(File, :encrypted?)
163
+ assert_nothing_raised{ File.encrypted?(@file) }
164
+ assert_equal(false, File.encrypted?(@file))
165
+ end
166
+
167
+ def test_encrypted_expected_errors
168
+ assert_raises(ArgumentError){ File.encrypted? }
169
+ assert_raises(ArgumentError){ File.encrypted?(@file, 'foo') }
170
+ end
171
+
172
+ def test_indexed
173
+ assert_respond_to(File, :indexed?)
174
+ assert_respond_to(File, :content_indexed?)
175
+ assert_nothing_raised{ File.indexed?(@file) }
176
+ assert_equal(true, File.indexed?(@file))
177
+ end
178
+
179
+ def test_indexed_instance
180
+ assert_respond_to(@fh, :indexed=)
181
+ assert_nothing_raised{ @fh.indexed = true }
182
+ assert(File.indexed?(@file))
183
+ end
184
+
185
+ def test_indexed_expected_errors
186
+ assert_raises(ArgumentError){ File.indexed? }
187
+ assert_raises(ArgumentError){ File.indexed?(@file, 'foo') }
188
+ end
189
+
190
+ def test_compressed
191
+ assert_respond_to(File, :compressed?)
192
+ assert_nothing_raised{ File.compressed?(@file) }
193
+ assert_equal(false, File.compressed?(@file))
194
+ end
195
+
196
+ # We have to explicitly reset the compressed attribute to false as
197
+ # the last of these assertions.
198
+ def test_compressed_instance
199
+ assert_respond_to(@fh, :compressed=)
200
+ assert_nothing_raised{ @fh.compressed = true }
201
+ assert(File.compressed?(@file))
202
+ assert_nothing_raised{ @fh.compressed = false }
203
+ assert_equal(false, File.compressed?(@file))
204
+ end
205
+
206
+ def test_compressed_expected_errors
207
+ assert_raises(ArgumentError){ File.compressed? }
208
+ assert_raises(ArgumentError){ File.compressed?(@file, 'foo') }
209
+ end
210
+
211
+ def test_archive
212
+ assert_respond_to(File, :archive?)
213
+ assert_nothing_raised{ File.archive?(@file) }
214
+ assert_equal(true, File.archive?(@file))
215
+ end
216
+
217
+ def test_archive_instance
218
+ assert_respond_to(@fh, :archive=)
219
+ assert_nothing_raised{ @fh.archive = false }
220
+ assert_equal(false, File.archive?(@file))
221
+ end
222
+
223
+ def test_archive_expected_errors
224
+ assert_raises(ArgumentError){ File.archive? }
225
+ assert_raises(ArgumentError){ File.archive?(@file, 'foo') }
226
+ end
227
+
228
+ def test_attributes
229
+ assert_respond_to(File, :attributes)
230
+ assert_kind_of(Array, File.attributes(@file))
231
+ assert_equal(['archive', 'indexed'], File.attributes(@file))
232
+ end
233
+
234
+ def test_set_attributes
235
+ assert_respond_to(File, :set_attributes)
236
+ assert_respond_to(File, :set_attr) # alias
237
+ assert_nothing_raised{ File.set_attributes(@file, File::HIDDEN) }
238
+ assert(File.hidden?(@file))
239
+ end
240
+
241
+ def test_remove_attributes
242
+ assert_respond_to(File, :remove_attributes)
243
+ assert_respond_to(File, :unset_attr) # alias
244
+ assert_nothing_raised{ File.remove_attributes(@file, File::ARCHIVE) }
245
+ assert_equal(false, File.archive?(@file))
246
+ end
247
+
248
+ def teardown
249
+ SetFileAttributes(@file, @attr)
250
+ @file = nil
251
+ @fh.close
252
+ end
253
+ end
@@ -0,0 +1,53 @@
1
+ #############################################################################
2
+ # tc_file_constants.rb
3
+ #
4
+ # Test case for the path related methods of win32-file.
5
+ #############################################################################
6
+ base = File.basename(Dir.pwd)
7
+
8
+ if base == 'test' || base =~ /win32-file/
9
+ Dir.chdir('..') if base == 'test'
10
+ $LOAD_PATH.unshift(Dir.pwd + '/lib')
11
+ Dir.chdir('test') rescue nil
12
+ end
13
+
14
+ require "test/unit"
15
+ require "win32/file"
16
+
17
+ class TC_Win32_File_Constants < Test::Unit::TestCase
18
+ def test_file_attribute_constants
19
+ assert_not_nil(File::ARCHIVE)
20
+ assert_not_nil(File::HIDDEN)
21
+ assert_not_nil(File::NORMAL)
22
+ assert_not_nil(File::INDEXED)
23
+ assert_not_nil(File::OFFLINE)
24
+ assert_not_nil(File::READONLY)
25
+ assert_not_nil(File::SYSTEM)
26
+ assert_not_nil(File::TEMPORARY)
27
+ assert_not_nil(File::CONTENT_INDEXED) # alias for INDEXED
28
+ end
29
+
30
+ def test_security_rights_constants
31
+ assert_not_nil(File::FULL)
32
+ assert_not_nil(File::DELETE)
33
+ assert_not_nil(File::READ_CONTROL)
34
+ assert_not_nil(File::WRITE_DAC)
35
+ assert_not_nil(File::WRITE_OWNER)
36
+ assert_not_nil(File::SYNCHRONIZE)
37
+ assert_not_nil(File::STANDARD_RIGHTS_REQUIRED)
38
+ assert_not_nil(File::STANDARD_RIGHTS_READ)
39
+ assert_not_nil(File::STANDARD_RIGHTS_WRITE)
40
+ assert_not_nil(File::STANDARD_RIGHTS_EXECUTE)
41
+ assert_not_nil(File::STANDARD_RIGHTS_ALL)
42
+ assert_not_nil(File::SPECIFIC_RIGHTS_ALL)
43
+ assert_not_nil(File::ACCESS_SYSTEM_SECURITY)
44
+ assert_not_nil(File::MAXIMUM_ALLOWED)
45
+ assert_not_nil(File::GENERIC_READ)
46
+ assert_not_nil(File::GENERIC_WRITE)
47
+ assert_not_nil(File::GENERIC_EXECUTE)
48
+ assert_not_nil(File::GENERIC_ALL)
49
+ assert_not_nil(File::READ)
50
+ assert_not_nil(File::CHANGE)
51
+ assert_not_nil(File::ADD)
52
+ end
53
+ end
@@ -0,0 +1,36 @@
1
+ #############################################################################
2
+ # tc_file_encryption.rb
3
+ #
4
+ # Test case for the encryption related methods of win32-file.
5
+ #############################################################################
6
+ base = File.basename(Dir.pwd)
7
+
8
+ if base == 'test' || base =~ /win32-file/
9
+ Dir.chdir('..') if base == 'test'
10
+ $LOAD_PATH.unshift(Dir.pwd + '/lib')
11
+ Dir.chdir('test') rescue nil
12
+ end
13
+
14
+ require "test/unit"
15
+ require "win32/file"
16
+
17
+ class TC_Win32_File_Encryption < Test::Unit::TestCase
18
+ def setup
19
+ @file = 'sometestfile.txt'
20
+ @msg = 'IGNORE - may not work due to security setup of your system'
21
+ end
22
+
23
+ def test_encrypt
24
+ assert_respond_to(File, :encrypt)
25
+ assert_nothing_raised(@msg){ File.encrypt(@file) }
26
+ end
27
+
28
+ def test_decrypt
29
+ assert_respond_to(File, :decrypt)
30
+ assert_nothing_raised(@msg){ File.decrypt(@file) }
31
+ end
32
+
33
+ def teardown
34
+ @file = nil
35
+ end
36
+ end
@@ -0,0 +1,171 @@
1
+ #############################################################################
2
+ # tc_file_path.rb
3
+ #
4
+ # Test case for the path related methods of win32-file.
5
+ #############################################################################
6
+ base = File.basename(Dir.pwd)
7
+
8
+ if base == 'test' || base =~ /win32-file/
9
+ Dir.chdir('..') if base == 'test'
10
+ $LOAD_PATH.unshift(Dir.pwd + '/lib')
11
+ Dir.chdir('test') rescue nil
12
+ end
13
+
14
+ require "test/unit"
15
+ require "win32/file"
16
+
17
+ class TC_Win32_File_Path < Test::Unit::TestCase
18
+ def setup
19
+ @short_file = 'SOMETE~1.TXT'
20
+ @long_file = 'sometestfile.txt'
21
+ end
22
+
23
+ def test_basename
24
+ assert_respond_to(File, :basename)
25
+ assert_nothing_raised{ File.basename("C:\\foo") }
26
+ assert_kind_of(String, File.basename("C:\\foo"))
27
+
28
+ # Standard paths
29
+ assert_equal("baz.txt", File.basename("C:\\foo\\bar\\baz.txt"))
30
+ assert_equal("baz", File.basename("C:\\foo\\bar\\baz.txt", ".txt"))
31
+ assert_equal("baz.txt", File.basename("C:\\foo\\bar\\baz.txt", ".zip"))
32
+ assert_equal("bar", File.basename("C:\\foo\\bar"))
33
+ assert_equal("bar", File.basename("C:\\foo\\bar\\"))
34
+ assert_equal("foo", File.basename("C:\\foo"))
35
+ assert_equal("C:\\", File.basename("C:\\"))
36
+
37
+ # UNC paths
38
+ assert_equal("baz.txt", File.basename("\\\\foo\\bar\\baz.txt"))
39
+ assert_equal("baz", File.basename("\\\\foo\\bar\\baz"))
40
+ assert_equal("\\\\foo", File.basename("\\\\foo"))
41
+ assert_equal("\\\\foo\\bar", File.basename("\\\\foo\\bar"))
42
+
43
+ # Unix style paths
44
+ assert_equal("bar", File.basename("/foo/bar"))
45
+ assert_equal("bar.txt", File.basename("/foo/bar.txt"))
46
+ assert_equal("bar.txt", File.basename("bar.txt"))
47
+ assert_equal("bar", File.basename("/bar"))
48
+ assert_equal("bar", File.basename("/bar/"))
49
+ assert_equal("baz", File.basename("//foo/bar/baz"))
50
+ assert_equal("//foo", File.basename("//foo"))
51
+ assert_equal("//foo/bar", File.basename("//foo/bar"))
52
+
53
+ # Forward slashes
54
+ assert_equal("bar", File.basename("C:/foo/bar"))
55
+ assert_equal("bar", File.basename("C:/foo/bar/"))
56
+ assert_equal("foo", File.basename("C:/foo"))
57
+ assert_equal("C:/", File.basename("C:/"))
58
+ assert_equal("bar", File.basename("C:/foo/bar\\\\"))
59
+
60
+ # Edge cases
61
+ assert_equal("", File.basename(""))
62
+ assert_equal(".", File.basename("."))
63
+ assert_equal("..", File.basename(".."))
64
+ assert_equal("foo", File.basename("//foo/"))
65
+
66
+ # Suffixes
67
+ assert_equal("bar", File.basename("bar.txt", ".txt"))
68
+ assert_equal("bar", File.basename("/foo/bar.txt", ".txt"))
69
+ assert_equal("bar.txt", File.basename("bar.txt", ".exe"))
70
+ assert_equal("bar.txt", File.basename("bar.txt.exe", ".exe"))
71
+ assert_equal("bar.txt.exe", File.basename("bar.txt.exe", ".txt"))
72
+ assert_equal("bar", File.basename("bar.txt", ".*"))
73
+ assert_equal("bar.txt", File.basename("bar.txt.exe", ".*"))
74
+
75
+ # Ensure original path not modified
76
+ path = "C:\\foo\\bar"
77
+ assert_nothing_raised{ File.basename(path) }
78
+ assert_equal("C:\\foo\\bar", path)
79
+ end
80
+
81
+ def test_dirname
82
+ assert_respond_to(File, :dirname)
83
+ assert_nothing_raised{ File.dirname("C:\\foo") }
84
+ assert_kind_of(String, File.dirname("C:\\foo"))
85
+
86
+ # Standard Paths
87
+ assert_equal("C:\\foo", File.dirname("C:\\foo\\bar.txt"))
88
+ assert_equal("C:\\foo", File.dirname("C:\\foo\\bar"))
89
+ assert_equal("C:\\", File.dirname("C:\\foo"))
90
+ assert_equal("C:\\", File.dirname("C:\\"))
91
+ assert_equal(".", File.dirname("foo"))
92
+
93
+ # UNC paths
94
+ assert_equal("\\\\foo\\bar", File.dirname("\\\\foo\\bar\\baz"))
95
+ assert_equal("\\\\foo\\bar", File.dirname("\\\\foo\\bar"))
96
+ assert_equal("\\\\foo", File.dirname("\\\\foo"))
97
+ assert_equal("\\\\", File.dirname("\\\\"))
98
+
99
+ # Forward slashes
100
+ assert_equal("C:/foo", File.dirname("C:/foo/bar.txt"))
101
+ assert_equal("C:/foo", File.dirname("C:/foo/bar"))
102
+ assert_equal("C:/", File.dirname("C:/foo"))
103
+ assert_equal("C:/", File.dirname("C:/"))
104
+ assert_equal("//foo/bar", File.dirname("//foo/bar/baz"))
105
+ assert_equal("//foo/bar", File.dirname("//foo/bar"))
106
+ assert_equal("//foo", File.dirname("//foo"))
107
+ assert_equal("//", File.dirname("//"))
108
+
109
+ # Edge cases
110
+ assert_equal(".", File.dirname(""))
111
+ assert_equal(".", File.dirname("."))
112
+ assert_equal(".", File.dirname("."))
113
+ assert_raises(TypeError){ File.dirname(nil) }
114
+
115
+ # Ensure original path not modified
116
+ path = "C:\\foo\\bar"
117
+ assert_nothing_raised{ File.dirname(path) }
118
+ assert_equal("C:\\foo\\bar", path)
119
+ end
120
+
121
+ def test_split
122
+ assert_respond_to(File, :split)
123
+ assert_nothing_raised{ File.split("C:\\foo\\bar") }
124
+ assert_kind_of(Array, File.split("C:\\foo\\bar"))
125
+
126
+ # Standard Paths
127
+ assert_equal(["C:\\foo", "bar"], File.split("C:\\foo\\bar"))
128
+ assert_equal([".", "foo"], File.split("foo"))
129
+
130
+ # Forward slashes
131
+ assert_equal(["C:/foo", "bar"], File.split("C:/foo/bar"))
132
+ assert_equal([".", "foo"], File.split("foo"))
133
+
134
+ # Unix paths
135
+ assert_equal(["/foo","bar"], File.split("/foo/bar"))
136
+ assert_equal(["/", "foo"], File.split("/foo"))
137
+ assert_equal([".", "foo"], File.split("foo"))
138
+
139
+ # UNC paths
140
+ assert_equal(["\\\\foo\\bar", "baz"], File.split("\\\\foo\\bar\\baz"))
141
+ assert_equal(["\\\\foo\\bar", ""], File.split("\\\\foo\\bar"))
142
+ assert_equal(["\\\\foo", ""], File.split("\\\\foo"))
143
+ assert_equal(["\\\\", ""], File.split("\\\\"))
144
+
145
+ # Edge cases
146
+ assert_equal(["C:\\", ""], File.split("C:\\"))
147
+ assert_equal(["", ""], File.split(""))
148
+
149
+ # Ensure original path not modified
150
+ path = "C:\\foo\\bar"
151
+ assert_nothing_raised{ File.split(path) }
152
+ assert_equal("C:\\foo\\bar", path)
153
+ end
154
+
155
+ def test_long_path
156
+ assert_respond_to(File, :long_path)
157
+ assert_equal('sometestfile.txt', File.long_path(@short_file))
158
+ assert_equal('SOMETE~1.TXT', @short_file)
159
+ end
160
+
161
+ def test_short_path
162
+ assert_respond_to(File, :short_path)
163
+ assert_equal('SOMETE~1.TXT', File.short_path(@long_file))
164
+ assert_equal('sometestfile.txt', @long_file)
165
+ end
166
+
167
+ def teardown
168
+ @short_file = nil
169
+ @long_file = nil
170
+ end
171
+ end
@@ -0,0 +1,56 @@
1
+ #####################################################################
2
+ # tc_file_security.rb
3
+ #
4
+ # Test case for security related methods of win32-file.
5
+ #####################################################################
6
+ base = File.basename(Dir.pwd)
7
+
8
+ if base == 'test' || base =~ /win32-file/
9
+ Dir.chdir('..') if base == 'test'
10
+ $LOAD_PATH.unshift(Dir.pwd + '/lib')
11
+ Dir.chdir('test') rescue nil
12
+ end
13
+
14
+ require 'test/unit'
15
+ require 'win32/file'
16
+ require 'socket'
17
+
18
+ class TC_Win32_File_Security < Test::Unit::TestCase
19
+ def setup
20
+ @host = Socket.gethostname
21
+ @file = 'sometestfile.txt'
22
+ @perms = nil
23
+ end
24
+
25
+ # This will fail if there is no "Users" builtin. Not to worry.
26
+ def test_get_permissions
27
+ assert_respond_to(File, :get_permissions)
28
+ assert_nothing_raised{ File.get_permissions(@file) }
29
+ assert_nothing_raised{ File.get_permissions(@file, @host) }
30
+ assert_kind_of(Hash, File.get_permissions(@file))
31
+ assert(File.get_permissions(@file).has_key?('BUILTIN\\Users'))
32
+ assert(File.get_permissions(@file).has_key?('BUILTIN\\Administrators'))
33
+ end
34
+
35
+ def test_set_permissions
36
+ assert_respond_to(File, :set_permissions)
37
+ assert_nothing_raised{ @perms = File.get_permissions(@file) }
38
+ assert_nothing_raised{ File.set_permissions(@file, @perms) }
39
+ end
40
+
41
+ def test_securities
42
+ assert_respond_to(File, :securities)
43
+ assert_nothing_raised{ @perms = File.get_permissions(@file) }
44
+
45
+ @perms.each{ |acct, mask|
46
+ assert_nothing_raised{ File.securities(mask) }
47
+ assert_kind_of(Array, File.securities(mask))
48
+ }
49
+ end
50
+
51
+ def teardown
52
+ @file = nil
53
+ @host = nil
54
+ @perms = nil
55
+ end
56
+ end
@@ -0,0 +1,96 @@
1
+ #####################################################################
2
+ # tc_file_stat.rb
3
+ #
4
+ # Test case for stat related methods of win32-file.
5
+ #####################################################################
6
+ base = File.basename(Dir.pwd)
7
+
8
+ if base == 'test' || base =~ /win32-file/
9
+ Dir.chdir('..') if base == 'test'
10
+ $LOAD_PATH.unshift(Dir.pwd + '/lib')
11
+ Dir.chdir('test') rescue nil
12
+ end
13
+
14
+ require "test/unit"
15
+ require "win32/file"
16
+
17
+ class TC_Win32_File_Stat < Test::Unit::TestCase
18
+ def setup
19
+ @file = 'sometestfile.txt'
20
+ end
21
+
22
+ # Although I don't perform a test against a file > 2gb here (since I
23
+ # don't feel like distributing a 2gb file), it works in my own tests.
24
+ def test_size
25
+ assert_respond_to(File, :size)
26
+ assert_equal(17, File.size(@file))
27
+ end
28
+
29
+ def test_blksize
30
+ msg = "+The blksize may be different - ignore+"
31
+ assert_respond_to(File, :blksize)
32
+ assert_kind_of(Fixnum, File.blksize("C:\\Program Files\\Windows NT"))
33
+ assert_kind_of(Fixnum, File.blksize(@file))
34
+ assert_equal(4096, File.blksize(@file), msg)
35
+ end
36
+
37
+ def test_blksize_expected_errors
38
+ assert_raises(ArgumentError){ File.blksize }
39
+ assert_raises(ArgumentError){ File.blksize(@file, "foo") }
40
+ end
41
+
42
+ def test_blockdev
43
+ assert_respond_to(File, :blockdev?)
44
+ assert_nothing_raised{ File.blockdev?("C:\\") }
45
+ assert_equal(true, File.blockdev?("C:\\"))
46
+ assert_equal(false, File.blockdev?("NUL"))
47
+ end
48
+
49
+ def test_blockdev_expected_errors
50
+ assert_raises(ArgumentError){ File.blockdev? }
51
+ assert_raises(ArgumentError){ File.blockdev?(@file, "foo") }
52
+ end
53
+
54
+ def test_chardev
55
+ assert_respond_to(File, :chardev?)
56
+ assert_nothing_raised{ File.chardev?("NUL") }
57
+ assert_equal(true, File.chardev?("NUL"))
58
+ assert_equal(false, File.chardev?("C:\\"))
59
+ end
60
+
61
+ def test_chardev_expected_errors
62
+ assert_raises(ArgumentError){ File.chardev? }
63
+ assert_raises(ArgumentError){ File.chardev?(@file, "foo") }
64
+ end
65
+
66
+ # Ensure that not only does the File class respond to the stat method,
67
+ # but also that it's returning the File::Stat class from the
68
+ # win32-file-stat package.
69
+ #
70
+ def test_stat_class
71
+ assert_respond_to(File, :stat)
72
+ assert_kind_of(File::Stat, File.stat(@file))
73
+ assert_equal(false, File.stat(@file).hidden?)
74
+ end
75
+
76
+ # This was added after it was discovered that lstat is not aliased
77
+ # to stat automatically on Windows.
78
+ #
79
+ def test_lstat_class
80
+ assert_respond_to(File, :lstat)
81
+ assert_kind_of(File::Stat, File.lstat(@file))
82
+ assert_equal(false, File.stat(@file).hidden?)
83
+ end
84
+
85
+ def test_stat_instance
86
+ File.open(@file){ |f|
87
+ assert_respond_to(f, :stat)
88
+ assert_kind_of(File::Stat, f.stat)
89
+ assert_equal(false, f.stat.hidden?)
90
+ }
91
+ end
92
+
93
+ def teardown
94
+ @file = nil
95
+ end
96
+ end
data/test/ts_all.rb ADDED
@@ -0,0 +1,11 @@
1
+ $LOAD_PATH.unshift(Dir.pwd)
2
+ $LOAD_PATH.unshift(Dir.pwd + '/lib')
3
+ $LOAD_PATH.unshift(Dir.pwd + '/lib/win32')
4
+ $LOAD_PATH.unshift(Dir.pwd + '/test')
5
+
6
+ require 'tc_file_encryption'
7
+ require 'tc_file_path'
8
+ require 'tc_file_stat'
9
+ require 'tc_file_attributes'
10
+ require 'tc_file_security'
11
+ require 'tc_file_constants'