ruby/test/-ext-/namespace/test_load_ext.rb
2025-05-11 23:32:50 +09:00

97 lines
2.6 KiB
Ruby

# frozen_string_literal: true
require 'test/unit'
class Test_Load_Extensions < Test::Unit::TestCase
ENV_ENABLE_NAMESPACE = {'RUBY_NAMESPACE' => '1'}
def test_load_extension
pend
assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;
require '-test-/namespace/yay1'
assert_equal "1.0.0", Yay.version
assert_equal "yay", Yay.yay
end;
end
def test_extension_contamination_in_global
pend
assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}", ignore_stderr: true)
begin;
require '-test-/namespace/yay1'
yay1 = Yay
assert_equal "1.0.0", Yay.version
assert_equal "yay", Yay.yay
require '-test-/namespace/yay2'
assert_equal "2.0.0", Yay.version
v = Yay.yay
assert(v == "yay" || v == "yaaay") # "yay" on Linux, "yaaay" on macOS, Win32
end;
end
def test_load_extension_in_namespace
pend
assert_separately([ENV_ENABLE_NAMESPACE], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;
ns = Namespace.new
ns.require '-test-/namespace/yay1'
assert_equal "1.0.0", ns::Yay.version
assert_raise(NameError) { Yay }
end;
end
def test_different_version_extensions
pend
assert_separately([ENV_ENABLE_NAMESPACE], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;
ns1 = Namespace.new
ns2 = Namespace.new
ns1.require('-test-/namespace/yay1')
ns2.require('-test-/namespace/yay2')
assert_raise(NameError) { Yay }
assert_not_nil ns1::Yay
assert_not_nil ns2::Yay
assert_equal "1.0.0", ns1::Yay::VERSION
assert_equal "2.0.0", ns2::Yay::VERSION
assert_equal "1.0.0", ns1::Yay.version
assert_equal "2.0.0", ns2::Yay.version
end;
end
def test_loading_extensions_from_global_to_local
pend
assert_separately([ENV_ENABLE_NAMESPACE], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;
require '-test-/namespace/yay1'
assert_equal "1.0.0", Yay.version
assert_equal "yay", Yay.yay
ns = Namespace.new
ns.require '-test-/namespace/yay2'
assert_equal "2.0.0", ns::Yay.version
assert_equal "yaaay", ns::Yay.yay
assert_equal "yay", Yay.yay
end;
end
def test_loading_extensions_from_local_to_global
pend
assert_separately([ENV_ENABLE_NAMESPACE], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;
ns = Namespace.new
ns.require '-test-/namespace/yay1'
assert_equal "1.0.0", ns::Yay.version
assert_equal "yay", ns::Yay.yay
require '-test-/namespace/yay2'
assert_equal "2.0.0", Yay.version
assert_equal "yaaay", Yay.yay
assert_equal "yay", ns::Yay.yay
end;
end
end