mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 05:29:10 +02:00
97 lines
2.6 KiB
Ruby
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
|