Update to RDoc 2.1.0 r112
[rbx.git] / test / rubygems / test_gem_platform.rb
blob648c2a9f36915dabee39cfe08cae3d90085bf0c9
1 require File.join(File.expand_path(File.dirname(__FILE__)), 'gemutilities')
2 require 'test/unit'
3 require 'rubygems/platform'
4 require 'rbconfig'
6 class TestGemPlatform < RubyGemTestCase
8   def test_self_const_missing
9     consts = [:DARWIN, :LINUX_586, :MSWIN32, :PPC_DARWIN, :WIN32, :X86_LINUX]
11     consts.each do |const|
12       e = assert_raise NameError do
13         Gem::Platform.const_missing const
14       end
16       assert_equal "#{const} has been removed, use CURRENT instead",
17                    e.message
18     end
19   end
21   def test_self_local
22     util_set_arch 'i686-darwin8.10.1'
24     assert_equal Gem::Platform.new(%w[x86 darwin 8]), Gem::Platform.local
25   end
27   def test_self_match
28     assert Gem::Platform.match(nil), 'nil == ruby'
29     assert Gem::Platform.match(Gem::Platform.local), 'exact match'
30     assert Gem::Platform.match(Gem::Platform.local.to_s), '=~ match'
31     assert Gem::Platform.match(Gem::Platform::RUBY), 'ruby'
32   end
34   def test_self_new
35     assert_equal Gem::Platform.local, Gem::Platform.new(Gem::Platform::CURRENT)
36     assert_equal Gem::Platform::RUBY, Gem::Platform.new(Gem::Platform::RUBY)
37     assert_equal Gem::Platform::RUBY, Gem::Platform.new(nil)
38     assert_equal Gem::Platform::RUBY, Gem::Platform.new('')
39   end
41   def test_initialize
42     test_cases = {
43       'amd64-freebsd6'         => ['amd64',     'freebsd',   '6'],
44       'hppa2.0w-hpux11.31'     => ['hppa2.0w',  'hpux',      '11'],
45       'java'                   => [nil,         'java',      nil],
46       'jruby'                  => [nil,         'java',      nil],
47       'powerpc-aix5.3.0.0'     => ['powerpc',   'aix',       '5'],
48       'powerpc-darwin7'        => ['powerpc',   'darwin',    '7'],
49       'powerpc-darwin8'        => ['powerpc',   'darwin',    '8'],
50       'powerpc-linux'          => ['powerpc',   'linux',     nil],
51       'powerpc64-linux'        => ['powerpc64', 'linux',     nil],
52       'sparc-solaris2.10'      => ['sparc',     'solaris',   '2.10'],
53       'sparc-solaris2.8'       => ['sparc',     'solaris',   '2.8'],
54       'sparc-solaris2.9'       => ['sparc',     'solaris',   '2.9'],
55       'universal-darwin8'      => ['universal', 'darwin',    '8'],
56       'universal-darwin9'      => ['universal', 'darwin',    '9'],
57       'i386-cygwin'            => ['x86',       'cygwin',    nil],
58       'i686-darwin'            => ['x86',       'darwin',    nil],
59       'i686-darwin8.4.1'       => ['x86',       'darwin',    '8'],
60       'i386-freebsd4.11'       => ['x86',       'freebsd',   '4'],
61       'i386-freebsd5'          => ['x86',       'freebsd',   '5'],
62       'i386-freebsd6'          => ['x86',       'freebsd',   '6'],
63       'i386-freebsd7'          => ['x86',       'freebsd',   '7'],
64       'i386-java1.5'           => ['x86',       'java',      '1.5'],
65       'x86-java1.6'            => ['x86',       'java',      '1.6'],
66       'i386-java1.6'           => ['x86',       'java',      '1.6'],
67       'i686-linux'             => ['x86',       'linux',     nil],
68       'i586-linux'             => ['x86',       'linux',     nil],
69       'i486-linux'             => ['x86',       'linux',     nil],
70       'i386-linux'             => ['x86',       'linux',     nil],
71       'i586-linux-gnu'         => ['x86',       'linux',     nil],
72       'i386-linux-gnu'         => ['x86',       'linux',     nil],
73       'i386-mingw32'           => ['x86',       'mingw32',   nil],
74       'i386-mswin32'           => ['x86',       'mswin32',   nil],
75       'i386-mswin32_80'        => ['x86',       'mswin32',   '80'],
76       'i386-mswin32-80'        => ['x86',       'mswin32',   '80'],
77       'x86-mswin32'            => ['x86',       'mswin32',   nil],
78       'x86-mswin32_60'         => ['x86',       'mswin32',   '60'],
79       'x86-mswin32-60'         => ['x86',       'mswin32',   '60'],
80       'i386-netbsdelf'         => ['x86',       'netbsdelf', nil],
81       'i386-openbsd4.0'        => ['x86',       'openbsd',   '4.0'],
82       'i386-solaris2.10'       => ['x86',       'solaris',   '2.10'],
83       'i386-solaris2.8'        => ['x86',       'solaris',   '2.8'],
84       'mswin32'                => ['x86',       'mswin32',   nil],
85       'x86_64-linux'           => ['x86_64',    'linux',     nil],
86       'x86_64-openbsd3.9'      => ['x86_64',    'openbsd',   '3.9'],
87       'x86_64-openbsd4.0'      => ['x86_64',    'openbsd',   '4.0'],
88     }
90     test_cases.each do |arch, expected|
91       platform = Gem::Platform.new arch
92       assert_equal expected, platform.to_a, arch.inspect
93     end
94   end
96   def test_initialize_command_line
97     expected = ['x86', 'mswin32', nil]
99     platform = Gem::Platform.new 'i386-mswin32'
101     assert_equal expected, platform.to_a, 'i386-mswin32'
103     expected = ['x86', 'mswin32', '80']
105     platform = Gem::Platform.new 'i386-mswin32-80'
107     assert_equal expected, platform.to_a, 'i386-mswin32-80'
108   end
110   def test_initialize_mswin32_vc6
111     orig_RUBY_SO_NAME = Config::CONFIG['RUBY_SO_NAME']
112     Config::CONFIG['RUBY_SO_NAME'] = 'msvcrt-ruby18'
114     expected = ['x86', 'mswin32', nil]
116     platform = Gem::Platform.new 'i386-mswin32'
118     assert_equal expected, platform.to_a, 'i386-mswin32 VC6'
119   ensure
120     Config::CONFIG['RUBY_SO_NAME'] = orig_RUBY_SO_NAME
121   end
123   def test_initialize_platform
124     platform = Gem::Platform.new 'cpu-my_platform1'
125     expected = Gem::Platform.new platform
127     assert_equal 'cpu', platform.cpu
128     assert_equal 'my_platform', platform.os
129     assert_equal '1', platform.version
130   end
132   def test_initialize_test
133     platform = Gem::Platform.new 'cpu-my_platform1'
134     assert_equal 'cpu', platform.cpu
135     assert_equal 'my_platform', platform.os
136     assert_equal '1', platform.version
138     platform = Gem::Platform.new 'cpu-other_platform1'
139     assert_equal 'cpu', platform.cpu
140     assert_equal 'other_platform', platform.os
141     assert_equal '1', platform.version
142   end
144   def test_to_s
145     if win_platform? then
146       assert_equal 'x86-mswin32-60', Gem::Platform.local.to_s
147     else
148       assert_equal 'x86-darwin-8', Gem::Platform.local.to_s
149     end
150   end
152   def test_equals2
153     my = Gem::Platform.new %w[cpu my_platform 1]
154     other = Gem::Platform.new %w[cpu other_platform 1]
156     assert_equal my, my
157     assert_not_equal my, other
158     assert_not_equal other, my
159   end
161   def test_equals3
162     my = Gem::Platform.new %w[cpu my_platform 1]
163     other = Gem::Platform.new %w[cpu other_platform 1]
165     assert(my === my)
166     assert !(other === my)
167     assert !(my === other)
168   end
170   def test_equals3_cpu
171     ppc_darwin8 = Gem::Platform.new 'powerpc-darwin8.0'
172     uni_darwin8 = Gem::Platform.new 'universal-darwin8.0'
173     x86_darwin8 = Gem::Platform.new 'i686-darwin8.0'
175     util_set_arch 'powerpc-darwin8'
176     assert((ppc_darwin8 === Gem::Platform.local), 'powerpc =~ universal')
177     assert((uni_darwin8 === Gem::Platform.local), 'powerpc =~ universal')
178     assert !(x86_darwin8 === Gem::Platform.local), 'powerpc =~ universal'
180     util_set_arch 'i686-darwin8'
181     assert !(ppc_darwin8 === Gem::Platform.local), 'powerpc =~ universal'
182     assert((uni_darwin8 === Gem::Platform.local), 'x86 =~ universal')
183     assert((x86_darwin8 === Gem::Platform.local), 'powerpc =~ universal')
185     util_set_arch 'universal-darwin8'
186     assert((ppc_darwin8 === Gem::Platform.local), 'universal =~ ppc')
187     assert((uni_darwin8 === Gem::Platform.local), 'universal =~ universal')
188     assert((x86_darwin8 === Gem::Platform.local), 'universal =~ x86')
189   end
191   def test_equals3_version
192     util_set_arch 'i686-darwin8'
194     x86_darwin = Gem::Platform.new ['x86', 'darwin', nil]
195     x86_darwin7 = Gem::Platform.new ['x86', 'darwin', '7']
196     x86_darwin8 = Gem::Platform.new ['x86', 'darwin', '8']
197     x86_darwin9 = Gem::Platform.new ['x86', 'darwin', '9']
199     assert((x86_darwin  === Gem::Platform.local), 'x86_darwin === x86_darwin8')
200     assert((x86_darwin8 === Gem::Platform.local), 'x86_darwin8 === x86_darwin8')
202     assert !(x86_darwin7 === Gem::Platform.local), 'x86_darwin7 === x86_darwin8'
203     assert !(x86_darwin9 === Gem::Platform.local), 'x86_darwin9 === x86_darwin8'
204   end
206   def test_equals_tilde
207     util_set_arch 'i386-mswin32'
209     assert_match 'mswin32',      Gem::Platform.local
210     assert_match 'i386-mswin32', Gem::Platform.local
212     # oddballs
213     assert_match 'i386-mswin32-mq5.3', Gem::Platform.local
214     assert_match 'i386-mswin32-mq6',   Gem::Platform.local
215     deny_match   'win32-1.8.2-VC7',    Gem::Platform.local
216     deny_match   'win32-1.8.4-VC6',    Gem::Platform.local
217     deny_match   'win32-source',       Gem::Platform.local
218     deny_match   'windows',            Gem::Platform.local
220     util_set_arch 'i686-linux'
221     assert_match 'i486-linux', Gem::Platform.local
222     assert_match 'i586-linux', Gem::Platform.local
223     assert_match 'i686-linux', Gem::Platform.local
225     util_set_arch 'i686-darwin8'
226     assert_match 'i686-darwin8.4.1', Gem::Platform.local
227     assert_match 'i686-darwin8.8.2', Gem::Platform.local
229     util_set_arch 'java'
230     assert_match 'java',  Gem::Platform.local
231     assert_match 'jruby', Gem::Platform.local
233     util_set_arch 'powerpc-darwin'
234     assert_match 'powerpc-darwin', Gem::Platform.local
236     util_set_arch 'powerpc-darwin7'
237     assert_match 'powerpc-darwin7.9.0', Gem::Platform.local
239     util_set_arch 'powerpc-darwin8'
240     assert_match 'powerpc-darwin8.10.0', Gem::Platform.local
242     util_set_arch 'sparc-solaris2.8'
243     assert_match 'sparc-solaris2.8-mq5.3', Gem::Platform.local
244   end
246   def assert_match(pattern, platform, message = '')
247     full_message = build_message message, "<?> expected to be =~\n<?>.",
248                                  platform, pattern
249     assert_block(full_message) { platform =~ pattern }
250   end
252   def deny_match(pattern, platform, message = '')
253     full_message = build_message message, "<?> expected to be !~\n<?>.",
254                                  platform, pattern
255     assert_block(full_message) { platform !~ pattern }
256   end