[rubygems/rubygems] Use a constant empty tar header to avoid extra allocations
[ruby.git] / test / -ext- / test_abi.rb
blobd3ea6bb9b105fedfd228f1a957422c27f35b404f
1 # frozen_string_literal: true
3 return unless RUBY_PATCHLEVEL < 0
5 class TestABI < Test::Unit::TestCase
6   def test_require_lib_with_incorrect_abi_on_dev_ruby
7     omit "ABI is not checked" unless abi_checking_supported?
9     assert_separately [], <<~RUBY
10       err = assert_raise(LoadError) { require "-test-/abi" }
11       assert_match(/incompatible ABI version/, err.message)
12       assert_include err.message, "/-test-/abi."
13     RUBY
14   end
16   def test_disable_abi_check_using_environment_variable
17     omit "ABI is not checked" unless abi_checking_supported?
19     assert_separately [{ "RUBY_ABI_CHECK" => "0" }], <<~RUBY
20       assert_nothing_raised { require "-test-/abi" }
21     RUBY
22   end
24   def test_enable_abi_check_using_environment_variable
25     omit "ABI is not checked" unless abi_checking_supported?
27     assert_separately [{ "RUBY_ABI_CHECK" => "1" }], <<~RUBY
28       err = assert_raise(LoadError) { require "-test-/abi" }
29       assert_match(/incompatible ABI version/, err.message)
30       assert_include err.message, "/-test-/abi."
31     RUBY
32   end
34   def test_require_lib_with_incorrect_abi_on_release_ruby
35     omit "ABI is enforced" if abi_checking_supported?
37     assert_separately [], <<~RUBY
38       assert_nothing_raised { require "-test-/abi" }
39     RUBY
40   end
42   private
44   def abi_checking_supported?
45     !(RUBY_PLATFORM =~ /mswin|mingw/)
46   end
47 end