1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# frozen_string_literal: true
require 'test/unit'
class Test_Load_Extensions < Test::Unit::TestCase
ENV_ENABLE_BOX = {'RUBY_BOX' => '1'}
def test_load_extension
pend
assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;
require '-test-/box/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-/box/yay1'
yay1 = Yay
assert_equal "1.0.0", Yay.version
assert_equal "yay", Yay.yay
require '-test-/box/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_box
pend
assert_separately([ENV_ENABLE_BOX], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;
ns = Ruby::Box.new
ns.require '-test-/box/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_BOX], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;
ns1 = Ruby::Box.new
ns2 = Ruby::Box.new
ns1.require('-test-/box/yay1')
ns2.require('-test-/box/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_BOX], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;
require '-test-/box/yay1'
assert_equal "1.0.0", Yay.version
assert_equal "yay", Yay.yay
ns = Ruby::Box.new
ns.require '-test-/box/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_BOX], "#{<<~"begin;"}\n#{<<~'end;'}")
begin;
ns = Ruby::Box.new
ns.require '-test-/box/yay1'
assert_equal "1.0.0", ns::Yay.version
assert_equal "yay", ns::Yay.yay
require '-test-/box/yay2'
assert_equal "2.0.0", Yay.version
assert_equal "yaaay", Yay.yay
assert_equal "yay", ns::Yay.yay
end;
end
end
|