sys-uname 0.7.2

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.
Files changed (8) hide show
  1. data/CHANGES +107 -0
  2. data/MANIFEST +16 -0
  3. data/README +30 -0
  4. data/doc/uname.txt +122 -0
  5. data/extconf.rb +28 -0
  6. data/lib/os/unix.c +300 -0
  7. data/test/tc_uname.rb +499 -0
  8. metadata +54 -0
data/CHANGES ADDED
@@ -0,0 +1,107 @@
1
+ == 0.7.2 - 5-Jul-2006
2
+ * Removed '?' from the struct member names on MS Windows since these are no
3
+ longer legal.
4
+ * Removed duplicate definition of Uname.version on MS Windows (oops).
5
+ * Added a gemspec.
6
+ * Added inline rdoc documentation to the source files.
7
+
8
+ == 0.7.1 - 5-May-2005
9
+ * Removed the uname.rd file. The uname.txt file is rdoc friendly, so you
10
+ can autogenerate html from that file if you wish.
11
+ * Removed the version.h file - no longer needed now that the Windows version
12
+ is pure Ruby.
13
+ * Renamed test.rb to uname_test.rb
14
+ * Minor setup modifications to the test suite.
15
+ * This package is now hosted on RubyForge.
16
+
17
+ == 0.7.0 - 11-Jan-2004
18
+ * Scrapped the C version for Windows in favor of a pure Ruby version that uses
19
+ WMI + OLE. I highly recommend using Ruby 1.8.2 or later on Win32 systems.
20
+ Earlier versions may cause segfaults.
21
+ * Added the isa_list, hw_provider, hw_serial_number, srpc_domain and
22
+ dhcp_cache methods for Solaris.
23
+ * Added install.rb program for Windows, and modified extconf.rb to only run on
24
+ non-Windows systems.
25
+ * The 'examples' directory has been moved to the toplevel directory.
26
+ * Removed the INSTALL file. That information is now included in the README.
27
+ * Documentation updates.
28
+
29
+ == 0.6.1 - 25-Apr-2004
30
+ * Simplified extconf.rb script and installation instructions.
31
+ * Combined three test scripts into a single test script.
32
+ * Warranty information added.
33
+
34
+ == 0.6.0 - 25-Jun-2003
35
+ * Added HP-UX support, including the id() class method (HP-UX only)
36
+ * Fixed minor bug in extconf.rb (forgot 'require ftools' at top)
37
+ * Added HP-UX specific tests and support
38
+ * Made test.rb friendlier for folks without TestUnit installed
39
+
40
+ == 0.5.0 - 16-Jun-2003
41
+ * Added OS X support, including the "model" method. Thanks to Mike Hall
42
+ for the patch
43
+ * Removed VERSION() class method. Use the constant instead
44
+ * Moved rd documentation to its own file (under /doc directory)
45
+ * Added a version.h file under 'lib' to store VERSION info for
46
+ all source files
47
+ * Modified extconf.rb file to handle OS X support. In addition, moved
48
+ test.rb into a static file under /test, instead of dynamically
49
+ generating it
50
+ * Fixed up test suite. Added OS X specific tests and support. Should now
51
+ work with TestUnit 0.1.6 or later
52
+
53
+ == 0.4.1 - 7-Feb-2003
54
+ * Fixed C89 issue (again) - thanks go to Daniel Zepeda for the spot
55
+ * Fixed bugs in extconf.rb file (rescue clause, ftools)
56
+
57
+ == 0.4.0 - 6-Feb-2003
58
+ * MS Windows support!
59
+ * Added a test suite and automatic test.rb creation
60
+ * Documentation additions/fixes
61
+ * Internal directory layout and filename changes (Changelog -> CHANGES)
62
+
63
+ == 0.3.3 - 6-Jan-2003
64
+ * Made the code C89 compliant for older compilers. Thanks to Paul Brannan
65
+ for teaching me how to fix this in general.
66
+ * Moved README to doc/uname.txt
67
+ * Created an INSTALL file
68
+ * Added a copyright notice
69
+ * Added a VERSION class method
70
+ * Changed tarball name to reflect RAA package name
71
+ * Minor doc changes
72
+
73
+ == 0.3.2 - 8-Aug-2002
74
+ * Changed the struct name returned by the 'uname()' method from
75
+ "Uname::UnameStruct" to just "UnameStruct". This was to make it
76
+ compliant with future versions of Ruby. The extra namespace was
77
+ redundant anyway.
78
+ * I include the documentation now, instead of making you install rd2 :)
79
+
80
+ == 0.3.1 - 22-Jul-2002
81
+ * Added the 'uname' class method, which returns a struct that contains all
82
+ of the uname information
83
+ * Added a test script. Do 'ruby test.rb' to run it.
84
+ * If rd2 is installed on your system, the documentation is automatically
85
+ generated for you.
86
+ * Moved html documentation to 'doc' directory.
87
+ * Changed version number style to be consistent with other 'Sys' modules
88
+ * Now installs into 'Sys-Uname-x.x.x' directory (instead of just 'Uname')
89
+
90
+ == 0.03 - 6-June-2002
91
+ * rd style documentation now inline
92
+ * README.html is now uname.html - created via rdtool
93
+ * The 'platform()' and 'architecture()' methods have been added for Solaris
94
+ * You can now do an 'include Sys' to shorten your syntax
95
+ * The whole 'Sys' class has been removed. Delete your sys.so file if you
96
+ installed a previous version of Sys-Uname
97
+
98
+ == 0.02 - 3-June-2002
99
+ * Potentially fatal memory problems corrected.
100
+ * Should now build with C++ as well
101
+ * Thanks to Mike Hall for both the spot and the fix
102
+ * Added a Changelog file
103
+ * Added a README.html file
104
+ * Added a Manifest file
105
+
106
+ == 0.01 - 31-May-2002
107
+ * Initial release (unannounced)
data/MANIFEST ADDED
@@ -0,0 +1,16 @@
1
+ extconf.rb
2
+ install.rb
3
+ MANIFEST
4
+ CHANGES
5
+ README
6
+ sys-uname.gemspec
7
+
8
+ doc/uname.rd
9
+ doc/uname.txt
10
+
11
+ examples/uname_test.rb
12
+
13
+ lib/os/unix.c
14
+ lib/os/windows.rb
15
+
16
+ test/tc_uname.rb
data/README ADDED
@@ -0,0 +1,30 @@
1
+ == Prerequisites
2
+ Unix: Ruby 1.8.0 or later
3
+ Windows: Ruby 1.8.2 or later (earlier versions segfault due to OLE bugs)
4
+
5
+ == Installation: Unix
6
+ ruby extconf.rb
7
+ make
8
+ ruby test/tc_uname.rb (optional)
9
+ make site-install
10
+
11
+ == Installation: Win32
12
+ ruby test\tc_uname.rb (optional)
13
+ ruby install.rb
14
+
15
+ == Solaris Notes
16
+ Folks building this package on SunOS get two extra methods: architecture()
17
+ and platform()
18
+
19
+ == OS X Notes
20
+ OS X users get the extra method "model()".
21
+
22
+ == HP-UX Notes
23
+ HP-UX users get the extra method "id()". This is actually a String, not
24
+ a Fixnum, because that's how it's defined in the utsname struct.
25
+
26
+ == MS Windows Notes
27
+ The C version for Windows has been completely scrapped in favor of an OLE
28
+ plus WMI approach. It is pure Ruby. Please see the MSDN documentation for
29
+ the Win32_OperatingSystem class for a complete list of what each of the
30
+ UnameStruct members mean.
data/doc/uname.txt ADDED
@@ -0,0 +1,122 @@
1
+ == Description
2
+ A Ruby interface to the 'uname' command.
3
+
4
+ == Synopsis
5
+ require 'sys/uname'
6
+ include Sys
7
+
8
+ puts Uname.nodename
9
+ puts Uname.version
10
+ puts Uname.sysname
11
+ puts Uname.machine
12
+ puts Uname.release
13
+
14
+ p Uname.uname
15
+
16
+ == Constants
17
+ VERSION
18
+ The current version number of sys-uname.
19
+
20
+ == Class Methods
21
+ Uname.sysname
22
+ Returns the operating system name. e.g. "SunOS"
23
+
24
+ Uname.nodename
25
+ Returns the nodename. This is usually, but not necessarily, the
26
+ same as the system's hostname.
27
+
28
+ You cannot currently set the nodename (root or otherwise). This may
29
+ be added in a future release.
30
+
31
+ Uname.machine
32
+ Returns the machine hardware type. e.g. "i686"
33
+
34
+ Uname.version
35
+ Returns the operating system version. e.g. "5.8". In the case of MS
36
+ Windows, it returns the version plus patch information, separated by
37
+ a hyphen, e.g. "2915-Service Pack 2".
38
+
39
+ Uname.release
40
+ Returns the operating system release. e.g. "2.2.16-3"
41
+
42
+ Uname.uname
43
+ Returns a struct of type UnameStruct that contains sysname, nodename,
44
+ machine, version, and release. On Solaris, it will also include
45
+ architecture and platform. On HP-UX, it will also include id.
46
+
47
+ MS Windows - there are many more, and different, fields in the struct.
48
+ Please see the MSDN documenation for a complete explanation of what
49
+ each of these members mean.
50
+
51
+ == Solaris Only
52
+ Uname.architecture
53
+ Returns the instruction set architecture. e.g. "sparc"
54
+
55
+ Uname.platform
56
+ Returns the platform identifier. e.g. "SUNW,Sun-Blade-100"
57
+
58
+ Uname.isa_list
59
+ Returns a space separated string containing a list of all variant
60
+ instruction set architectures executable on the current system.
61
+
62
+ They are listed in order of performance, from best to worst.
63
+
64
+ Uname.hw_provider
65
+ Returns the name of the hardware manufacturer.
66
+
67
+ Uname.hw_serial_number
68
+ Returns the ASCII representation of the hardware-specific serial number
69
+ of the machine that executes the function.
70
+
71
+ Uname.srpc_domain
72
+ Returns the name of the Secure Remote Procedure Call domain, if any.
73
+
74
+ Uname.dhcp_cache
75
+ Returns a hexidecimal encoding, in String form, of the name of the
76
+ interface configured by boot(1M) followed by the DHCPACK reply from
77
+ the server.
78
+
79
+ == OS X Only
80
+ Uname.model
81
+ Returns the model type, e.g. "PowerBook5,1"
82
+
83
+ == HP-UX Only
84
+ Uname.id
85
+ Returns the id number, e.g. 234233587. This is a String, not a Fixnum.
86
+
87
+ == Notes
88
+ Not all of the information that you might be used to seeing with
89
+ a 'uname -a' is available. This may be added in future releases,
90
+ but since different implementations provide different information
91
+ (via different header files) it will be a bit of a pain.
92
+
93
+ Windows users - please see the MSDN documentation for the
94
+ Win32_OperatingSystem class for a complete list of what each of the
95
+ UnameStruct members mean.
96
+
97
+ == Known Bugs
98
+ None that I'm aware of. Please log any bugs on the project page at
99
+ http://ruby-sysutils.sf.net.
100
+
101
+ == Future Plans
102
+ Add additional info for Linux, Solaris, BSD.
103
+
104
+ == License
105
+ Ruby's
106
+
107
+ == Copyright
108
+ (C) 2002-2005 Daniel J. Berger
109
+ All Rights Reserved
110
+
111
+ == Warranty
112
+ This package is provided "as is" and without any express or
113
+ implied warranties, including, without limitation, the implied
114
+ warranties of merchantability and fitness for a particular purpose.
115
+
116
+ == Author
117
+ Daniel Berger
118
+ djberg96 at yahoo dot com
119
+ imperator/rubyhacker1 on IRC (Freenode)
120
+
121
+ == See Also
122
+ uname(1) for unix, or WMI for MS Windows.
data/extconf.rb ADDED
@@ -0,0 +1,28 @@
1
+ ##########################
2
+ # extconf.rb - sys-uname
3
+ ##########################
4
+ require "mkmf"
5
+ require "ftools"
6
+
7
+ if File::ALT_SEPARATOR
8
+ STDERR.puts "Run 'ruby install.rb' instead for Windows"
9
+ STDERR.puts "Exiting..."
10
+ exit
11
+ else
12
+ File.delete("uname.c") if File.exists?("uname.c")
13
+ File.symlink("lib/os/unix.c","uname.c")
14
+ end
15
+
16
+ if RUBY_PLATFORM =~ /sunos|solaris/i
17
+ have_header("sys/systeminfo.h")
18
+ end
19
+
20
+ create_makefile("sys/uname")
21
+
22
+ ########################################################################
23
+ # Move any ".rb" files under 'lib/os/' to ".orig" to prevent mkmf from
24
+ # installing them during the 'make site-install' phase.
25
+ ########################################################################
26
+ Dir["lib/os/*.rb"].each{ |f|
27
+ File.rename(f,"lib/os/" + File.basename(f,".rb")+".orig")
28
+ }
data/lib/os/unix.c ADDED
@@ -0,0 +1,300 @@
1
+ /******************************************************************************
2
+ * unix.c (uname.c) - Ruby Extension for *nix (POSIX?) operating systems.
3
+ *
4
+ * Author(s):
5
+ * Daniel Berger (primary)
6
+ * Mike Hall (OS X patch)
7
+ *****************************************************************************/
8
+ #include "ruby.h"
9
+ #include <sys/utsname.h>
10
+
11
+ #define SYS_UNAME_VERSION "0.7.2"
12
+
13
+ /* Solaris */
14
+ #ifdef HAVE_SYS_SYSTEMINFO_H
15
+ #define BUFSIZE 257 /* Set as per the sysinfo(2) manpage */
16
+ #include <sys/systeminfo.h>
17
+ #endif
18
+
19
+ /* OS X - use Darwin's 'sysctl()' to get the model name */
20
+ #if defined(__MACH__) && defined(__APPLE__)
21
+ #include <sys/sysctl.h>
22
+ static int getmodel(char *buf, int n)
23
+ {
24
+ size_t sz = n;
25
+ int mib[2];
26
+
27
+ mib[0] = CTL_HW;
28
+ mib[1] = HW_MODEL;
29
+ return sysctl(mib, 2, buf, &sz, NULL, 0);
30
+ }
31
+ #endif
32
+
33
+ #ifdef __cplusplus
34
+ extern "C"
35
+ {
36
+ #endif
37
+
38
+ VALUE sUname;
39
+
40
+ /*
41
+ * Returns a struct of type UnameStruct that contains sysname, nodename,
42
+ * machine, version, and release. On Solaris, it will also include
43
+ * architecture and platform. On HP-UX, it will also include id.
44
+ */
45
+ static VALUE uname_uname_all()
46
+ {
47
+ struct utsname u;
48
+ uname(&u);
49
+
50
+ /* Extra brackets are for C89 compliance */
51
+ {
52
+ #ifdef HAVE_SYS_SYSTEMINFO_H
53
+ char platform[BUFSIZE];
54
+ char arch[BUFSIZE];
55
+ sysinfo(SI_ARCHITECTURE,arch,BUFSIZE);
56
+ sysinfo(SI_PLATFORM,platform,BUFSIZE);
57
+ #endif
58
+
59
+ #if defined(__MACH__) && defined(__APPLE__)
60
+ char model[BUFSIZ];
61
+ getmodel(model, sizeof(model));
62
+ #endif
63
+
64
+ return rb_struct_new(sUname,
65
+ rb_str_new2(u.sysname),
66
+ rb_str_new2(u.nodename),
67
+ rb_str_new2(u.machine),
68
+ rb_str_new2(u.version),
69
+ rb_str_new2(u.release)
70
+ #ifdef HAVE_SYS_SYSTEMINFO_H
71
+ ,rb_str_new2(arch),
72
+ rb_str_new2(platform)
73
+ #endif
74
+
75
+ #if defined(__MACH__) && defined(__APPLE__)
76
+ ,rb_str_new2(model)
77
+ #endif
78
+
79
+ #if defined(__hpux)
80
+ ,rb_str_new2(u.__idnumber)
81
+ #endif
82
+ );
83
+ }
84
+ }
85
+
86
+ /*
87
+ * Returns the nodename. This is usually, but not necessarily, the
88
+ * same as the system's hostname.
89
+ */
90
+ static VALUE uname_nodename()
91
+ {
92
+ struct utsname u;
93
+ uname(&u);
94
+ return rb_str_new2(u.nodename);
95
+ }
96
+
97
+ /*
98
+ * Returns the machine hardware type, e.g. "i686".
99
+ */
100
+ static VALUE uname_machine()
101
+ {
102
+ struct utsname u;
103
+ uname(&u);
104
+ return rb_str_new2(u.machine);
105
+ }
106
+
107
+ /*
108
+ * Returns the operating system version, e.g. "5.8".
109
+ */
110
+ static VALUE uname_version()
111
+ {
112
+ struct utsname u;
113
+ uname(&u);
114
+ return rb_str_new2(u.version);
115
+ }
116
+
117
+ /*
118
+ * Returns the operating system release. e.g. "2.2.16-3".
119
+ */
120
+ static VALUE uname_release()
121
+ {
122
+ struct utsname u;
123
+ uname(&u);
124
+ return rb_str_new2(u.release);
125
+ }
126
+
127
+ /*
128
+ * Returns the operating system name. e.g. "SunOS".
129
+ */
130
+ static VALUE uname_sysname()
131
+ {
132
+ struct utsname u;
133
+ uname(&u);
134
+ return rb_str_new2(u.sysname);
135
+ }
136
+
137
+ #ifdef HAVE_SYS_SYSTEMINFO_H
138
+ /*
139
+ * Returns the instruction set architecture, e.g. "sparc".
140
+ */
141
+ static VALUE uname_architecture()
142
+ {
143
+ char buf[BUFSIZE];
144
+ sysinfo(SI_ARCHITECTURE,buf,BUFSIZE);
145
+ return rb_str_new2(buf);
146
+ }
147
+
148
+ /*
149
+ * Returns the platform identifier. e.g. "SUNW,Sun-Blade-100".
150
+ */
151
+ static VALUE uname_platform()
152
+ {
153
+ char buf[BUFSIZE];
154
+ sysinfo(SI_PLATFORM,buf,BUFSIZE);
155
+ return rb_str_new2(buf);
156
+ }
157
+
158
+ #ifdef SI_ISALIST
159
+ /*
160
+ * Returns a space separated string containing a list of all variant
161
+ * instruction set architectures executable on the current system.
162
+ *
163
+ * They are listed in order of performance, from best to worst.
164
+ */
165
+ static VALUE uname_isalist()
166
+ {
167
+ char buf[BUFSIZE];
168
+ sysinfo(SI_ISALIST,buf,BUFSIZE);
169
+ return rb_str_new2(buf);
170
+ }
171
+ #endif
172
+
173
+ /*
174
+ * Returns the name of the hardware manufacturer.
175
+ */
176
+ static VALUE uname_hw_provider()
177
+ {
178
+ char buf[BUFSIZE];
179
+ sysinfo(SI_HW_PROVIDER,buf,BUFSIZE);
180
+ return rb_str_new2(buf);
181
+ }
182
+
183
+ /*
184
+ * Returns the ASCII representation of the hardware-specific serial number
185
+ * of the machine that executes the function.
186
+ */
187
+ static VALUE uname_hw_serial()
188
+ {
189
+ char buf[BUFSIZE];
190
+ sysinfo(SI_HW_SERIAL,buf,BUFSIZE);
191
+ return rb_Integer(rb_str_new2(buf));
192
+ }
193
+
194
+ /*
195
+ * Returns the name of the Secure Remote Procedure Call domain, if any.
196
+ */
197
+ static VALUE uname_srpc_domain()
198
+ {
199
+ char buf[BUFSIZE];
200
+ sysinfo(SI_SRPC_DOMAIN,buf,BUFSIZE);
201
+ return rb_str_new2(buf);
202
+ }
203
+
204
+ #ifdef SI_DHCP_CACHE
205
+ /*
206
+ * Returns a hexidecimal encoding, in String form, of the name of the
207
+ * interface configured by boot(1M) followed by the DHCPACK reply from
208
+ * the server.
209
+ */
210
+ static VALUE uname_dhcp_cache()
211
+ {
212
+ char buf[BUFSIZE];
213
+ sysinfo(SI_DHCP_CACHE,buf,BUFSIZE);
214
+ return rb_str_new2(buf);
215
+ }
216
+ #endif
217
+ #endif
218
+
219
+ #if defined(__MACH__) && defined(__APPLE__)
220
+ /*
221
+ * Returns the model type, e.g. "PowerBook5,1"
222
+ */
223
+ static VALUE uname_model()
224
+ {
225
+ char model[BUFSIZ];
226
+ getmodel(model, sizeof(model));
227
+ return rb_str_new2(model);
228
+ }
229
+ #endif
230
+
231
+ #if defined(__hpux)
232
+ /*
233
+ * Returns the id number, e.g. 234233587. This is a String, not a Fixnum.
234
+ */
235
+ static VALUE uname_id()
236
+ {
237
+ struct utsname u;
238
+ uname(&u);
239
+ return rb_str_new2(u.__idnumber);
240
+ }
241
+ #endif
242
+
243
+ /* An interface for returning uname (platform) information. */
244
+ void Init_uname()
245
+ {
246
+ VALUE sys_mSys, cUname;
247
+
248
+ sys_mSys = rb_define_module("Sys");
249
+ cUname = rb_define_class_under(sys_mSys, "Uname", rb_cObject);
250
+
251
+ rb_define_singleton_method(cUname, "sysname", uname_sysname, 0);
252
+ rb_define_singleton_method(cUname, "nodename",uname_nodename,0);
253
+ rb_define_singleton_method(cUname, "machine", uname_machine, 0);
254
+ rb_define_singleton_method(cUname, "version", uname_version, 0);
255
+ rb_define_singleton_method(cUname, "release", uname_release, 0);
256
+ rb_define_singleton_method(cUname, "uname", uname_uname_all, 0);
257
+
258
+ #ifdef HAVE_SYS_SYSTEMINFO_H
259
+ rb_define_singleton_method(cUname, "architecture", uname_architecture, 0);
260
+ rb_define_singleton_method(cUname, "platform", uname_platform, 0);
261
+ rb_define_singleton_method(cUname, "hw_provider", uname_hw_provider, 0);
262
+ rb_define_singleton_method(cUname, "hw_serial_number", uname_hw_serial, 0);
263
+ rb_define_singleton_method(cUname, "srpc_domain", uname_srpc_domain, 0);
264
+ #ifdef SI_ISALIST
265
+ rb_define_singleton_method(cUname, "isa_list", uname_isalist, 0);
266
+ #endif
267
+ #ifdef SI_DHCP_CACHE
268
+ rb_define_singleton_method(cUname, "dhcp_cache", uname_dhcp_cache, 0);
269
+ #endif
270
+ #endif
271
+
272
+ #if defined(__MACH__) && defined(__APPLE__)
273
+ rb_define_singleton_method(cUname, "model", uname_model, 0);
274
+ #endif
275
+
276
+ #if defined(__hpux)
277
+ rb_define_singleton_method(cUname, "id", uname_id, 0);
278
+ #endif
279
+
280
+ sUname = rb_struct_define("UnameStruct","sysname","nodename",
281
+ "machine","version","release",
282
+ #ifdef HAVE_SYS_SYSTEMINFO_H
283
+ "architecture","platform",
284
+ #endif
285
+
286
+ #if defined(__MACH__) && defined(__APPLE__)
287
+ "model",
288
+ #endif
289
+
290
+ #if defined(__hpux)
291
+ "id",
292
+ #endif
293
+ 0);
294
+
295
+ rb_define_const(cUname, "VERSION", rb_str_new2(SYS_UNAME_VERSION));
296
+ }
297
+
298
+ #ifdef __cplusplus
299
+ }
300
+ #endif
data/test/tc_uname.rb ADDED
@@ -0,0 +1,499 @@
1
+ ##############################################################################
2
+ # tc_uname.rb
3
+ #
4
+ # Test suite for the sys-uname package.
5
+ ##############################################################################
6
+ base = File.basename(Dir.pwd)
7
+
8
+ if base == "test" || base =~ /sys-uname/
9
+ require "ftools"
10
+
11
+ Dir.chdir("..") if base == "test"
12
+ Dir.mkdir("sys") unless File.exists?("sys")
13
+
14
+ extension = nil
15
+ case RUBY_PLATFORM
16
+ when /powerpc|darwin/i
17
+ extension = ".bundle"
18
+ when /hpux/i
19
+ extension = ".sl"
20
+ else
21
+ extension = ".so"
22
+ end
23
+
24
+ if File::ALT_SEPARATOR
25
+ file = "lib/os/windows.rb"
26
+ File.copy(file,"sys/uname.rb")
27
+ else
28
+ file = "uname" + extension
29
+ File.copy(file,"sys")
30
+ end
31
+ $LOAD_PATH.unshift Dir.pwd
32
+ end
33
+
34
+ require "sys/uname"
35
+ require "test/unit"
36
+ include Sys
37
+
38
+ # For testing purposes only
39
+ module Boolean; end
40
+ class TrueClass; include Boolean; end
41
+ class FalseClass; include Boolean; end
42
+
43
+ class TC_Uname < Test::Unit::TestCase
44
+ def test_version_constant
45
+ assert_not_nil(Uname::VERSION)
46
+ assert_nothing_raised{ Uname::VERSION }
47
+ assert_kind_of(String, Uname::VERSION)
48
+ assert_equal("0.7.2", Uname::VERSION, "Bad version")
49
+ end
50
+
51
+ def test_machine
52
+ assert_respond_to(Uname,:machine)
53
+ assert_nothing_raised{ Uname.machine }
54
+ assert_kind_of(String, Uname.machine)
55
+ end
56
+
57
+ def test_version_method
58
+ assert_respond_to(Uname, :version)
59
+ assert_nothing_raised{ Uname.version }
60
+ assert_kind_of(String, Uname.version)
61
+ end
62
+
63
+ def test_nodename
64
+ assert_respond_to(Uname, :nodename)
65
+ assert_nothing_raised{ Uname.nodename }
66
+ assert_kind_of(String, Uname.nodename)
67
+ end
68
+
69
+ def test_release
70
+ assert_respond_to(Uname, :release)
71
+ assert_nothing_raised{ Uname.release }
72
+ assert_kind_of(String, Uname.release)
73
+ end
74
+
75
+ def test_sysname
76
+ assert_respond_to(Uname, :sysname)
77
+ assert_nothing_raised{ Uname.sysname }
78
+ assert_kind_of(String, Uname.sysname, "Invalid Type")
79
+ end
80
+
81
+ def test_architecture
82
+ if RUBY_PLATFORM =~ /sunos|solaris/i
83
+ assert_respond_to(Uname, :architecture)
84
+ assert_nothing_raised{ Uname.architecture }
85
+ assert_kind_of(String, Uname.architecture)
86
+ else
87
+ puts "'architecture' test skipped on this platform"
88
+ end
89
+ end
90
+
91
+ def test_platform
92
+ if RUBY_PLATFORM =~ /sunos|solaris/i
93
+ assert_respond_to(Uname, :platform)
94
+ assert_nothing_raised{ Uname.platform }
95
+ assert_kind_of(String, Uname.platform)
96
+ else
97
+ puts "'platform' test skipped on this platform"
98
+ end
99
+ end
100
+
101
+ def test_isa_list
102
+ if RUBY_PLATFORM =~ /sunos|solaris/i
103
+ assert_respond_to(Uname, :isa_list)
104
+ assert_nothing_raised{ Uname.isa_list }
105
+ assert_kind_of(String, Uname.isa_list)
106
+ else
107
+ puts "'isa_list' test skipped on this platform"
108
+ end
109
+ end
110
+
111
+ def test_hw_provider
112
+ if RUBY_PLATFORM =~ /sunos|solaris/i
113
+ assert_respond_to(Uname,:hw_provider)
114
+ assert_nothing_raised{ Uname.hw_provider }
115
+ assert_kind_of(String, Uname.hw_provider)
116
+ else
117
+ puts "'hw_provider' test skipped on this platform"
118
+ end
119
+ end
120
+
121
+ def test_hw_serial_number
122
+ if RUBY_PLATFORM =~ /sunos|solaris/i
123
+ assert_respond_to(Uname, :hw_serial_number)
124
+ assert_nothing_raised{ Uname.hw_serial_number }
125
+ assert_kind_of(Integer, Uname.hw_serial_number)
126
+ else
127
+ puts "'hw_serial_number' test skipped on this platform"
128
+ end
129
+ end
130
+
131
+ def test_srpc_domain
132
+ if RUBY_PLATFORM =~ /sunos|solaris/i
133
+ assert_respond_to(Uname, :srpc_domain)
134
+ assert_nothing_raised{ Uname.srpc_domain }
135
+ assert_kind_of(String, Uname.srpc_domain)
136
+ else
137
+ puts "'srpc_domain' test skipped on this platform"
138
+ end
139
+ end
140
+
141
+ def test_dhcp_cache
142
+ if RUBY_PLATFORM =~ /sunos|solaris/i
143
+ assert_respond_to(Uname, :dhcp_cache)
144
+ assert_nothing_raised{ Uname.dhcp_cache }
145
+ assert_kind_of(String, Uname.dhcp_cache)
146
+ else
147
+ puts "'srpc_domain' test skipped on this platform"
148
+ end
149
+ end
150
+
151
+ def test_model
152
+ if RUBY_PLATFORM =~ /darwin|powerpc/i
153
+ assert_respond_to(Uname, :model)
154
+ assert_nothing_raised{ Uname.model }
155
+ assert_kind_of(String, Uname.model)
156
+ else
157
+ puts "'model' test skipped on this platform"
158
+ end
159
+ end
160
+
161
+ def test_id
162
+ if RUBY_PLATFORM =~ /hpux/i
163
+ assert_respond_to(Uname, :id)
164
+ assert_nothing_raised{ Uname.id }
165
+ assert_kind_of(String, Uname.id)
166
+ else
167
+ puts "'id' test skipped on this platform"
168
+ end
169
+ end
170
+
171
+ def test_uname_struct
172
+ members = %w/sysname nodename machine version release/
173
+ case RUBY_PLATFORM
174
+ when /sunos|solaris/i
175
+ members.push("architecture","platform")
176
+ when /powerpc|darwin/i
177
+ members.push("model")
178
+ when /hpux/i
179
+ members.push("id")
180
+ when /win32|mingw|cygwin|dos/i
181
+ members = %w/
182
+ boot_device build_number build_type caption code_set country_code
183
+ creation_class_name cscreation_class_name csd_version cs_name
184
+ current_time_zone debug description distributed
185
+ foreground_application_boost free_physical_memory
186
+ free_space_in_paging_files free_virtual_memory
187
+ install_date last_bootup_time local_date_time locale
188
+ manufacturer max_number_of_processes max_process_memory_size
189
+ name number_of_licensed_users number_of_processes
190
+ number_of_users organization os_language os_product_suite
191
+ os_type other_type_description plus_product_id
192
+ plus_version_number primary quantum_length quantum_type
193
+ registered_user serial_number service_pack_major_version
194
+ service_pack_minor_version size_stored_in_paging_files
195
+ status system_device system_directory total_swap_space_size
196
+ total_virtual_memory_size total_visible_memory_size version
197
+ windows_directory
198
+ /
199
+ end
200
+ assert_nothing_raised{ Uname.uname }
201
+ assert_kind_of(Struct, Uname.uname, "Invalid Type")
202
+ assert_equal(members, Uname.uname.members, "Bad struct members")
203
+ end
204
+
205
+ # The following tests are win32 only
206
+ if RUBY_PLATFORM.match('mswin')
207
+ def test_boot_device
208
+ assert_nothing_raised{ Uname.uname.boot_device }
209
+ assert_kind_of(String, Uname.uname.boot_device)
210
+ end
211
+
212
+ def test_build_number
213
+ assert_nothing_raised{ Uname.uname.build_number }
214
+ assert_kind_of(String, Uname.uname.build_number)
215
+ end
216
+
217
+ def test_build_type
218
+ assert_nothing_raised{ Uname.uname.build_type }
219
+ assert_kind_of(String, Uname.uname.build_type)
220
+ end
221
+
222
+ def test_caption
223
+ assert_nothing_raised{ Uname.uname.caption }
224
+ assert_kind_of(String, Uname.uname.caption)
225
+ end
226
+
227
+ def test_code_set
228
+ assert_nothing_raised{ Uname.uname.code_set }
229
+ assert_kind_of(String, Uname.uname.code_set)
230
+ end
231
+
232
+ def test_country_code
233
+ assert_nothing_raised{ Uname.uname.country_code }
234
+ assert_kind_of(String, Uname.uname.country_code)
235
+ end
236
+
237
+ def test_creation_class_name
238
+ assert_nothing_raised{ Uname.uname.creation_class_name }
239
+ assert_kind_of(String, Uname.uname.creation_class_name)
240
+ end
241
+
242
+ def test_cscreation_class_name
243
+ assert_nothing_raised{ Uname.uname.cscreation_class_name }
244
+ assert_kind_of(String, Uname.uname.cscreation_class_name)
245
+ end
246
+
247
+ def test_csd_version
248
+ assert_nothing_raised{ Uname.uname.csd_version }
249
+ assert_kind_of(String, Uname.uname.csd_version)
250
+ end
251
+
252
+ def test_cs_name
253
+ assert_nothing_raised{ Uname.uname.cs_name }
254
+ assert_kind_of(String, Uname.uname.cs_name)
255
+ end
256
+
257
+ def test_current_time_zone
258
+ assert_nothing_raised{ Uname.uname.current_time_zone }
259
+ assert_kind_of(Fixnum, Uname.uname.current_time_zone)
260
+ end
261
+
262
+ def test_debug
263
+ assert_nothing_raised{ Uname.uname.debug }
264
+ assert_kind_of(Boolean, Uname.uname.debug)
265
+ end
266
+
267
+ def test_description
268
+ assert_nothing_raised{ Uname.uname.description }
269
+ assert_kind_of(String, Uname.uname.description)
270
+ end
271
+
272
+ def test_distributed
273
+ assert_nothing_raised{ Uname.uname.distributed }
274
+ assert_kind_of(Boolean, Uname.uname.distributed)
275
+ end
276
+
277
+ # Not yet supported - WinXP or later only
278
+ #def test_encryption_level
279
+ # assert_nothing_raised{ Uname.uname.encryption_level }
280
+ # assert_kind_of(Fixnum,Uname.uname.encryption_level)
281
+ #end
282
+
283
+ def test_foreground_application_boost
284
+ assert_nothing_raised{ Uname.uname.foreground_application_boost }
285
+ assert_kind_of(Fixnum, Uname.uname.foreground_application_boost)
286
+ end
287
+
288
+ def test_free_physical_memory
289
+ assert_nothing_raised{ Uname.uname.free_physical_memory }
290
+ assert_kind_of(Fixnum, Uname.uname.free_physical_memory)
291
+ end
292
+
293
+ def test_free_space_in_paging_files
294
+ assert_nothing_raised{ Uname.uname.free_space_in_paging_files }
295
+ assert_kind_of(Fixnum, Uname.uname.free_space_in_paging_files)
296
+ end
297
+
298
+ def test_free_virtual_memory
299
+ assert_nothing_raised{ Uname.uname.free_virtual_memory}
300
+ assert_kind_of(Fixnum, Uname.uname.free_virtual_memory)
301
+ end
302
+
303
+ def test_install_date
304
+ assert_nothing_raised{ Uname.uname.install_date}
305
+ assert_kind_of(Time, Uname.uname.install_date)
306
+ end
307
+
308
+ # Not yet supported - WinXP or later only
309
+ #def test_large_system_cache
310
+ # assert_nothing_raised{ Uname.uname.large_system_cache}
311
+ # assert_kind_of(Time,Uname.uname.large_system_cache)
312
+ #end
313
+
314
+ def test_last_bootup_time
315
+ assert_nothing_raised{ Uname.uname.last_bootup_time}
316
+ assert_kind_of(Time, Uname.uname.last_bootup_time)
317
+ end
318
+
319
+ def test_local_date_time
320
+ assert_nothing_raised{ Uname.uname.local_date_time}
321
+ assert_kind_of(Time, Uname.uname.local_date_time)
322
+ end
323
+
324
+ def test_locale
325
+ assert_nothing_raised{ Uname.uname.locale}
326
+ assert_kind_of(String, Uname.uname.locale)
327
+ end
328
+
329
+ def test_manufacturer
330
+ assert_nothing_raised{ Uname.uname.manufacturer}
331
+ assert_kind_of(String, Uname.uname.manufacturer)
332
+ end
333
+
334
+ def test_max_number_of_processes
335
+ assert_nothing_raised{ Uname.uname.max_number_of_processes}
336
+ assert_kind_of(Fixnum, Uname.uname.max_number_of_processes)
337
+ end
338
+
339
+ def test_max_process_memory_size
340
+ assert_nothing_raised{ Uname.uname.max_process_memory_size}
341
+ assert_kind_of(Fixnum, Uname.uname.max_process_memory_size)
342
+ end
343
+
344
+ def test_name
345
+ assert_nothing_raised{ Uname.uname.name}
346
+ assert_kind_of(String, Uname.uname.name)
347
+ end
348
+
349
+ # Fails on Win XP Pro - returns nil - reason unknown
350
+ #def test_number_of_licensed_users
351
+ # assert_nothing_raised{ Uname.uname.number_of_licensed_users}
352
+ # assert_kind_of(Fixnum,Uname.uname.number_of_licensed_users)
353
+ #end
354
+
355
+ def test_number_of_processes
356
+ assert_nothing_raised{ Uname.uname.number_of_processes}
357
+ assert_kind_of(Fixnum, Uname.uname.number_of_processes)
358
+ end
359
+
360
+ def test_number_of_users
361
+ assert_nothing_raised{ Uname.uname.number_of_users}
362
+ assert_kind_of(Fixnum, Uname.uname.number_of_users)
363
+ end
364
+
365
+ def test_organization
366
+ assert_nothing_raised{ Uname.uname.organization}
367
+ assert_kind_of(String, Uname.uname.organization)
368
+ end
369
+
370
+ # Eventually replace Fixnum with a string (?)
371
+ def test_os_language
372
+ assert_nothing_raised{ Uname.uname.os_language}
373
+ assert_kind_of(Fixnum, Uname.uname.os_language)
374
+ end
375
+
376
+ # Fails on Win XP Pro - returns nil - reason unknown
377
+ #def test_os_product_suite
378
+ # assert_nothing_raised{ Uname.uname.os_product_suite}
379
+ # assert_kind_of(Fixnum,Uname.uname.os_product_suite)
380
+ #end
381
+
382
+ def test_os_type
383
+ assert_nothing_raised{ Uname.uname.os_type}
384
+ assert_kind_of(Fixnum, Uname.uname.os_type)
385
+ end
386
+
387
+ # Fails?
388
+ #def test_other_type_restriction
389
+ # assert_nothing_raised{ Uname.uname.other_type_restriction}
390
+ # assert_kind_of(Fixnum,Uname.uname.other_type_restriction)
391
+ #end
392
+
393
+ # Might be nil
394
+ def test_plus_product_id
395
+ assert_nothing_raised{ Uname.uname.plus_product_id}
396
+ end
397
+
398
+ # Might be nil
399
+ def test_plus_version_number
400
+ assert_nothing_raised{ Uname.uname.plus_version_number}
401
+ end
402
+
403
+ def test_primary
404
+ assert_nothing_raised{ Uname.uname.primary}
405
+ assert_kind_of(Boolean, Uname.uname.primary)
406
+ end
407
+
408
+ # Not yet supported - WinXP or later only
409
+ # def test_product_type
410
+ # assert_nothing_raised{ Uname.uname.product_type}
411
+ # assert_kind_of(Fixnum,Uname.uname.product_type)
412
+ # end
413
+
414
+ def test_quantum_length
415
+ assert_nothing_raised{ Uname.uname.quantum_length}
416
+ assert_kind_of(Fixnum, Uname.uname.quantum_length)
417
+ end
418
+
419
+ def test_quantum_type
420
+ assert_nothing_raised{ Uname.uname.quantum_type}
421
+ assert_kind_of(Fixnum, Uname.uname.quantum_type)
422
+ end
423
+
424
+ def test_registered_user
425
+ assert_nothing_raised{ Uname.uname.registered_user}
426
+ assert_kind_of(String, Uname.uname.registered_user)
427
+ end
428
+
429
+ def test_serial_number
430
+ assert_nothing_raised{ Uname.uname.serial_number}
431
+ assert_kind_of(String, Uname.uname.serial_number)
432
+ end
433
+
434
+ # This is nil on NT 4
435
+ def test_service_pack_major_version
436
+ assert_nothing_raised{ Uname.uname.service_pack_major_version}
437
+ assert_kind_of(Fixnum, Uname.uname.service_pack_major_version)
438
+ end
439
+
440
+ # This is nil on NT 4
441
+ def test_service_pack_major_version
442
+ assert_nothing_raised{ Uname.uname.service_pack_minor_version}
443
+ assert_kind_of(Fixnum, Uname.uname.service_pack_minor_version)
444
+ end
445
+
446
+ def test_status
447
+ assert_nothing_raised{ Uname.uname.status}
448
+ assert_kind_of(String, Uname.uname.status)
449
+ end
450
+
451
+ # Not yet supported - WinXP or later only
452
+ #def test_suite_mask
453
+ # assert_nothing_raised{ Uname.uname.suite_mask}
454
+ # assert_kind_of(String,Uname.uname.suite_mask)
455
+ #end
456
+
457
+ def test_system_device
458
+ assert_nothing_raised{ Uname.uname.system_device}
459
+ assert_kind_of(String, Uname.uname.system_device)
460
+ end
461
+
462
+ def test_system_directory
463
+ assert_nothing_raised{ Uname.uname.system_directory}
464
+ assert_kind_of(String, Uname.uname.system_directory)
465
+ end
466
+
467
+ # Not yet supported - WinXP or later only
468
+ #def test_system_drive
469
+ # assert_nothing_raised{ Uname.uname.system_drive}
470
+ # assert_kind_of(String,Uname.uname.system_drive)
471
+ #end
472
+
473
+ # Fails on Win XP Pro - returns nil - reason unknown
474
+ #def test_total_swap_space_size
475
+ # assert_nothing_raised{ Uname.uname.total_swap_space_size}
476
+ # assert_kind_of(Fixnum,Uname.uname.total_swap_space_size)
477
+ #end
478
+
479
+ def test_total_virtual_memory_size
480
+ assert_nothing_raised{ Uname.uname.total_virtual_memory_size}
481
+ assert_kind_of(Fixnum, Uname.uname.total_virtual_memory_size)
482
+ end
483
+
484
+ def test_total_visible_memory_size
485
+ assert_nothing_raised{ Uname.uname.total_visible_memory_size}
486
+ assert_kind_of(Fixnum, Uname.uname.total_visible_memory_size)
487
+ end
488
+
489
+ def test_version
490
+ assert_nothing_raised{ Uname.uname.version}
491
+ assert_kind_of(String, Uname.uname.version)
492
+ end
493
+
494
+ def test_windows_directory
495
+ assert_nothing_raised{ Uname.uname.windows_directory}
496
+ assert_kind_of(String, Uname.uname.windows_directory)
497
+ end
498
+ end
499
+ end
metadata ADDED
@@ -0,0 +1,54 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.0
3
+ specification_version: 1
4
+ name: sys-uname
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.7.2
7
+ date: 2006-07-05 00:00:00 -06:00
8
+ summary: An interface for returning uname (platform) information
9
+ require_paths:
10
+ - lib
11
+ email: djberg96@gmail.com
12
+ homepage: http://www.rubyforge.org/projects/sysutils
13
+ rubyforge_project: sysutils
14
+ description: An interface for returning uname (platform) information
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.8.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Daniel J. Berger
31
+ files:
32
+ - doc/uname.txt
33
+ - test/tc_uname.rb
34
+ - CHANGES
35
+ - MANIFEST
36
+ - README
37
+ - extconf.rb
38
+ - lib/os/unix.c
39
+ test_files:
40
+ - test/tc_uname.rb
41
+ rdoc_options: []
42
+
43
+ extra_rdoc_files:
44
+ - CHANGES
45
+ - README
46
+ - MANIFEST
47
+ executables: []
48
+
49
+ extensions:
50
+ - extconf.rb
51
+ requirements: []
52
+
53
+ dependencies: []
54
+