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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
# frozen_string_literal: true
require_relative "helper"
require "rubygems/installer"
class TestGemResolverGitSpecification < Gem::TestCase
def setup
super
@set = Gem::Resolver::GitSet.new
@spec = Gem::Specification.new "a", 1
end
def test_equals2
g_spec_a = Gem::Resolver::GitSpecification.new @set, @spec
assert_equal g_spec_a, g_spec_a
spec_b = Gem::Specification.new "b", 1
g_spec_b = Gem::Resolver::GitSpecification.new @set, spec_b
refute_equal g_spec_a, g_spec_b
g_set = Gem::Resolver::GitSet.new
g_spec_s = Gem::Resolver::GitSpecification.new g_set, @spec
refute_equal g_spec_a, g_spec_s
i_set = Gem::Resolver::IndexSet.new
source = Gem::Source.new @gem_repo
i_spec = Gem::Resolver::IndexSpecification.new(
i_set, "a", v(1), source, Gem::Platform::RUBY
)
refute_equal g_spec_a, i_spec
end
def test_add_dependency
git_gem "a", 1
git_spec = Gem::Resolver::GitSpecification.new @set, @spec
b_dep = dep "b"
git_spec.add_dependency b_dep
assert_equal [b_dep], git_spec.dependencies
end
def test_install
git_gem "a", 1
git_spec = Gem::Resolver::GitSpecification.new @set, @spec
called = false
git_spec.install({}) do |installer|
called = installer
end
assert called
end
# functional test for Gem::Ext::Builder
def test_install_extension
pend if Gem.java_platform?
pend "terminates on mswin" if vc_windows? && ruby_repo?
name, _, repository, = git_gem "a", 1 do |s|
s.extensions << "ext/extconf.rb"
end
Dir.chdir "git/a" do
FileUtils.mkdir_p "ext/lib"
File.open "ext/extconf.rb", "w" do |io|
io.puts 'require "mkmf"'
io.puts 'create_makefile "a"'
end
FileUtils.touch "ext/lib/b.rb"
system @git, "add", "ext/extconf.rb"
system @git, "add", "ext/lib/b.rb"
system @git, "commit", "--quiet", "-m", "Add extension files"
end
source = Gem::Source::Git.new name, repository, nil, true
spec = source.specs.first
git_spec = Gem::Resolver::GitSpecification.new @set, spec, source
git_spec.install({})
assert_path_exist File.join git_spec.spec.extension_dir, "b.rb"
end
def test_install_no_build_extension
pend if Gem.java_platform?
pend "terminates on mswin" if vc_windows? && ruby_repo?
name, _, repository, = git_gem "a", 1 do |s|
s.extensions << "ext/extconf.rb"
end
Dir.chdir "git/a" do
FileUtils.mkdir_p "ext/lib"
File.open "ext/extconf.rb", "w" do |io|
io.puts 'require "mkmf"'
io.puts 'create_makefile "a"'
end
FileUtils.touch "ext/lib/b.rb"
system @git, "add", "ext/extconf.rb"
system @git, "add", "ext/lib/b.rb"
system @git, "commit", "--quiet", "-m", "Add extension files"
end
source = Gem::Source::Git.new name, repository, nil, true
spec = source.specs.first
git_spec = Gem::Resolver::GitSpecification.new @set, spec, source
use_ui @ui do
git_spec.install(build_extension: false)
end
assert_path_not_exist File.join(git_spec.spec.extension_dir, "b.rb")
assert_match "contains native extensions that were not built", @ui.error
assert_match "gem pristine #{git_spec.spec.name} --extensions", @ui.error
end
def test_install_installed
git_gem "a", 1
git_spec = Gem::Resolver::GitSpecification.new @set, @spec
git_spec.install({})
called = false
git_spec.install({}) do |installer|
called = installer
end
assert called
end
end
|