summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-21 23:27:30 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-11-21 23:27:30 +0000
commit5307d803f5cce7b14a6afd1d51f6d53ec85ca87d (patch)
treeaac2997a9ff000fbf2f1f9f27077bb7b2403f2c9 /test
parentb1529a30e08040b717adef8ac1fa8be1c060e7e1 (diff)
* lib/rubygems: Update to RubyGems master 50a8210. Important changes
in this commit: RubyGems now automatically checks for gem.deps.rb or Gemfile when running ruby executables. This behavior is similar to `bundle exec rake`. This change may be reverted before Ruby 2.1.0 if too many bugs are found. * test/rubygems: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43767 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/rubygems/test_gem.rb54
-rw-r--r--test/rubygems/test_gem_impossible_dependencies_error.rb12
-rw-r--r--test/rubygems/test_gem_request_set.rb4
-rw-r--r--test/rubygems/test_gem_request_set_gem_dependency_api.rb4
-rw-r--r--test/rubygems/test_gem_resolver.rb15
-rw-r--r--test/rubygems/test_gem_resolver_api_set.rb151
-rw-r--r--test/rubygems/test_gem_resolver_api_specification.rb36
-rw-r--r--test/rubygems/test_gem_resolver_conflict.rb30
-rw-r--r--test/rubygems/test_gem_resolver_git_set.rb20
-rw-r--r--test/rubygems/test_gem_source_git.rb38
-rw-r--r--test/rubygems/test_gem_specification.rb4
-rw-r--r--test/rubygems/test_gem_util.rb4
12 files changed, 344 insertions, 28 deletions
diff --git a/test/rubygems/test_gem.rb b/test/rubygems/test_gem.rb
index ec7f7299ec..33d4b25e0d 100644
--- a/test/rubygems/test_gem.rb
+++ b/test/rubygems/test_gem.rb
@@ -1245,6 +1245,60 @@ class TestGem < Gem::TestCase
end
end
+ def test_use_gemdeps
+ rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], nil
+
+ spec = util_spec 'a', 1
+
+ refute spec.activated?
+
+ open 'Gemfile', 'w' do |io|
+ io.write 'gem "a"'
+ end
+
+ Gem.use_gemdeps
+
+ assert spec.activated?
+ ensure
+ ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
+ end
+
+ def test_use_gemdeps_disabled
+ rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], ''
+
+ spec = util_spec 'a', 1
+
+ refute spec.activated?
+
+ open 'Gemfile', 'w' do |io|
+ io.write 'gem "a"'
+ end
+
+ Gem.use_gemdeps
+
+ refute spec.activated?
+ ensure
+ ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
+ end
+
+ def test_use_gemdeps_specific
+ rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x'
+
+ spec = util_spec 'a', 1
+
+ refute spec.activated?
+
+ open 'x', 'w' do |io|
+ io.write 'gem "a"'
+ end
+
+ Gem.use_gemdeps
+
+ assert spec.activated?
+ ensure
+ ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
+ end
+
def with_plugin(path)
test_plugin_path = File.expand_path("test/rubygems/plugin/#{path}",
@@project_dir)
diff --git a/test/rubygems/test_gem_impossible_dependencies_error.rb b/test/rubygems/test_gem_impossible_dependencies_error.rb
index f61b86e490..577ee580ec 100644
--- a/test/rubygems/test_gem_impossible_dependencies_error.rb
+++ b/test/rubygems/test_gem_impossible_dependencies_error.rb
@@ -28,10 +28,14 @@ class TestGemImpossibleDependenciesError < Gem::TestCase
expected = <<-EXPECTED
rye-0.9.8 requires net-ssh (>= 2.0.13) but it conflicted:
- Activated net-ssh-2.6.5 instead of (~> 2.2.2) via:
- net-ssh-2.6.5, rye-0.9.8
- Activated net-ssh-2.2.2 instead of (>= 2.6.5) via:
- net-ssh-2.2.2, rye-0.9.8
+ Activated net-ssh-2.6.5 via:
+ net-ssh-2.6.5 (>= 2.0.13), rye-0.9.8 (= 0.9.8)
+ instead of (~> 2.2.2) via:
+ net-ssh-2.6.5 (>= 2.0.13), rye-0.9.8 (= 0.9.8)
+ Activated net-ssh-2.2.2 via:
+ net-ssh-2.2.2 (>= 2.0.13), rye-0.9.8 (= 0.9.8)
+ instead of (>= 2.6.5) via:
+ net-ssh-2.2.2 (>= 2.0.13), rye-0.9.8 (= 0.9.8)
EXPECTED
assert_equal expected, error.message
diff --git a/test/rubygems/test_gem_request_set.rb b/test/rubygems/test_gem_request_set.rb
index 531b6c09d1..6719be372c 100644
--- a/test/rubygems/test_gem_request_set.rb
+++ b/test/rubygems/test_gem_request_set.rb
@@ -123,7 +123,7 @@ class TestGemRequestSet < Gem::TestCase
assert_equal %w[a-1], names
- assert_equal [@DR::IndexSet, @DR::GitSet, @DR::VendorSet],
+ assert_equal [@DR::BestSet, @DR::GitSet, @DR::VendorSet],
rs.sets.map { |set| set.class }
end
@@ -169,7 +169,7 @@ class TestGemRequestSet < Gem::TestCase
assert_equal ["a-1", "b-2"], names
- assert_equal [@DR::IndexSet, @DR::GitSet, @DR::VendorSet],
+ assert_equal [@DR::BestSet, @DR::GitSet, @DR::VendorSet],
rs.sets.map { |set| set.class }
end
diff --git a/test/rubygems/test_gem_request_set_gem_dependency_api.rb b/test/rubygems/test_gem_request_set_gem_dependency_api.rb
index 4286a761cb..c41d983744 100644
--- a/test/rubygems/test_gem_request_set_gem_dependency_api.rb
+++ b/test/rubygems/test_gem_request_set_gem_dependency_api.rb
@@ -272,10 +272,12 @@ class TestGemRequestSetGemDependencyAPI < Gem::TestCase
def test_gem_require
@gda.gem 'a', :require => %w[b c]
+ @gda.gem 'd', :require => 'e'
- assert_equal [dep('a')], @set.dependencies
+ assert_equal [dep('a'), dep('d')], @set.dependencies
assert_equal %w[b c], @gda.requires['a']
+ assert_equal %w[e], @gda.requires['d']
end
def test_gem_require_false
diff --git a/test/rubygems/test_gem_resolver.rb b/test/rubygems/test_gem_resolver.rb
index 80769de8cf..91cf84c5fc 100644
--- a/test/rubygems/test_gem_resolver.rb
+++ b/test/rubygems/test_gem_resolver.rb
@@ -44,6 +44,21 @@ class TestGemResolver < Gem::TestCase
assert_equal [index_set, vendor_set], composed.sets
end
+ def test_self_compose_sets_nest
+ index_set = @DR::IndexSet.new
+ vendor_set = @DR::VendorSet.new
+
+ inner = @DR.compose_sets index_set, vendor_set
+
+ current_set = @DR::CurrentSet.new
+
+ composed = @DR.compose_sets inner, current_set
+
+ assert_kind_of Gem::Resolver::ComposedSet, composed
+
+ assert_equal [index_set, vendor_set, current_set], composed.sets
+ end
+
def test_self_compose_sets_nil
index_set = @DR::IndexSet.new
diff --git a/test/rubygems/test_gem_resolver_api_set.rb b/test/rubygems/test_gem_resolver_api_set.rb
index 976d861cdf..288f496c93 100644
--- a/test/rubygems/test_gem_resolver_api_set.rb
+++ b/test/rubygems/test_gem_resolver_api_set.rb
@@ -6,20 +6,161 @@ class TestGemResolverAPISet < Gem::TestCase
super
@DR = Gem::Resolver
+ @dep_uri = URI "#{@gem_repo}api/v1/dependencies"
end
def test_initialize
set = @DR::APISet.new
- assert_equal URI('https://rubygems.org/api/v1/dependencies'),
- set.dep_uri
+ assert_equal URI('https://rubygems.org/api/v1/dependencies'), set.dep_uri
+ assert_equal URI('https://rubygems.org'), set.uri
+ assert_equal Gem::Source.new(URI('https://rubygems.org')), set.source
end
def test_initialize_uri
- set = @DR::APISet.new @gem_repo
+ set = @DR::APISet.new @dep_uri
- assert_equal URI('http://gems.example.com/'),
- set.dep_uri
+ assert_equal URI("#{@gem_repo}api/v1/dependencies"), set.dep_uri
+ assert_equal URI("#{@gem_repo}"), set.uri
+ end
+
+ def test_find_all
+ spec_fetcher
+
+ data = [
+ { :name => 'a',
+ :number => '1',
+ :platform => 'ruby',
+ :dependencies => [], },
+ ]
+
+ @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
+
+ set = @DR::APISet.new @dep_uri
+
+ a_dep = @DR::DependencyRequest.new dep('a'), nil
+
+ expected = [
+ @DR::APISpecification.new(set, data.first)
+ ]
+
+ assert_equal expected, set.find_all(a_dep)
+ end
+
+ def test_find_all_cache
+ spec_fetcher
+
+ data = [
+ { :name => 'a',
+ :number => '1',
+ :platform => 'ruby',
+ :dependencies => [], },
+ ]
+
+ @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
+
+ set = @DR::APISet.new @dep_uri
+
+ a_dep = @DR::DependencyRequest.new dep('a'), nil
+
+ set.prefetch [a_dep]
+
+ @fetcher.data.delete "#{@dep_uri}?gems=a"
+
+ expected = [
+ @DR::APISpecification.new(set, data.first)
+ ]
+
+ assert_equal expected, set.find_all(a_dep)
+ end
+
+ def test_find_all_missing
+ spec_fetcher
+
+ @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump []
+
+ set = @DR::APISet.new @dep_uri
+
+ a_dep = @DR::DependencyRequest.new dep('a'), nil
+
+ assert_empty set.find_all(a_dep)
+
+ @fetcher.data.delete "#{@dep_uri}?gems=a"
+
+ assert_empty set.find_all(a_dep)
+ end
+
+ def test_prefetch
+ spec_fetcher
+
+ data = [
+ { :name => 'a',
+ :number => '1',
+ :platform => 'ruby',
+ :dependencies => [], },
+ ]
+
+ @fetcher.data["#{@dep_uri}?gems=a,b"] = Marshal.dump data
+ @fetcher.data["#{@dep_uri}?gems=b"] = Marshal.dump []
+
+ set = @DR::APISet.new @dep_uri
+
+ a_dep = @DR::DependencyRequest.new dep('a'), nil
+ b_dep = @DR::DependencyRequest.new dep('b'), nil
+
+ set.prefetch [a_dep, b_dep]
+
+ assert_equal %w[a-1], set.find_all(a_dep).map { |s| s.full_name }
+ assert_empty set.find_all(b_dep)
+ end
+
+ def test_prefetch_cache
+ spec_fetcher
+
+ data = [
+ { :name => 'a',
+ :number => '1',
+ :platform => 'ruby',
+ :dependencies => [], },
+ ]
+
+ @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
+
+ set = @DR::APISet.new @dep_uri
+
+ a_dep = @DR::DependencyRequest.new dep('a'), nil
+ b_dep = @DR::DependencyRequest.new dep('b'), nil
+
+ set.prefetch [a_dep]
+
+ @fetcher.data.delete "#{@dep_uri}?gems=a"
+ @fetcher.data["#{@dep_uri}?gems=b"] = Marshal.dump []
+
+ set.prefetch [a_dep, b_dep]
+ end
+
+ def test_prefetch_cache_missing
+ spec_fetcher
+
+ data = [
+ { :name => 'a',
+ :number => '1',
+ :platform => 'ruby',
+ :dependencies => [], },
+ ]
+
+ @fetcher.data["#{@dep_uri}?gems=a,b"] = Marshal.dump data
+
+ set = @DR::APISet.new @dep_uri
+
+ a_dep = @DR::DependencyRequest.new dep('a'), nil
+ b_dep = @DR::DependencyRequest.new dep('b'), nil
+
+ set.prefetch [a_dep, b_dep]
+
+ @fetcher.data.delete "#{@dep_uri}?gems=a,b"
+
+ set.prefetch [a_dep, b_dep]
end
end
diff --git a/test/rubygems/test_gem_resolver_api_specification.rb b/test/rubygems/test_gem_resolver_api_specification.rb
index e61d30c7c6..4a94135f06 100644
--- a/test/rubygems/test_gem_resolver_api_specification.rb
+++ b/test/rubygems/test_gem_resolver_api_specification.rb
@@ -28,5 +28,41 @@ class TestGemResolverAPISpecification < Gem::TestCase
assert_equal expected, spec.dependencies
end
+ def test_source
+ set = Gem::Resolver::APISet.new
+ data = {
+ :name => 'a',
+ :number => '1',
+ :platform => 'ruby',
+ :dependencies => [],
+ }
+
+ api_spec = Gem::Resolver::APISpecification.new set, data
+
+ assert_equal set.source, api_spec.source
+ end
+
+ def test_spec
+ spec_fetcher do |fetcher|
+ fetcher.spec 'a', 1
+ end
+
+ dep_uri = URI(@gem_repo) + 'api/v1/dependencies'
+ set = Gem::Resolver::APISet.new dep_uri
+ data = {
+ :name => 'a',
+ :number => '1',
+ :platform => 'ruby',
+ :dependencies => [],
+ }
+
+ api_spec = Gem::Resolver::APISpecification.new set, data
+
+ spec = api_spec.spec
+
+ assert_kind_of Gem::Specification, spec
+ assert_equal 'a-1', spec.full_name
+ end
+
end
diff --git a/test/rubygems/test_gem_resolver_conflict.rb b/test/rubygems/test_gem_resolver_conflict.rb
index 3ae2a7cf5f..f8bba3f16f 100644
--- a/test/rubygems/test_gem_resolver_conflict.rb
+++ b/test/rubygems/test_gem_resolver_conflict.rb
@@ -12,12 +12,20 @@ class TestGemResolverConflict < Gem::TestCase
child =
dependency_request dep('net-ssh', '>= 2.6.5'), 'net-ssh', '2.2.2', root
+ dep = Gem::Resolver::DependencyRequest.new dep('net-ssh', '>= 2.0.13'), nil
+
+ spec = quick_spec 'net-ssh', '2.2.2'
+ active =
+ Gem::Resolver::ActivationRequest.new spec, dep
+
conflict =
- Gem::Resolver::Conflict.new child, child.requester
+ Gem::Resolver::Conflict.new child, active
expected = <<-EXPECTED
- Activated net-ssh-2.2.2 instead of (>= 2.6.5) via:
- net-ssh-2.2.2, rye-0.9.8
+ Activated net-ssh-2.2.2 via:
+ net-ssh-2.2.2 (>= 2.0.13)
+ instead of (>= 2.6.5) via:
+ net-ssh-2.2.2 (>= 2.0.13), rye-0.9.8 (= 0.9.8)
EXPECTED
assert_equal expected, conflict.explanation
@@ -36,7 +44,9 @@ class TestGemResolverConflict < Gem::TestCase
conflict = @DR::Conflict.new a1_req, activated
expected = <<-EXPECTED
- Activated a-2 instead of (= 1) via:
+ Activated a-2 via:
+ a-2 (= 2)
+ instead of (= 1) via:
user request (gem command or Gemfile)
EXPECTED
@@ -46,13 +56,19 @@ class TestGemResolverConflict < Gem::TestCase
def test_request_path
root =
dependency_request dep('net-ssh', '>= 2.0.13'), 'rye', '0.9.8'
+
child =
- dependency_request dep('net-ssh', '>= 2.6.5'), 'net-ssh', '2.2.2', root
+ dependency_request dep('other', '>= 1.0'), 'net-ssh', '2.2.2', root
conflict =
- Gem::Resolver::Conflict.new child, nil
+ Gem::Resolver::Conflict.new nil, nil
+
+ expected = [
+ 'net-ssh-2.2.2 (>= 2.0.13)',
+ 'rye-0.9.8 (= 0.9.8)'
+ ]
- assert_equal %w[net-ssh-2.2.2 rye-0.9.8], conflict.request_path
+ assert_equal expected, conflict.request_path(child.requester)
end
end
diff --git a/test/rubygems/test_gem_resolver_git_set.rb b/test/rubygems/test_gem_resolver_git_set.rb
index 6943df9ec8..1ca12a7251 100644
--- a/test/rubygems/test_gem_resolver_git_set.rb
+++ b/test/rubygems/test_gem_resolver_git_set.rb
@@ -66,6 +66,24 @@ class TestGemResolverGitSet < Gem::TestCase
refute_empty @set.specs
end
+ def test_prefetch_cache
+ name, _, repository, = git_gem
+
+ @set.add_git_gem name, repository, 'master', false
+
+ dependency = dep name
+ req = Gem::Resolver::ActivationRequest.new dependency, nil
+ @reqs.add req
+
+ @set.prefetch @reqs
+
+ spec = @set.specs[name]
+
+ @set.prefetch @reqs
+
+ assert_same spec, @set.specs[name]
+ end
+
def test_prefetch_filter
name, _, repository, = git_gem
@@ -77,7 +95,7 @@ class TestGemResolverGitSet < Gem::TestCase
@set.prefetch @reqs
- assert_empty @set.specs
+ refute_empty @set.specs, 'the git source does not filter'
end
end
diff --git a/test/rubygems/test_gem_source_git.rb b/test/rubygems/test_gem_source_git.rb
index f1c5eb9b71..9cdcbc0ed5 100644
--- a/test/rubygems/test_gem_source_git.rb
+++ b/test/rubygems/test_gem_source_git.rb
@@ -78,12 +78,6 @@ class TestGemSourceGit < Gem::TestCase
refute_equal @source, source
end
- def test_load_spec
- spec = @source.load_spec @name
-
- assert_equal "#{@name}-#{@version}", spec.full_name
- end
-
def test_install_dir
@source.cache
@@ -133,6 +127,38 @@ class TestGemSourceGit < Gem::TestCase
assert_equal(-1, git. <=>(installed), 'git <=> installed')
end
+ def test_specs
+ source = Gem::Source::Git.new @name, @repository, 'master', true
+
+ Dir.chdir 'git/a' do
+ FileUtils.mkdir 'b'
+
+ Dir.chdir 'b' do
+ b = Gem::Specification.new 'b', 1
+
+ open 'b.gemspec', 'w' do |io|
+ io.write b.to_ruby
+ end
+
+ system @git, 'add', 'b.gemspec'
+ system @git, 'commit', '--quiet', '-m', 'add b/b.gemspec'
+ end
+
+ FileUtils.touch 'c.gemspec'
+
+ system @git, 'add', 'c.gemspec'
+ system @git, 'commit', '--quiet', '-m', 'add c.gemspec'
+ end
+
+ specs = nil
+
+ capture_io do
+ specs = source.specs
+ end
+
+ assert_equal %w[a-1 b-1], specs.map { |spec| spec.full_name }
+ end
+
def test_uri_hash
assert_equal @hash, @source.uri_hash
diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb
index 3924191db9..d08e77faff 100644
--- a/test/rubygems/test_gem_specification.rb
+++ b/test/rubygems/test_gem_specification.rb
@@ -2447,8 +2447,8 @@ duplicate dependency on b (>= 1.2.3), (~> 1.2) use:
end
assert_match <<-warning, @ui.error
-WARNING: licenses is empty. Use a license abbreviation from:
- http://opensource.org/licenses/alphabetical
+WARNING: licenses is empty, but is recommended. Use a license abbreviation from:
+http://opensource.org/licenses/alphabetical
warning
end
diff --git a/test/rubygems/test_gem_util.rb b/test/rubygems/test_gem_util.rb
index bf67b14d38..17a19dd302 100644
--- a/test/rubygems/test_gem_util.rb
+++ b/test/rubygems/test_gem_util.rb
@@ -5,6 +5,10 @@ class TestGemUtil < Gem::TestCase
def test_class_popen
assert_equal "0\n", Gem::Util.popen(Gem.ruby, '-e', 'p 0')
+
+ assert_raises Errno::ECHILD do
+ Process.wait -1
+ end
end
end