sys-admin 1.5.5 → 1.5.6

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,3 +1,9 @@
1
+ == 1.5.6 - 30-Jul-2011
2
+ * Fixed issue for non-gnu platforms where it would use the wrong function
3
+ prototype because the Ruby core team took it upon themselves to explicitly
4
+ defined _GNU_SOURCE in config.h in 1.8.7 and later for reasons that baffle me.
5
+ * Some tests on Windows are now skipped unless run with elevated security.
6
+
1
7
  == 1.5.5 - 5-Jul-2011
2
8
  * Modified lastlog handling, and ignore getpwent_r and getgrent_r, on AIX.
3
9
  Thanks go to Rick Ohnemus for the spot and patches.
@@ -39,7 +45,7 @@
39
45
  * Added the Group#members method. The returns an array of users that the
40
46
  group contains.
41
47
  * Changed User#class to User#access_class for UNIX flavors to avoid
42
- conflicts with the Ruby core Object method.
48
+ conflicts with the Ruby core Object method.
43
49
  * Added more tests and renamed the test files.
44
50
  * Removed an unnecessary function call where a platform might try to
45
51
  get lastlog information even if the lastlog.h or utmp.h headers couldn't
data/ext/sys/admin.c CHANGED
@@ -167,7 +167,7 @@ static VALUE admin_groups_body(VALUE klass){
167
167
  #ifdef HAVE_GETGRENT_R
168
168
  struct group grp;
169
169
  char buf[GROUP_BUF_SIZE];
170
- #ifdef _GNU_SOURCE
170
+ #if defined _GNU_SOURCE && !defined __sunos && !defined __SUNPRO_C && !defined __SUNPRO_CC
171
171
  struct group* grp_p;
172
172
 
173
173
  while(!getgrent_r(&grp, buf, GROUP_BUF_SIZE, &grp_p)){
@@ -233,7 +233,7 @@ static VALUE admin_users_body(VALUE klass){
233
233
  struct passwd pwd;
234
234
  char buf[USER_BUF_SIZE];
235
235
 
236
- #ifdef _GNU_SOURCE
236
+ #if defined _GNU_SOURCE && !defined __sunos && !defined __SUNPRO_C && !defined __SUNPRO_CC
237
237
  struct passwd* pwd_p;
238
238
 
239
239
  while(!getpwent_r(&pwd, buf, USER_BUF_SIZE, &pwd_p)){
data/ext/sys/admin.h CHANGED
@@ -8,7 +8,7 @@
8
8
  #include <errno.h>
9
9
  #include <string.h>
10
10
 
11
- #define SYS_ADMIN_VERSION "1.5.5"
11
+ #define SYS_ADMIN_VERSION "1.5.6"
12
12
 
13
13
  #if defined(__MACH__) || defined(__APPLE__)
14
14
  #define __BSD__
data/sys-admin.gemspec CHANGED
@@ -4,7 +4,7 @@ require 'rubygems'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'sys-admin'
7
- spec.version = '1.5.5'
7
+ spec.version = '1.5.6'
8
8
  spec.author = 'Daniel J. Berger'
9
9
  spec.license = 'Artistic 2.0'
10
10
  spec.email = 'djberg96@gmail.com'
@@ -16,6 +16,6 @@ end
16
16
 
17
17
  class TC_Sys_Admin_All < Test::Unit::TestCase
18
18
  def test_version
19
- assert_equal('1.5.5', Sys::Admin::VERSION)
19
+ assert_equal('1.5.6', Sys::Admin::VERSION)
20
20
  end
21
21
  end
@@ -4,7 +4,7 @@
4
4
  # Test suite for the Win32 version of sys-admin. Note that some of the tests
5
5
  # are numbered to ensure a certain order. That way I can add test users
6
6
  # before configuring or deleting them.
7
- #
7
+ #
8
8
  # It is assumed that this test will be run via the 'rake test' task.
9
9
  ###############################################################################
10
10
  require 'rubygems'
@@ -12,6 +12,7 @@ gem 'test-unit'
12
12
 
13
13
  require 'test/unit'
14
14
  require 'sys/admin'
15
+ require 'win32/security'
15
16
  require 'socket'
16
17
  require 'etc'
17
18
  include Sys
@@ -19,6 +20,7 @@ include Sys
19
20
  class TC_Sys_Admin_Win32 < Test::Unit::TestCase
20
21
  def self.startup
21
22
  @@host = Socket.gethostname
23
+ @@elev = Win32::Security.elevated_security?
22
24
  end
23
25
 
24
26
  def setup
@@ -33,6 +35,7 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
33
35
  # Admin singleton methods
34
36
 
35
37
  def test_01_add_user
38
+ omit_unless(@@elev, "insufficient privileges - skipping")
36
39
  assert_respond_to(Admin, :add_user)
37
40
  assert_nothing_raised{
38
41
  Admin.add_user(:name => 'foo', :password => 'a1b2c3D4')
@@ -40,6 +43,7 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
40
43
  end
41
44
 
42
45
  def test_02_config_user
46
+ omit_unless(@@elev, "insufficient privileges - skipping")
43
47
  assert_respond_to(Admin, :configure_user)
44
48
  assert_nothing_raised{
45
49
  Admin.configure_user(
@@ -50,29 +54,33 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
50
54
  )
51
55
  }
52
56
  end
53
-
57
+
54
58
  def test_03_delete_user
59
+ omit_unless(@@elev, "insufficient privileges - skipping")
55
60
  assert_respond_to(Admin, :delete_user)
56
61
  assert_nothing_raised{ Admin.delete_user('foo') }
57
62
  end
58
63
 
59
64
  def test_01_add_group
65
+ omit_unless(@@elev, "insufficient privileges - skipping")
60
66
  assert_respond_to(Admin, :add_group)
61
67
  assert_nothing_raised{ Admin.add_group(:name => 'bar') }
62
68
  end
63
-
69
+
64
70
  def test_02_configure_group
71
+ omit_unless(@@elev, "insufficient privileges - skipping")
65
72
  assert_respond_to(Admin, :configure_group)
66
73
  assert_nothing_raised{
67
74
  Admin.configure_group(:name => 'bar', :description => 'delete me')
68
75
  }
69
76
  end
70
-
77
+
71
78
  def test_03_delete_group
79
+ omit_unless(@@elev, "insufficient privileges - skipping")
72
80
  assert_respond_to(Admin, :delete_group)
73
81
  assert_nothing_raised{ Admin.delete_group('bar') }
74
82
  end
75
-
83
+
76
84
  def test_get_login_basic
77
85
  assert_respond_to(Admin, :get_login)
78
86
  assert_nothing_raised{ Admin.get_login }
@@ -85,13 +93,13 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
85
93
  def test_get_login_expected_errors
86
94
  assert_raise(ArgumentError){ Admin.get_login('foo') }
87
95
  end
88
-
96
+
89
97
  def test_get_user_basic
90
98
  assert_respond_to(Admin, :get_user)
91
99
  end
92
100
 
93
101
  def test_get_user_by_string
94
- assert_nothing_raised{ Admin.get_user(@user_name, :localaccount => true) }
102
+ assert_nothing_raised{ Admin.get_user(@user_name, :localaccount => true) }
95
103
  assert_kind_of(User, Admin.get_user(@user_name, :localaccount => true))
96
104
  end
97
105
 
@@ -99,7 +107,7 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
99
107
  assert_nothing_raised{ Admin.get_user(@user_id, :localaccount => true) }
100
108
  assert_kind_of(User, Admin.get_user(@user_id, :localaccount => true))
101
109
  end
102
-
110
+
103
111
  def test_get_user_by_string_with_options
104
112
  options = {:host => @@host, :localaccount => true}
105
113
  assert_nothing_raised{ Admin.get_user(@user_name, options) }
@@ -120,7 +128,7 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
120
128
  def test_get_user_expected_errors
121
129
  assert_raises(ArgumentError){ Admin.get_user }
122
130
  end
123
-
131
+
124
132
  def test_users_basic
125
133
  assert_respond_to(Admin, :users)
126
134
  assert_nothing_raised{ Admin.users(:localaccount => true) }
@@ -142,7 +150,7 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
142
150
  def test_get_group_basic
143
151
  assert_respond_to(Admin, :get_group)
144
152
  end
145
-
153
+
146
154
  def test_get_group_by_name
147
155
  assert_nothing_raised{ Admin.get_group(@group_name, :localaccount => true) }
148
156
  assert_kind_of(Group, Admin.get_group(@group_name, :localaccount => true))
@@ -152,7 +160,7 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
152
160
  assert_nothing_raised{ Admin.get_group(@group_id, :localaccount => true) }
153
161
  assert_kind_of(Group, Admin.get_group(@group_id, :localaccount => true))
154
162
  end
155
-
163
+
156
164
  def test_get_group_with_options
157
165
  assert_nothing_raised{ Admin.get_group(@group_name, :localaccount => true) }
158
166
  assert_kind_of(Group, Admin.get_group(@group_name, :localaccount => true))
@@ -166,7 +174,7 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
166
174
  def test_get_group_expected_errors
167
175
  assert_raise(ArgumentError){ Admin.get_group }
168
176
  end
169
-
177
+
170
178
  def test_groups_basic
171
179
  assert_respond_to(Admin, :groups)
172
180
  assert_nothing_raised{ Admin.groups(:localaccount => true) }
@@ -186,77 +194,77 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
186
194
  end
187
195
 
188
196
  # User class
189
-
197
+
190
198
  def test_user_instance_caption
191
199
  assert_respond_to(@user, :caption)
192
200
  assert_respond_to(@user, :caption=)
193
201
  end
194
-
202
+
195
203
  def test_user_instance_description
196
204
  assert_respond_to(@user, :description)
197
205
  assert_respond_to(@user, :description=)
198
206
  end
199
-
207
+
200
208
  def test_user_instance_domain
201
209
  assert_respond_to(@user, :domain)
202
210
  assert_respond_to(@user, :domain=)
203
211
  end
204
-
212
+
205
213
  def test_user_instance_password
206
214
  assert_respond_to(@user, :password)
207
215
  assert_respond_to(@user, :password=)
208
216
  end
209
-
217
+
210
218
  def test_user_instance_full_name
211
219
  assert_respond_to(@user, :full_name)
212
220
  assert_respond_to(@user, :full_name=)
213
221
  end
214
-
222
+
215
223
  def test_user_instance_name
216
224
  assert_respond_to(@user, :name)
217
225
  assert_respond_to(@user, :name=)
218
226
  end
219
-
227
+
220
228
  def test_user_instance_sid
221
229
  assert_respond_to(@user, :sid)
222
230
  assert_respond_to(@user, :sid=)
223
231
  end
224
-
232
+
225
233
  def test_user_instance_status
226
234
  assert_respond_to(@user, :status)
227
235
  assert_respond_to(@user, :status=)
228
236
  end
229
-
237
+
230
238
  def test_user_instance_disabled
231
239
  assert_respond_to(@user, :disabled?)
232
240
  assert_respond_to(@user, :disabled=)
233
241
  end
234
-
242
+
235
243
  def test_user_instance_local
236
244
  assert_respond_to(@user, :local?)
237
245
  assert_respond_to(@user, :local=)
238
246
  end
239
-
247
+
240
248
  def test_user_instance_lockout
241
249
  assert_respond_to(@user, :lockout?)
242
250
  assert_respond_to(@user, :lockout=)
243
251
  end
244
-
252
+
245
253
  def test_user_instance_password_changeable
246
254
  assert_respond_to(@user, :password_changeable?)
247
255
  assert_respond_to(@user, :password_changeable=)
248
256
  end
249
-
257
+
250
258
  def test_user_instance_password_expires
251
259
  assert_respond_to(@user, :password_expires?)
252
260
  assert_respond_to(@user, :password_expires=)
253
261
  end
254
-
262
+
255
263
  def test_user_instance_password_required
256
264
  assert_respond_to(@user, :password_required?)
257
265
  assert_respond_to(@user, :password_required=)
258
266
  end
259
-
267
+
260
268
  def test_user_instance_account_type
261
269
  assert_respond_to(@user, :account_type)
262
270
  assert_respond_to(@user, :account_type=)
@@ -266,64 +274,64 @@ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
266
274
  assert_respond_to(@user, :uid)
267
275
  assert_respond_to(@user, :uid=)
268
276
  end
269
-
277
+
270
278
  def test_user_dir_basic
271
279
  assert_respond_to(@user, :dir)
272
- assert_respond_to(@user, :dir=)
280
+ assert_respond_to(@user, :dir=)
273
281
  end
274
-
282
+
275
283
  def test_user_dir
276
284
  assert_nothing_raised{ @user = Admin.get_user(@user_name, :localaccount => true) }
277
285
  assert_kind_of([String, NilClass], @user.dir)
278
286
  end
279
-
287
+
280
288
  # Group class
281
-
289
+
282
290
  def test_group_instance_caption
283
291
  assert_respond_to(@group, :caption)
284
292
  assert_respond_to(@group, :caption=)
285
293
  end
286
-
294
+
287
295
  def test_group_instance_description
288
296
  assert_respond_to(@group, :description)
289
297
  assert_respond_to(@group, :description=)
290
298
  end
291
-
299
+
292
300
  def test_group_instance_domain
293
301
  assert_respond_to(@group, :domain)
294
302
  assert_respond_to(@group, :domain=)
295
303
  end
296
-
304
+
297
305
  def test_group_instance_install_date
298
306
  assert_respond_to(@group, :install_date)
299
307
  assert_respond_to(@group, :install_date=)
300
308
  end
301
-
309
+
302
310
  def test_group_instance_name
303
311
  assert_respond_to(@group, :name)
304
312
  assert_respond_to(@group, :name)
305
313
  end
306
-
314
+
307
315
  def test_group_instance_gid
308
316
  assert_respond_to(@group, :gid)
309
317
  assert_respond_to(@group, :gid=)
310
318
  end
311
-
319
+
312
320
  def test_group_instance_status
313
321
  assert_respond_to(@group, :status)
314
322
  assert_respond_to(@group, :status=)
315
323
  end
316
-
324
+
317
325
  def test_group_instance_sid
318
326
  assert_respond_to(@group, :sid)
319
327
  assert_respond_to(@group, :sid=)
320
328
  end
321
-
329
+
322
330
  def test_group_instance_sid_type
323
331
  assert_respond_to(@group, :sid_type)
324
332
  assert_respond_to(@group, :sid_type=)
325
333
  end
326
-
334
+
327
335
  def test_group_instance_local
328
336
  assert_respond_to(@group, :local?)
329
337
  assert_respond_to(@group, :local=)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sys-admin
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 15
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 5
9
- - 5
10
- version: 1.5.5
9
+ - 6
10
+ version: 1.5.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Daniel J. Berger
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-05 00:00:00 Z
18
+ date: 2011-07-30 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: test-unit
@@ -45,26 +45,24 @@ extra_rdoc_files:
45
45
  - MANIFEST
46
46
  - ext/sys/admin.c
47
47
  files:
48
- - sys-admin.gemspec
49
- - ext/sys/admin.h
50
- - ext/sys/admin.c
51
- - ext/extconf.rb
52
- - README
53
- - Rakefile
54
- - test/test_sys_admin_unix.rb
55
- - test/test_sys_admin.rb
56
- - test/test_sys_admin_windows.rb
57
- - MANIFEST
48
+ - CHANGES
58
49
  - doc/sys-admin-unix.txt
59
50
  - doc/sys-admin-windows.txt
60
- - CHANGES
61
51
  - examples/groups.rb
62
52
  - examples/users.rb
53
+ - ext/extconf.rb
54
+ - ext/sys/admin.c
55
+ - ext/sys/admin.h
56
+ - MANIFEST
57
+ - Rakefile
58
+ - README
59
+ - sys-admin.gemspec
60
+ - test/test_sys_admin.rb
61
+ - test/test_sys_admin_unix.rb
62
+ - test/test_sys_admin_windows.rb
63
63
  homepage: http://www.github.com/djberg96/sysutils
64
64
  licenses:
65
65
  - Artistic 2.0
66
- metadata: {}
67
-
68
66
  post_install_message:
69
67
  rdoc_options: []
70
68
 
@@ -91,9 +89,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
91
89
  requirements: []
92
90
 
93
91
  rubyforge_project: sysutils
94
- rubygems_version: 1.8.5
92
+ rubygems_version: 1.8.3
95
93
  signing_key:
96
- specification_version: 4
94
+ specification_version: 3
97
95
  summary: A unified, cross platform replacement for the "etc" library.
98
96
  test_files:
99
97
  - test/test_sys_admin.rb