diff options
Diffstat (limited to 'spec/ruby/library/rbconfig')
| -rw-r--r-- | spec/ruby/library/rbconfig/rbconfig_spec.rb | 119 | ||||
| -rw-r--r-- | spec/ruby/library/rbconfig/sizeof/limits_spec.rb | 58 | ||||
| -rw-r--r-- | spec/ruby/library/rbconfig/sizeof/sizeof_spec.rb | 6 | ||||
| -rw-r--r-- | spec/ruby/library/rbconfig/unicode_emoji_version_spec.rb | 19 | ||||
| -rw-r--r-- | spec/ruby/library/rbconfig/unicode_version_spec.rb | 31 |
5 files changed, 162 insertions, 71 deletions
diff --git a/spec/ruby/library/rbconfig/rbconfig_spec.rb b/spec/ruby/library/rbconfig/rbconfig_spec.rb index 35b465d106..4195128a05 100644 --- a/spec/ruby/library/rbconfig/rbconfig_spec.rb +++ b/spec/ruby/library/rbconfig/rbconfig_spec.rb @@ -4,11 +4,18 @@ require 'rbconfig' describe 'RbConfig::CONFIG' do it 'values are all strings' do RbConfig::CONFIG.each do |k, v| - k.should be_kind_of String - v.should be_kind_of String + k.should.is_a? String + v.should.is_a? String end end + it 'has MAJOR, MINOR, TEENY, and PATCHLEVEL matching RUBY_VERSION and RUBY_PATCHLEVEL' do + major, minor, teeny = RUBY_VERSION.split('.') + RbConfig::CONFIG.values_at("MAJOR", "MINOR", "TEENY", "PATCHLEVEL").should == [ + major, minor, teeny, RUBY_PATCHLEVEL.to_s + ] + end + # These directories have no meanings before the installation. guard -> { RbConfig::TOPDIR } do it "['rubylibdir'] returns the directory containing Ruby standard libraries" do @@ -22,6 +29,12 @@ describe 'RbConfig::CONFIG' do File.directory?(archdir).should == true File.should.exist?("#{archdir}/etc.#{RbConfig::CONFIG['DLEXT']}") end + + it "['sitelibdir'] is set and is part of $LOAD_PATH" do + sitelibdir = RbConfig::CONFIG['sitelibdir'] + sitelibdir.should.is_a? String + $LOAD_PATH.map{|path| File.realpath(path) rescue path }.should.include? sitelibdir + end end it "contains no frozen strings even with --enable-frozen-string-literal" do @@ -35,6 +48,77 @@ describe 'RbConfig::CONFIG' do puts 'Done' RUBY end + + platform_is_not :windows do + it "['LIBRUBY'] is the same as LIBRUBY_SO if and only if ENABLE_SHARED" do + case RbConfig::CONFIG['ENABLE_SHARED'] + when 'yes' + RbConfig::CONFIG['LIBRUBY'].should == RbConfig::CONFIG['LIBRUBY_SO'] + when 'no' + RbConfig::CONFIG['LIBRUBY'].should_not == RbConfig::CONFIG['LIBRUBY_SO'] + end + end + end + + guard -> { RbConfig::TOPDIR } do + it "libdir/LIBRUBY_SO is the path to libruby and it exists if and only if ENABLE_SHARED" do + libdirname = RbConfig::CONFIG['LIBPATHENV'] == 'PATH' ? 'bindir' : + RbConfig::CONFIG['libdirname'] + libdir = RbConfig::CONFIG[libdirname] + libruby_so = "#{libdir}/#{RbConfig::CONFIG['LIBRUBY_SO']}" + case RbConfig::CONFIG['ENABLE_SHARED'] + when 'yes' + File.should.exist?(libruby_so) + when 'no' + File.should_not.exist?(libruby_so) + end + end + end + + platform_is :linux do + it "['AR'] exists and can be executed" do + ar = RbConfig::CONFIG.fetch('AR') + out = `#{ar} --version` + $?.should.success? + out.should_not.empty? + end + + it "['STRIP'] exists and can be executed" do + strip = RbConfig::CONFIG.fetch('STRIP') + copy = tmp("sh") + cp '/bin/sh', copy + begin + out = `#{strip} #{copy}` + $?.should.success? + ensure + rm_r copy + end + end + end + + guard -> { %w[aarch64 arm64].include? RbConfig::CONFIG['host_cpu'] } do + it "['host_cpu'] returns CPU architecture properly for AArch64" do + platform_is :darwin do + RbConfig::CONFIG['host_cpu'].should == 'arm64' + end + + platform_is_not :darwin do + RbConfig::CONFIG['host_cpu'].should == 'aarch64' + end + end + end + + guard -> { platform_is(:linux) || platform_is(:darwin) } do + it "['host_os'] returns a proper OS name or platform" do + platform_is :darwin do + RbConfig::CONFIG['host_os'].should.match?(/darwin/) + end + + platform_is :linux do + RbConfig::CONFIG['host_os'].should.match?(/linux/) + end + end + end end describe "RbConfig::TOPDIR" do @@ -46,3 +130,34 @@ describe "RbConfig::TOPDIR" do end end end + +describe "RUBY_PLATFORM" do + it "RUBY_PLATFORM contains a proper CPU architecture" do + RUBY_PLATFORM.should.include? RbConfig::CONFIG['host_cpu'] + end + + guard -> { platform_is(:linux) || platform_is(:darwin) } do + it "RUBY_PLATFORM contains OS name" do + # don't use RbConfig::CONFIG['host_os'] as far as it could be slightly different, e.g. linux-gnu + platform_is(:linux) do + RUBY_PLATFORM.should.include? 'linux' + end + + platform_is(:darwin) do + RUBY_PLATFORM.should.include? 'darwin' + end + end + end +end + +describe "RUBY_DESCRIPTION" do + guard_not -> { RUBY_ENGINE == "ruby" && !RbConfig::TOPDIR } do + it "contains version" do + RUBY_DESCRIPTION.should.include? RUBY_VERSION + end + + it "contains RUBY_PLATFORM" do + RUBY_DESCRIPTION.should.include? RUBY_PLATFORM + end + end +end diff --git a/spec/ruby/library/rbconfig/sizeof/limits_spec.rb b/spec/ruby/library/rbconfig/sizeof/limits_spec.rb index a026135eee..08b1185965 100644 --- a/spec/ruby/library/rbconfig/sizeof/limits_spec.rb +++ b/spec/ruby/library/rbconfig/sizeof/limits_spec.rb @@ -1,42 +1,40 @@ require_relative '../../../spec_helper' require 'rbconfig/sizeof' -ruby_version_is "2.5" do - describe "RbConfig::LIMITS" do - it "is a Hash" do - RbConfig::LIMITS.should be_kind_of(Hash) - end +describe "RbConfig::LIMITS" do + it "is a Hash" do + RbConfig::LIMITS.should.is_a?(Hash) + end - it "has string keys and numeric values" do - RbConfig::LIMITS.each do |key, value| - key.should be_kind_of String - value.should be_kind_of Numeric - end + it "has string keys and numeric values" do + RbConfig::LIMITS.each do |key, value| + key.should.is_a? String + value.should.is_a? Numeric end + end - it "contains FIXNUM_MIN and FIXNUM_MAX" do - RbConfig::LIMITS["FIXNUM_MIN"].should < 0 - RbConfig::LIMITS["FIXNUM_MAX"].should > 0 - end + it "contains FIXNUM_MIN and FIXNUM_MAX" do + RbConfig::LIMITS["FIXNUM_MIN"].should < 0 + RbConfig::LIMITS["FIXNUM_MAX"].should > 0 + end - it "contains CHAR_MIN and CHAR_MAX" do - RbConfig::LIMITS["CHAR_MIN"].should <= 0 - RbConfig::LIMITS["CHAR_MAX"].should > 0 - end + it "contains CHAR_MIN and CHAR_MAX" do + RbConfig::LIMITS["CHAR_MIN"].should <= 0 + RbConfig::LIMITS["CHAR_MAX"].should > 0 + end - it "contains SHRT_MIN and SHRT_MAX" do - RbConfig::LIMITS["SHRT_MIN"].should == -32768 - RbConfig::LIMITS["SHRT_MAX"].should == 32767 - end + it "contains SHRT_MIN and SHRT_MAX" do + RbConfig::LIMITS["SHRT_MIN"].should == -32768 + RbConfig::LIMITS["SHRT_MAX"].should == 32767 + end - it "contains INT_MIN and INT_MAX" do - RbConfig::LIMITS["INT_MIN"].should < 0 - RbConfig::LIMITS["INT_MAX"].should > 0 - end + it "contains INT_MIN and INT_MAX" do + RbConfig::LIMITS["INT_MIN"].should < 0 + RbConfig::LIMITS["INT_MAX"].should > 0 + end - it "contains LONG_MIN and LONG_MAX" do - RbConfig::LIMITS["LONG_MIN"].should < 0 - RbConfig::LIMITS["LONG_MAX"].should > 0 - end + it "contains LONG_MIN and LONG_MAX" do + RbConfig::LIMITS["LONG_MIN"].should < 0 + RbConfig::LIMITS["LONG_MAX"].should > 0 end end diff --git a/spec/ruby/library/rbconfig/sizeof/sizeof_spec.rb b/spec/ruby/library/rbconfig/sizeof/sizeof_spec.rb index f2582dc4fd..b74dae5166 100644 --- a/spec/ruby/library/rbconfig/sizeof/sizeof_spec.rb +++ b/spec/ruby/library/rbconfig/sizeof/sizeof_spec.rb @@ -3,13 +3,13 @@ require 'rbconfig/sizeof' describe "RbConfig::SIZEOF" do it "is a Hash" do - RbConfig::SIZEOF.should be_kind_of(Hash) + RbConfig::SIZEOF.should.is_a?(Hash) end it "has string keys and integer values" do RbConfig::SIZEOF.each do |key, value| - key.should be_kind_of String - value.should be_kind_of Integer + key.should.is_a? String + value.should.is_a? Integer end end diff --git a/spec/ruby/library/rbconfig/unicode_emoji_version_spec.rb b/spec/ruby/library/rbconfig/unicode_emoji_version_spec.rb index d3df8b7313..521a750bf7 100644 --- a/spec/ruby/library/rbconfig/unicode_emoji_version_spec.rb +++ b/spec/ruby/library/rbconfig/unicode_emoji_version_spec.rb @@ -2,21 +2,16 @@ require_relative '../../spec_helper' require 'rbconfig' describe "RbConfig::CONFIG['UNICODE_EMOJI_VERSION']" do - ruby_version_is "2.6"..."2.6.2" do - it "is 11.0 for Ruby 2.6.0 and 2.6.1" do - RbConfig::CONFIG['UNICODE_EMOJI_VERSION'].should == "11.0" + ruby_version_is ""..."3.4" do + it "is 15.0" do + RbConfig::CONFIG['UNICODE_EMOJI_VERSION'].should == "15.0" end end - ruby_version_is "2.6.2"..."2.7" do - it "is 12.0 for Ruby 2.6.2+" do - RbConfig::CONFIG['UNICODE_EMOJI_VERSION'].should == "12.0" - end - end - - ruby_version_is "2.7" do - it "is 12.1 for Ruby 2.7" do - RbConfig::CONFIG['UNICODE_EMOJI_VERSION'].should == "12.1" + # Caution: ruby_version_is means is_or_later + ruby_version_is "4.0" do + it "is 17.0" do + RbConfig::CONFIG['UNICODE_EMOJI_VERSION'].should == "17.0" end end end diff --git a/spec/ruby/library/rbconfig/unicode_version_spec.rb b/spec/ruby/library/rbconfig/unicode_version_spec.rb index 44216700c8..5cdde74f79 100644 --- a/spec/ruby/library/rbconfig/unicode_version_spec.rb +++ b/spec/ruby/library/rbconfig/unicode_version_spec.rb @@ -2,33 +2,16 @@ require_relative '../../spec_helper' require 'rbconfig' describe "RbConfig::CONFIG['UNICODE_VERSION']" do - ruby_version_is ""..."2.5" do - it "is 9.0.0 for Ruby 2.4" do - RbConfig::CONFIG['UNICODE_VERSION'].should == "9.0.0" + ruby_version_is ""..."3.4" do + it "is 15.0.0" do + RbConfig::CONFIG['UNICODE_VERSION'].should == "15.0.0" end end - ruby_version_is "2.5"..."2.6" do - it "is 10.0.0 for Ruby 2.5" do - RbConfig::CONFIG['UNICODE_VERSION'].should == "10.0.0" - end - end - - ruby_version_is "2.6"..."2.6.2" do - it "is 11.0.0 for Ruby 2.6.0 and 2.6.1" do - RbConfig::CONFIG['UNICODE_VERSION'].should == "11.0.0" - end - end - - ruby_version_is "2.6.2"..."2.6.3" do - it "is 12.0.0 for Ruby 2.6.2" do - RbConfig::CONFIG['UNICODE_VERSION'].should == "12.0.0" - end - end - - ruby_version_is "2.6.3" do - it "is 12.1.0 for Ruby 2.6.3+ and Ruby 2.7" do - RbConfig::CONFIG['UNICODE_VERSION'].should == "12.1.0" + # Caution: ruby_version_is means is_or_later + ruby_version_is "4.0" do + it "is 17.0.0" do + RbConfig::CONFIG['UNICODE_VERSION'].should == "17.0.0" end end end |
