aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-10-20 00:31:12 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-10-20 00:31:12 +0000
commit8552f7aa680e1f1a31d76dc9038d80248a445960 (patch)
tree29de125ca8389a65e44d42b269a19274b8846b11 /test
parent347e748bddd42e5a39dcb5c55ac37704a14b9374 (diff)
downloadruby-8552f7aa680e1f1a31d76dc9038d80248a445960.tar.gz
* lib/rubygems: Update to RubyGems master 3de7e0f. Changes:
Only attempt to build extensions for newly-installed gems. This prevents compilation attempts at gem activation time for gems that already have extensions built. Fix crash in the dependency resolver for dependencies that cannot be resolved. * test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43368 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/rubygems/test_gem_dependency_resolver.rb48
-rw-r--r--test/rubygems/test_gem_dependency_resolver_vendor_set.rb13
-rw-r--r--test/rubygems/test_gem_installer.rb7
-rw-r--r--test/rubygems/test_gem_specification.rb25
-rw-r--r--test/rubygems/test_gem_stub_specification.rb1
5 files changed, 80 insertions, 14 deletions
diff --git a/test/rubygems/test_gem_dependency_resolver.rb b/test/rubygems/test_gem_dependency_resolver.rb
index 47eef8cc55..bd349996c1 100644
--- a/test/rubygems/test_gem_dependency_resolver.rb
+++ b/test/rubygems/test_gem_dependency_resolver.rb
@@ -11,13 +11,17 @@ class TestGemDependencyResolver < Gem::TestCase
StaticSet.new(specs)
end
- def assert_set(expected, actual)
+ def assert_resolves_to expected, resolver
+ actual = resolver.resolve
+
exp = expected.sort_by { |s| s.full_name }
act = actual.map { |a| a.spec }.sort_by { |s| s.full_name }
msg = "Set of gems was not the same: #{exp.map { |x| x.full_name}.inspect} != #{act.map { |x| x.full_name}.inspect}"
assert_equal exp, act, msg
+ rescue Gem::DependencyResolutionError => e
+ flunk "#{e.message}\n#{e.conflict.explanation}"
end
def test_no_overlap_specificly
@@ -33,7 +37,7 @@ class TestGemDependencyResolver < Gem::TestCase
res = Gem::DependencyResolver.new(deps, s)
- assert_set [a, b], res.resolve
+ assert_resolves_to [a, b], res
end
def test_pulls_in_dependencies
@@ -50,7 +54,7 @@ class TestGemDependencyResolver < Gem::TestCase
res = Gem::DependencyResolver.new(deps, s)
- assert_set [a, b, c], res.resolve
+ assert_resolves_to [a, b, c], res
end
def test_picks_highest_version
@@ -63,7 +67,7 @@ class TestGemDependencyResolver < Gem::TestCase
res = Gem::DependencyResolver.new([ad], s)
- assert_set [a2], res.resolve
+ assert_resolves_to [a2], res
end
def test_picks_best_platform
@@ -89,7 +93,7 @@ class TestGemDependencyResolver < Gem::TestCase
res = Gem::DependencyResolver.new([ad], s)
- assert_set [a2_p1], res.resolve
+ assert_resolves_to [a2_p1], res
end
def test_only_returns_spec_once
@@ -105,7 +109,7 @@ class TestGemDependencyResolver < Gem::TestCase
res = Gem::DependencyResolver.new([ad, bd], s)
- assert_set [a1, b1, c1], res.resolve
+ assert_resolves_to [a1, b1, c1], res
end
def test_picks_lower_version_when_needed
@@ -122,7 +126,7 @@ class TestGemDependencyResolver < Gem::TestCase
res = Gem::DependencyResolver.new([ad, bd], s)
- assert_set [a1, b1, c1], res.resolve
+ assert_resolves_to [a1, b1, c1], res
cons = res.conflicts
@@ -150,7 +154,7 @@ class TestGemDependencyResolver < Gem::TestCase
res = Gem::DependencyResolver.new([ad, bd], s)
- assert_set [a1, b1, c1, d4], res.resolve
+ assert_resolves_to [a1, b1, c1, d4], res
cons = res.conflicts
@@ -266,7 +270,7 @@ class TestGemDependencyResolver < Gem::TestCase
r = Gem::DependencyResolver.new([ad, bd], s)
- assert_set [a1, b1, c1], r.resolve
+ assert_resolves_to [a1, b1, c1], r
end
def test_common_rack_activation_scenario
@@ -285,13 +289,13 @@ class TestGemDependencyResolver < Gem::TestCase
r = Gem::DependencyResolver.new([d1, d2], s)
- assert_set [rails, ap, rack101, lib1], r.resolve
+ assert_resolves_to [rails, ap, rack101, lib1], r
# check it with the deps reverse too
r = Gem::DependencyResolver.new([d2, d1], s)
- assert_set [lib1, rack101, rails, ap], r.resolve
+ assert_resolves_to [lib1, rack101, rails, ap], r
end
def test_backtracks_to_the_first_conflict
@@ -313,6 +317,24 @@ class TestGemDependencyResolver < Gem::TestCase
end
end
+ def test_resolve_conflict
+ a1 = util_spec 'a', 1
+ a2 = util_spec 'a', 2
+
+ b2 = util_spec 'b', 2, 'a' => '~> 2.0'
+
+ s = set a1, a2, b2
+
+ a_dep = dep 'a', '~> 1.0'
+ b_dep = dep 'b'
+
+ r = Gem::DependencyResolver.new [a_dep, b_dep], s
+
+ assert_raises Gem::DependencyResolutionError do
+ r.resolve
+ end
+ end
+
# actionmailer 2.3.4
# activemerchant 1.5.0
# activesupport 2.3.5, 2.3.4
@@ -333,7 +355,7 @@ class TestGemDependencyResolver < Gem::TestCase
r = Gem::DependencyResolver.new([d1, d2], s)
- assert_set [merch, mail, sup1], r.resolve
+ assert_resolves_to [merch, mail, sup1], r
end
def test_second_level_backout
@@ -351,7 +373,7 @@ class TestGemDependencyResolver < Gem::TestCase
r = Gem::DependencyResolver.new([p1, p2], s)
- assert_set [b1, c1, d2], r.resolve
+ assert_resolves_to [b1, c1, d2], r
end
def test_select_local_platforms
diff --git a/test/rubygems/test_gem_dependency_resolver_vendor_set.rb b/test/rubygems/test_gem_dependency_resolver_vendor_set.rb
index 44b7413865..b925ff3f47 100644
--- a/test/rubygems/test_gem_dependency_resolver_vendor_set.rb
+++ b/test/rubygems/test_gem_dependency_resolver_vendor_set.rb
@@ -19,6 +19,19 @@ class TestGemDependencyResolverVendorSet < Gem::TestCase
assert_equal "#{name}-#{version}", spec.full_name
end
+ def test_add_vendor_gem_missing
+ name, version, directory = vendor_gem
+
+ FileUtils.rm_r directory
+
+ e = assert_raises Gem::GemNotFoundException do
+ @set.add_vendor_gem name, directory
+ end
+
+ assert_equal "unable to find #{directory}/#{name}.gemspec for gem #{name}",
+ e.message
+ end
+
def test_find_all
name, version, directory = vendor_gem
diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb
index 01b151c089..7ce00f0121 100644
--- a/test/rubygems/test_gem_installer.rb
+++ b/test/rubygems/test_gem_installer.rb
@@ -1346,7 +1346,12 @@ gem 'other', version
@installer.write_spec
assert_path_exists @spec.spec_file
- assert_equal @spec, eval(File.read(@spec.spec_file))
+
+ loaded = Gem::Specification.load @spec.spec_file
+
+ assert_equal @spec, loaded
+
+ assert_equal Gem.rubygems_version, @spec.installed_by_version
end
def test_write_spec_writes_cached_spec
diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb
index d893a7191e..0623e8d51d 100644
--- a/test/rubygems/test_gem_specification.rb
+++ b/test/rubygems/test_gem_specification.rb
@@ -67,6 +67,7 @@ end
s.mark_version
s.files = %w[lib/code.rb]
+ s.installed_by_version = v('2.2')
end
end
@@ -1221,6 +1222,19 @@ dependencies: []
refute_path_exists @a1.extension_install_dir
end
+ def test_build_extensions_old
+ ext_spec
+
+ refute_empty @ext.extensions, 'sanity check'
+
+ @ext.installed_by_version = v(0)
+
+ @ext.build_extensions
+
+ gem_make_out = File.join @ext.extension_install_dir, 'gem_make.out'
+ refute_path_exists gem_make_out
+ end
+
def test_contains_requirable_file_eh
code_rb = File.join @a1.gem_dir, 'lib', 'code.rb'
FileUtils.mkdir_p File.dirname code_rb
@@ -1544,6 +1558,14 @@ dependencies: []
refute_equal @a1.hash, @a2.hash
end
+ def test_installed_by_version
+ assert_equal v(0), @a1.installed_by_version
+
+ @a1.installed_by_version = Gem.rubygems_version
+
+ assert_equal Gem.rubygems_version, @a1.installed_by_version
+ end
+
def test_base_dir
assert_equal @gemhome, @a1.base_dir
end
@@ -1841,6 +1863,7 @@ end
@a2.add_runtime_dependency 'b', '1'
@a2.dependencies.first.instance_variable_set :@type, nil
@a2.required_rubygems_version = Gem::Requirement.new '> 0'
+ @a2.installed_by_version = Gem.rubygems_version
# cached specs do not have spec.files populated:
ruby_code = @a2.to_ruby_for_cache
@@ -1863,6 +1886,8 @@ Gem::Specification.new do |s|
s.rubygems_version = "#{Gem::VERSION}"
s.summary = "this is a summary"
+ s.installed_by_version = "#{Gem::VERSION}"
+
if s.respond_to? :specification_version then
s.specification_version = #{Gem::Specification::CURRENT_SPECIFICATION_VERSION}
diff --git a/test/rubygems/test_gem_stub_specification.rb b/test/rubygems/test_gem_stub_specification.rb
index 8f9cadbcf3..1c200ec1ed 100644
--- a/test/rubygems/test_gem_stub_specification.rb
+++ b/test/rubygems/test_gem_stub_specification.rb
@@ -104,6 +104,7 @@ Gem::Specification.new do |s|
s.name = 'stub_e'
s.version = Gem::Version.new '2'
s.extensions = ['ext/stub_e/extconf.rb']
+ s.installed_by_version = '2.2'
end
STUB