win32-file 0.5.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 @@
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'