solaris-file 0.3.5 → 0.3.6

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.
data/ext/solaris/sfile.h CHANGED
@@ -1,4 +1,4 @@
1
- #define SOLARIS_VERSION "0.3.5"
1
+ #define SOLARIS_VERSION "0.3.6"
2
2
  #define MAX_STRING 512
3
3
 
4
4
  VALUE cSolarisFileError;
@@ -8,37 +8,38 @@ VALUE sACLStruct;
8
8
  * Converts a numeric ACL type into a human readable string.
9
9
  */
10
10
  static VALUE acl_type_string(int acl_type){
11
- VALUE rbACLType;
11
+ VALUE v_acl_type;
12
12
 
13
- switch(acl_type){
14
- case USER: case USER_OBJ:
15
- rbACLType = rb_str_new2("user");
16
- break;
17
- case GROUP: case GROUP_OBJ:
18
- rbACLType = rb_str_new2("group");
19
- break;
20
- case OTHER_OBJ:
21
- rbACLType = rb_str_new2("other");
22
- break;
23
- case CLASS_OBJ:
24
- rbACLType = rb_str_new2("mask");
25
- break;
26
- case DEF_USER: case DEF_USER_OBJ:
27
- rbACLType = rb_str_new2("defaultuser");
28
- break;
29
- case DEF_GROUP: case DEF_GROUP_OBJ:
30
- rbACLType = rb_str_new2("defaultgroup");
31
- break;
32
- case DEF_OTHER_OBJ:
33
- rbACLType = rb_str_new2("defaultother");
34
- break;
35
- case DEF_CLASS_OBJ:
36
- rbACLType = rb_str_new2("defaultmask");
37
- break;
38
- default:
39
- rbACLType = rb_str_new2("unknown");
40
- }
41
- return rbACLType;
13
+ switch(acl_type){
14
+ case USER: case USER_OBJ:
15
+ v_acl_type = rb_str_new2("user");
16
+ break;
17
+ case GROUP: case GROUP_OBJ:
18
+ v_acl_type = rb_str_new2("group");
19
+ break;
20
+ case OTHER_OBJ:
21
+ v_acl_type = rb_str_new2("other");
22
+ break;
23
+ case CLASS_OBJ:
24
+ v_acl_type = rb_str_new2("mask");
25
+ break;
26
+ case DEF_USER: case DEF_USER_OBJ:
27
+ v_acl_type = rb_str_new2("defaultuser");
28
+ break;
29
+ case DEF_GROUP: case DEF_GROUP_OBJ:
30
+ v_acl_type = rb_str_new2("defaultgroup");
31
+ break;
32
+ case DEF_OTHER_OBJ:
33
+ v_acl_type = rb_str_new2("defaultother");
34
+ break;
35
+ case DEF_CLASS_OBJ:
36
+ v_acl_type = rb_str_new2("defaultmask");
37
+ break;
38
+ default:
39
+ v_acl_type = rb_str_new2("unknown");
40
+ }
41
+
42
+ return v_acl_type;
42
43
  }
43
44
 
44
45
  /*
@@ -47,32 +48,40 @@ static VALUE acl_type_string(int acl_type){
47
48
  void do_acl_check(int aclcheck_val, int which){
48
49
  char err[MAX_STRING];
49
50
 
50
- switch(aclcheck_val){
51
- case 0:
52
- break; /* Nothing wrong */
53
- case USER_ERROR:
54
- sprintf(err,"Invalid ACL entry: %i; Multiple user entries", which);
55
- rb_raise(cSolarisFileError,err);
56
- case GRP_ERROR:
57
- sprintf(err,"Invalid ACL entry: %i; Multiple group entries", which);
58
- rb_raise(cSolarisFileError,err);
59
- case OTHER_ERROR:
60
- sprintf(err,"Invalid ACL entry: %i; Multiple other entries", which);
61
- rb_raise(cSolarisFileError,err);
62
- case CLASS_ERROR:
63
- sprintf(err,"Invalid ACL entry: %i; Multiple mask entries", which);
64
- rb_raise(cSolarisFileError,err);
65
- case DUPLICATE_ERROR:
66
- sprintf(err,"Invalid ACL entry: %i; Multiple user or group entries", which);
67
- rb_raise(cSolarisFileError,err);
68
- case ENTRY_ERROR:
69
- sprintf(err,"Invalid ACL entry: %i; Invalid entry type", which);
70
- rb_raise(cSolarisFileError,err);
71
- case MISS_ERROR:
72
- rb_raise(cSolarisFileError, "Missing ACL entries");
73
- case MEM_ERROR:
74
- rb_raise(cSolarisFileError, "Out of memory!");
75
- default:
76
- rb_raise(cSolarisFileError, "Unknown error");
77
- };
51
+ switch(aclcheck_val){
52
+ case 0:
53
+ break; // Nothing wrong
54
+ case USER_ERROR:
55
+ sprintf(err,"Invalid ACL entry: %i; Multiple user entries", which);
56
+ rb_raise(cSolarisFileError, err);
57
+ break;
58
+ case GRP_ERROR:
59
+ sprintf(err,"Invalid ACL entry: %i; Multiple group entries", which);
60
+ rb_raise(cSolarisFileError, err);
61
+ break;
62
+ case OTHER_ERROR:
63
+ sprintf(err,"Invalid ACL entry: %i; Multiple other entries", which);
64
+ rb_raise(cSolarisFileError, err);
65
+ break;
66
+ case CLASS_ERROR:
67
+ sprintf(err,"Invalid ACL entry: %i; Multiple mask entries", which);
68
+ rb_raise(cSolarisFileError, err);
69
+ break;
70
+ case DUPLICATE_ERROR:
71
+ sprintf(err,"Invalid ACL entry: %i; Multiple user or group entries", which);
72
+ rb_raise(cSolarisFileError, err);
73
+ break;
74
+ case ENTRY_ERROR:
75
+ sprintf(err,"Invalid ACL entry: %i; Invalid entry type", which);
76
+ rb_raise(cSolarisFileError, err);
77
+ break;
78
+ case MISS_ERROR:
79
+ rb_raise(cSolarisFileError, "Missing ACL entries");
80
+ break;
81
+ case MEM_ERROR:
82
+ rb_raise(cSolarisFileError, "Out of memory!");
83
+ break;
84
+ default:
85
+ rb_raise(cSolarisFileError, "Unknown error");
86
+ };
78
87
  }
data/solaris-file.gemspec CHANGED
@@ -1,37 +1,35 @@
1
1
  require 'rubygems'
2
2
 
3
- spec = Gem::Specification.new do |gem|
4
- gem.name = 'solaris-file'
5
- gem.version = '0.3.5'
6
- gem.author = 'Daniel J. Berger'
7
- gem.license = 'Artistic 2.0'
8
- gem.email = 'djberg96@gmail.com'
9
- gem.homepage = 'http://www.rubyforge.org/projects/solarisutils'
10
- gem.platform = Gem::Platform::RUBY
11
- gem.summary = 'ACL and other methods for the File class on Solaris'
12
- gem.has_rdoc = true
13
- gem.test_file = 'test/test_solaris_file.rb'
14
- gem.extensions = ['ext/extconf.rb']
15
- gem.files = Dir['**/*'].reject{ |f| f.include?('CVS') }
3
+ Gem::Specification.new do |gem|
4
+ gem.name = 'solaris-file'
5
+ gem.version = '0.3.6'
6
+ gem.author = 'Daniel J. Berger'
7
+ gem.license = 'Artistic 2.0'
8
+ gem.email = 'djberg96@gmail.com'
9
+ gem.homepage = 'http://www.rubyforge.org/projects/solarisutils'
10
+ gem.platform = Gem::Platform::RUBY
11
+ gem.summary = 'ACL and other methods for the File class on Solaris'
12
+ gem.has_rdoc = true
13
+ gem.test_file = 'test/test_solaris_file.rb'
14
+ gem.extensions = ['ext/extconf.rb']
15
+ gem.files = Dir['**/*'].reject{ |f| f.include?('git') }
16
16
 
17
- gem.rubyforge_project = 'solarisutils'
17
+ gem.rubyforge_project = 'solarisutils'
18
18
 
19
- gem.extra_rdoc_files = [
20
- 'README',
21
- 'CHANGES',
22
- 'MANIFEST',
23
- 'ext/solaris/sfile.c'
24
- ]
19
+ gem.extra_rdoc_files = [
20
+ 'README',
21
+ 'CHANGES',
22
+ 'MANIFEST',
23
+ 'ext/solaris/sfile.c'
24
+ ]
25
25
 
26
- gem.add_development_dependency('test-unit', '>= 2.0.3')
27
- gem.add_development_dependency('sys-filesystem', '>= 0.3.1')
26
+ gem.add_development_dependency('test-unit', '>= 2.1.1')
27
+ gem.add_development_dependency('sys-filesystem', '>= 0.3.1')
28
28
 
29
- gem.description = <<-EOF
30
- The solaris-file library provides Solaris-specific access control
31
- methods to the File class. It also provides methods for identifying
32
- trivial and door files, interfaces for the realpath() and resolvepath()
33
- functions, and an overloaded ftype method.
34
- EOF
29
+ gem.description = <<-EOF
30
+ The solaris-file library provides Solaris-specific access control
31
+ methods to the File class. It also provides methods for identifying
32
+ trivial and door files, interfaces for the realpath() and resolvepath()
33
+ functions, and an overloaded ftype method.
34
+ EOF
35
35
  end
36
-
37
- Gem::Builder.new(spec).build
@@ -13,278 +13,278 @@ require 'solaris/file'
13
13
  require 'sys/filesystem'
14
14
 
15
15
  class TC_Solaris_File < Test::Unit::TestCase
16
- def self.startup
17
- Dir.chdir(File.dirname(File.expand_path(__FILE__)))
18
-
19
- @@ufs = Sys::Filesystem.stat(Dir.pwd).base_type == 'ufs'
20
- @@file1 = File.join(Dir.pwd, 'foo.txt') # trivial
21
- @@file2 = File.join(Dir.pwd, 'bar.txt') # non-trivial
22
-
23
- @@acl_text = 'user::rw-,user:nobody:r--,group::r--,group:sys:r--,mask:r--,other:r--'
24
-
25
- File.open(@@file1, 'w'){ |fh| fh.puts 'foo' }
26
- File.open(@@file2, 'w'){ |fh| fh.puts 'bar' }
27
- end
28
-
29
- def setup
30
- @dir = Dir.pwd
31
- @door = '/var/run/syslog_door'
32
- @stat = File::Stat.new(@door)
33
-
34
- # Make @@file2 a non-trivial file. UFS only.
35
- if @@ufs
36
- system("chmod A=#{@@acl_text} #{@@file2}")
37
- end
38
-
39
- @handle1 = File.open(@@file1)
40
- @handle2 = File.open(@@file2)
41
- end
42
-
43
- def test_version
44
- assert_equal('0.3.5', File::SOLARIS_VERSION)
45
- end
46
-
47
- # SINGLETON METHODS
48
-
49
- def test_singleton_acl_read_basic
50
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
51
- assert_respond_to(File, :acl_read)
52
- assert_nothing_raised{ File.acl_read(@@file1) }
53
- end
54
-
55
- def test_singleton_acl_read
56
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
57
- assert_nil(File.acl_read(@@file1))
58
- assert_kind_of(Array, File.acl_read(@@file2))
59
- end
60
-
61
- def test_singleton_acl_read_expected_errors
62
- assert_raise(Errno::ENOENT){ File.acl_read('bogus') }
63
- assert_raise(ArgumentError){ File.acl_read('bogus' * 500) }
64
- assert_raise(ArgumentError){ File.acl_read }
65
- assert_raise(TypeError){ File.acl_read(1) }
66
- end
67
-
68
- def test_singleton_acl_read_text_basic
69
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
70
- assert_respond_to(File, :acl_read_text)
71
- assert_nothing_raised{ File.acl_read_text(@@file1) }
72
- end
73
-
74
- def test_singleton_acl_read_text
75
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
76
- assert_nil(File.acl_read_text(@@file1))
77
- assert_kind_of(String,File.acl_read_text(@@file2))
78
- end
79
-
80
- def test_singleton_acl_read_text_expected_errors
81
- assert_raise(Errno::ENOENT){ File.acl_read_text('bogus') }
82
- assert_raise(ArgumentError){ File.acl_read_text }
83
- assert_raise(TypeError){ File.acl_read_text(1) }
84
- end
85
-
86
- def test_singleton_acl_write_text
87
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
88
- acl_text = 'user::rw-,group::r--,mask:r--,other:---'
89
- assert_respond_to(File, :acl_write_text)
90
- assert_nothing_raised{ File.acl_write_text(@@file1, acl_text) }
91
- end
92
-
93
- def test_singleton_acl_write_text_expected_errors
94
- assert_raise(File::SolarisError){ File.acl_write_text(@@file1, 'bogus') }
95
- end
96
-
97
- def test_singleton_acl_trivial_basic
98
- assert_respond_to(File, :trivial?)
99
- assert_nothing_raised{ File.trivial?(@@file1) }
100
- assert_boolean(File.trivial?(@@file1))
101
- end
102
-
103
- def test_singleton_acl_trivial
104
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
105
- assert_true(File.trivial?(@@file1))
106
- assert_false(File.trivial?(@@file2))
107
- end
108
-
109
- def test_singleton_acl_trivial_expected_errors
110
- assert_raise(Errno::ENOENT){ File.trivial?('bogus') }
111
- assert_raise(ArgumentError){ File.trivial?('bogus' * 500) }
112
- assert_raise(ArgumentError){ File.trivial? }
113
- assert_raise(TypeError){ File.trivial?(1) }
114
- end
115
-
116
- def test_singleton_acl_count
117
- assert_respond_to(File, :acl_count)
118
- assert_nothing_raised{ File.acl_count(@@file1) }
119
- assert_kind_of(Fixnum, File.acl_count(@@file1))
120
- end
121
-
122
- def test_singleton_acl_count_expected_errors
123
- assert_raise(Errno::ENOENT){ File.acl_count('bogus') }
124
- assert_raise(ArgumentError){ File.acl_count('bogus' * 500) }
125
- assert_raise(ArgumentError){ File.acl_count }
126
- assert_raise(TypeError){ File.acl_count(1) }
127
- end
128
-
129
- def test_singleton_realpath_basic
130
- assert_respond_to(File, :realpath)
131
- assert_nothing_raised{ File.realpath(@dir) }
132
- assert_kind_of(String, File.realpath(@dir))
133
- end
134
-
135
- def test_singleton_realpath
136
- dir1 = File.join(File.dirname(Dir.pwd), 'examples')
137
- dir2 = File.join(Dir.pwd, '/.././examples')
138
-
139
- assert_equal(@dir, File.realpath(@dir))
140
- assert_equal(dir1, File.realpath(dir2))
141
- end
142
-
143
- def test_singleton_realpath_expected_errors
144
- assert_raise(Errno::ENOENT){ File.realpath('bogus') }
145
- assert_raise(ArgumentError){ File.realpath }
146
- assert_raise(TypeError){ File.realpath(1) }
147
- end
148
-
149
- def test_singleton_resolvepath_basic
150
- assert_respond_to(File, :resolvepath)
151
- assert_nothing_raised{ File.resolvepath(@dir) }
152
- assert_kind_of(String, File.resolvepath(@dir))
153
- end
154
-
155
- def test_singleton_resolvepath
156
- assert_equal(@dir, File.resolvepath(@dir))
157
- assert_equal("../examples", File.resolvepath("../examples"))
158
- end
159
-
160
- def test_singleton_resolvepath_expected_errors
161
- assert_raise(Errno::ENOENT){ File.resolvepath('bogus') }
162
- assert_raise(ArgumentError){ File.resolvepath }
163
- assert_raise(TypeError){ File.resolvepath(1) }
164
- end
165
-
166
- def test_singleton_is_door_basic
167
- assert_respond_to(File, :door?)
168
- assert_nothing_raised{ File.door?(@door) }
169
- assert_boolean(File.door?(@door))
170
- end
16
+ def self.startup
17
+ Dir.chdir(File.dirname(File.expand_path(__FILE__)))
18
+
19
+ @@ufs = Sys::Filesystem.stat(Dir.pwd).base_type == 'ufs'
20
+ @@file1 = File.join(Dir.pwd, 'foo.txt') # trivial
21
+ @@file2 = File.join(Dir.pwd, 'bar.txt') # non-trivial
22
+
23
+ @@acl_text = 'user::rw-,user:nobody:r--,group::r--,group:sys:r--,mask:r--,other:r--'
24
+
25
+ File.open(@@file1, 'w'){ |fh| fh.puts 'foo' }
26
+ File.open(@@file2, 'w'){ |fh| fh.puts 'bar' }
27
+ end
28
+
29
+ def setup
30
+ @dir = Dir.pwd
31
+ @door = '/var/run/syslog_door'
32
+ @stat = File::Stat.new(@door)
33
+
34
+ # Make @@file2 a non-trivial file. UFS only.
35
+ if @@ufs
36
+ system("chmod A=#{@@acl_text} #{@@file2}")
37
+ end
38
+
39
+ @handle1 = File.open(@@file1)
40
+ @handle2 = File.open(@@file2)
41
+ end
42
+
43
+ def test_version
44
+ assert_equal('0.3.6', File::SOLARIS_VERSION)
45
+ end
46
+
47
+ # SINGLETON METHODS
48
+
49
+ def test_singleton_acl_read_basic
50
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
51
+ assert_respond_to(File, :acl_read)
52
+ assert_nothing_raised{ File.acl_read(@@file1) }
53
+ end
54
+
55
+ def test_singleton_acl_read
56
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
57
+ assert_nil(File.acl_read(@@file1))
58
+ assert_kind_of(Array, File.acl_read(@@file2))
59
+ end
60
+
61
+ def test_singleton_acl_read_expected_errors
62
+ assert_raise(Errno::ENOENT){ File.acl_read('bogus') }
63
+ assert_raise(ArgumentError){ File.acl_read('bogus' * 500) }
64
+ assert_raise(ArgumentError){ File.acl_read }
65
+ assert_raise(TypeError){ File.acl_read(1) }
66
+ end
67
+
68
+ def test_singleton_acl_read_text_basic
69
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
70
+ assert_respond_to(File, :acl_read_text)
71
+ assert_nothing_raised{ File.acl_read_text(@@file1) }
72
+ end
73
+
74
+ def test_singleton_acl_read_text
75
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
76
+ assert_nil(File.acl_read_text(@@file1))
77
+ assert_kind_of(String,File.acl_read_text(@@file2))
78
+ end
79
+
80
+ def test_singleton_acl_read_text_expected_errors
81
+ assert_raise(Errno::ENOENT){ File.acl_read_text('bogus') }
82
+ assert_raise(ArgumentError){ File.acl_read_text }
83
+ assert_raise(TypeError){ File.acl_read_text(1) }
84
+ end
85
+
86
+ def test_singleton_acl_write_text
87
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
88
+ acl_text = 'user::rw-,group::r--,mask:r--,other:---'
89
+ assert_respond_to(File, :acl_write_text)
90
+ assert_nothing_raised{ File.acl_write_text(@@file1, acl_text) }
91
+ end
92
+
93
+ def test_singleton_acl_write_text_expected_errors
94
+ assert_raise(File::SolarisError){ File.acl_write_text(@@file1, 'bogus') }
95
+ end
96
+
97
+ def test_singleton_acl_trivial_basic
98
+ assert_respond_to(File, :trivial?)
99
+ assert_nothing_raised{ File.trivial?(@@file1) }
100
+ assert_boolean(File.trivial?(@@file1))
101
+ end
102
+
103
+ def test_singleton_acl_trivial
104
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
105
+ assert_true(File.trivial?(@@file1))
106
+ assert_false(File.trivial?(@@file2))
107
+ end
108
+
109
+ def test_singleton_acl_trivial_expected_errors
110
+ assert_raise(Errno::ENOENT){ File.trivial?('bogus') }
111
+ assert_raise(ArgumentError){ File.trivial?('bogus' * 500) }
112
+ assert_raise(ArgumentError){ File.trivial? }
113
+ assert_raise(TypeError){ File.trivial?(1) }
114
+ end
115
+
116
+ def test_singleton_acl_count
117
+ assert_respond_to(File, :acl_count)
118
+ assert_nothing_raised{ File.acl_count(@@file1) }
119
+ assert_kind_of(Fixnum, File.acl_count(@@file1))
120
+ end
121
+
122
+ def test_singleton_acl_count_expected_errors
123
+ assert_raise(Errno::ENOENT){ File.acl_count('bogus') }
124
+ assert_raise(ArgumentError){ File.acl_count('bogus' * 500) }
125
+ assert_raise(ArgumentError){ File.acl_count }
126
+ assert_raise(TypeError){ File.acl_count(1) }
127
+ end
128
+
129
+ def test_singleton_realpath_basic
130
+ assert_respond_to(File, :realpath)
131
+ assert_nothing_raised{ File.realpath(@dir) }
132
+ assert_kind_of(String, File.realpath(@dir))
133
+ end
134
+
135
+ def test_singleton_realpath
136
+ dir1 = File.join(File.dirname(Dir.pwd), 'examples')
137
+ dir2 = File.join(Dir.pwd, '/.././examples')
138
+
139
+ assert_equal(@dir, File.realpath(@dir))
140
+ assert_equal(dir1, File.realpath(dir2))
141
+ end
142
+
143
+ def test_singleton_realpath_expected_errors
144
+ assert_raise(Errno::ENOENT){ File.realpath('bogus') }
145
+ assert_raise(ArgumentError){ File.realpath }
146
+ assert_raise(TypeError){ File.realpath(1) }
147
+ end
148
+
149
+ def test_singleton_resolvepath_basic
150
+ assert_respond_to(File, :resolvepath)
151
+ assert_nothing_raised{ File.resolvepath(@dir) }
152
+ assert_kind_of(String, File.resolvepath(@dir))
153
+ end
154
+
155
+ def test_singleton_resolvepath
156
+ assert_equal(@dir, File.resolvepath(@dir))
157
+ assert_equal("../examples", File.resolvepath("../examples"))
158
+ end
159
+
160
+ def test_singleton_resolvepath_expected_errors
161
+ assert_raise(Errno::ENOENT){ File.resolvepath('bogus') }
162
+ assert_raise(ArgumentError){ File.resolvepath }
163
+ assert_raise(TypeError){ File.resolvepath(1) }
164
+ end
165
+
166
+ def test_singleton_is_door_basic
167
+ assert_respond_to(File, :door?)
168
+ assert_nothing_raised{ File.door?(@door) }
169
+ assert_boolean(File.door?(@door))
170
+ end
171
171
 
172
- def test_singleton_is_door
173
- assert_true(File.door?(@door))
174
- assert_false(File.door?(Dir.pwd))
175
- end
176
-
177
- def test_singleton_is_door_expected_errors
178
- assert_raise(Errno::ENOENT){ File.door?('bogus') }
179
- assert_raise(ArgumentError){ File.door? }
180
- assert_raise(TypeError){ File.door?(1) }
181
- end
182
-
183
- def test_singleton_ftype_basic
184
- assert_respond_to(File, :ftype)
185
- end
186
-
187
- def test_singleton_ftype
188
- assert_equal('door', File.ftype(@door))
189
- assert_equal('directory', File.ftype(Dir.pwd))
190
- end
191
-
192
- def test_singleton_ftype_expected_errors
193
- assert_raise(Errno::ENOENT){ File.ftype('bogus') }
194
- assert_raise(ArgumentError){ File.ftype }
195
- assert_raise(TypeError){ File.ftype(1) }
196
- end
197
-
198
- # INSTANCE METHODS
199
-
200
- def test_instance_acl_basic
201
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
202
- assert_respond_to(@handle1, :acl_read)
203
- assert_nothing_raised{ @handle1.acl_read }
204
- end
205
-
206
- def test_instance_acl
207
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
208
- assert_nil(@handle1.acl_read)
209
- assert_kind_of(Array, @handle2.acl_read)
210
- assert_kind_of(Struct::ACLStruct, @handle2.acl_read.first)
211
- end
212
-
213
- def test_instance_acl_read_text_basic
214
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
215
- assert_respond_to(@handle1, :acl_read_text)
216
- assert_nothing_raised{ @handle1.acl_read_text }
217
- end
218
-
219
- def test_instance_acl_read_text
220
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
221
- assert_nil(@handle1.acl_read_text)
222
- assert_kind_of(String, @handle2.acl_read_text)
223
- end
224
-
225
- def test_instance_acl_write_text
226
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
227
- acl_text = 'user::rw-,group::r--,mask:r--,other:---'
228
- assert_respond_to(@handle2, :acl_write_text)
229
- assert_nothing_raised{ @handle2.acl_write_text(acl_text) }
230
- end
231
-
232
- def test_instance_acl_write_text_expected_errors
233
- assert_raise(File::SolarisError){ @handle2.acl_write_text('bogus') }
234
- assert_raise(ArgumentError){ @handle2.acl_write_text }
235
- assert_raise(TypeError){ @handle2.acl_write_text(1) }
236
- end
237
-
238
- def test_instance_acl_trivial_basic
239
- assert_respond_to(@handle1, :trivial?)
240
- assert_nothing_raised{ @handle1.trivial? }
241
- assert_boolean(@handle1.trivial?)
242
- end
243
-
244
- def test_instance_acl_trivial
245
- assert_true(@handle1.trivial?)
246
- assert_false(@handle2.trivial?)
247
- end
248
-
249
- def test_instance_acl_count_basic
250
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
251
- assert_respond_to(@handle1, :acl_count)
252
- assert_nothing_raised{ @handle1.acl_count }
253
- assert_kind_of(Fixnum, @handle1.acl_count)
254
- end
255
-
256
- def test_instance_acl_count
257
- omit_unless(@@ufs, 'skipped on non-ufs filesystem')
258
- assert_equal(0, @handle1.acl_count)
259
- assert_equal(6, @handle2.acl_count)
260
- end
261
-
262
- def test_stat_door
263
- assert_respond_to(@stat, :door?)
264
- assert_true(@stat.door?)
265
- end
266
-
267
- def test_stat_ftype
268
- assert_respond_to(@stat, :ftype)
269
- assert_equal('door', @stat.ftype)
270
- end
271
-
272
- def teardown
273
- @handle1.close unless @handle1.closed?
274
- @handle2.close unless @handle2.closed?
275
-
276
- @dir = nil
277
- @handle1 = nil
278
- @handle2 = nil
279
- end
280
-
281
- def self.shutdown
282
- File.delete(@@file1) if File.exists?(@@file1)
283
- File.delete(@@file2) if File.exists?(@@file2)
284
-
285
- @@ufs = nil
286
- @@file1 = nil
287
- @@file2 = nil
288
- @@acl_text = nil
289
- end
172
+ def test_singleton_is_door
173
+ assert_true(File.door?(@door))
174
+ assert_false(File.door?(Dir.pwd))
175
+ end
176
+
177
+ def test_singleton_is_door_expected_errors
178
+ assert_raise(Errno::ENOENT){ File.door?('bogus') }
179
+ assert_raise(ArgumentError){ File.door? }
180
+ assert_raise(TypeError){ File.door?(1) }
181
+ end
182
+
183
+ def test_singleton_ftype_basic
184
+ assert_respond_to(File, :ftype)
185
+ end
186
+
187
+ def test_singleton_ftype
188
+ assert_equal('door', File.ftype(@door))
189
+ assert_equal('directory', File.ftype(Dir.pwd))
190
+ end
191
+
192
+ def test_singleton_ftype_expected_errors
193
+ assert_raise(Errno::ENOENT){ File.ftype('bogus') }
194
+ assert_raise(ArgumentError){ File.ftype }
195
+ assert_raise(TypeError){ File.ftype(1) }
196
+ end
197
+
198
+ # INSTANCE METHODS
199
+
200
+ def test_instance_acl_basic
201
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
202
+ assert_respond_to(@handle1, :acl_read)
203
+ assert_nothing_raised{ @handle1.acl_read }
204
+ end
205
+
206
+ def test_instance_acl
207
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
208
+ assert_nil(@handle1.acl_read)
209
+ assert_kind_of(Array, @handle2.acl_read)
210
+ assert_kind_of(Struct::ACLStruct, @handle2.acl_read.first)
211
+ end
212
+
213
+ def test_instance_acl_read_text_basic
214
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
215
+ assert_respond_to(@handle1, :acl_read_text)
216
+ assert_nothing_raised{ @handle1.acl_read_text }
217
+ end
218
+
219
+ def test_instance_acl_read_text
220
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
221
+ assert_nil(@handle1.acl_read_text)
222
+ assert_kind_of(String, @handle2.acl_read_text)
223
+ end
224
+
225
+ def test_instance_acl_write_text
226
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
227
+ acl_text = 'user::rw-,group::r--,mask:r--,other:---'
228
+ assert_respond_to(@handle2, :acl_write_text)
229
+ assert_nothing_raised{ @handle2.acl_write_text(acl_text) }
230
+ end
231
+
232
+ def test_instance_acl_write_text_expected_errors
233
+ assert_raise(File::SolarisError){ @handle2.acl_write_text('bogus') }
234
+ assert_raise(ArgumentError){ @handle2.acl_write_text }
235
+ assert_raise(TypeError){ @handle2.acl_write_text(1) }
236
+ end
237
+
238
+ def test_instance_acl_trivial_basic
239
+ assert_respond_to(@handle1, :trivial?)
240
+ assert_nothing_raised{ @handle1.trivial? }
241
+ assert_boolean(@handle1.trivial?)
242
+ end
243
+
244
+ def test_instance_acl_trivial
245
+ assert_true(@handle1.trivial?)
246
+ assert_false(@handle2.trivial?)
247
+ end
248
+
249
+ def test_instance_acl_count_basic
250
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
251
+ assert_respond_to(@handle1, :acl_count)
252
+ assert_nothing_raised{ @handle1.acl_count }
253
+ assert_kind_of(Fixnum, @handle1.acl_count)
254
+ end
255
+
256
+ def test_instance_acl_count
257
+ omit_unless(@@ufs, 'skipped on non-ufs filesystem')
258
+ assert_equal(0, @handle1.acl_count)
259
+ assert_equal(6, @handle2.acl_count)
260
+ end
261
+
262
+ def test_stat_door
263
+ assert_respond_to(@stat, :door?)
264
+ assert_true(@stat.door?)
265
+ end
266
+
267
+ def test_stat_ftype
268
+ assert_respond_to(@stat, :ftype)
269
+ assert_equal('door', @stat.ftype)
270
+ end
271
+
272
+ def teardown
273
+ @handle1.close unless @handle1.closed?
274
+ @handle2.close unless @handle2.closed?
275
+
276
+ @dir = nil
277
+ @handle1 = nil
278
+ @handle2 = nil
279
+ end
280
+
281
+ def self.shutdown
282
+ File.delete(@@file1) if File.exists?(@@file1)
283
+ File.delete(@@file2) if File.exists?(@@file2)
284
+
285
+ @@ufs = nil
286
+ @@file1 = nil
287
+ @@file2 = nil
288
+ @@acl_text = nil
289
+ end
290
290
  end