aboutsummaryrefslogtreecommitdiffstats
path: root/test/rubygems
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2020-03-22 12:50:56 +0100
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2020-03-30 12:54:58 +0900
commit9d5e7d6c67b084649a6966c69032dd35b1e16b79 (patch)
tree7f16f5c47582ccf198aa3530db528afd7c18255b /test/rubygems
parent7f8f33ebb9a8eba3d6721e24eac248ff75e2c615 (diff)
downloadruby-9d5e7d6c67b084649a6966c69032dd35b1e16b79.tar.gz
[rubygems/rubygems] Revert "Remove Gem::DependencyInstaller#find_gems_with_sources"
This reverts commit 04c79d3eb9d9803d9fae78575b125b325b97206e. Final removal is postponed until next year until we find a better way to manage deprecations. https://github.com/rubygems/rubygems/commit/3e1cf918a5
Diffstat (limited to 'test/rubygems')
-rw-r--r--test/rubygems/test_gem_dependency_installer.rb111
1 files changed, 111 insertions, 0 deletions
diff --git a/test/rubygems/test_gem_dependency_installer.rb b/test/rubygems/test_gem_dependency_installer.rb
index 50ae3f049b..e7a72c1ef8 100644
--- a/test/rubygems/test_gem_dependency_installer.rb
+++ b/test/rubygems/test_gem_dependency_installer.rb
@@ -911,6 +911,117 @@ class TestGemDependencyInstaller < Gem::TestCase
assert_equal %w[d-2], inst.installed_gems.map { |s| s.full_name }
end
+ def test_find_gems_gems_with_sources
+ util_setup_gems
+
+ inst = Gem::DependencyInstaller.new
+ dep = Gem::Dependency.new 'b', '>= 0'
+
+ Gem::Specification.reset
+
+ set = Gem::Deprecate.skip_during do
+ inst.find_gems_with_sources(dep)
+ end
+
+ assert_kind_of Gem::AvailableSet, set
+
+ s = set.set.first
+
+ assert_equal @b1, s.spec
+ assert_equal Gem::Source.new(@gem_repo), s.source
+ end
+
+ def test_find_gems_with_sources_local
+ util_setup_gems
+
+ FileUtils.mv @a1_gem, @tempdir
+ inst = Gem::DependencyInstaller.new
+ dep = Gem::Dependency.new 'a', '>= 0'
+ set = nil
+
+ Dir.chdir @tempdir do
+ set = Gem::Deprecate.skip_during do
+ inst.find_gems_with_sources dep
+ end
+ end
+
+ gems = set.sorted
+
+ assert_equal 2, gems.length
+
+ remote, local = gems
+
+ assert_equal 'a-1', local.spec.full_name, 'local spec'
+ assert_equal File.join(@tempdir, @a1.file_name),
+ local.source.download(local.spec), 'local path'
+
+ assert_equal 'a-1', remote.spec.full_name, 'remote spec'
+ assert_equal Gem::Source.new(@gem_repo), remote.source, 'remote path'
+ end
+
+ def test_find_gems_with_sources_prerelease
+ util_setup_gems
+
+ installer = Gem::DependencyInstaller.new
+
+ dependency = Gem::Dependency.new('a', Gem::Requirement.default)
+
+ set = Gem::Deprecate.skip_during do
+ installer.find_gems_with_sources(dependency)
+ end
+
+ releases = set.all_specs
+
+ assert releases.any? { |s| s.name == 'a' and s.version.to_s == '1' }
+ refute releases.any? { |s| s.name == 'a' and s.version.to_s == '1.a' }
+
+ dependency.prerelease = true
+
+ set = Gem::Deprecate.skip_during do
+ installer.find_gems_with_sources(dependency)
+ end
+
+ prereleases = set.all_specs
+
+ assert_equal [@a1_pre, @a1], prereleases
+ end
+
+ def test_find_gems_with_sources_with_best_only_and_platform
+ util_setup_gems
+ a1_x86_mingw32, = util_gem 'a', '1' do |s|
+ s.platform = 'x86-mingw32'
+ end
+ util_setup_spec_fetcher @a1, a1_x86_mingw32
+ Gem.platforms << Gem::Platform.new('x86-mingw32')
+
+ installer = Gem::DependencyInstaller.new
+
+ dependency = Gem::Dependency.new('a', Gem::Requirement.default)
+
+ set = Gem::Deprecate.skip_during do
+ installer.find_gems_with_sources(dependency, true)
+ end
+
+ releases = set.all_specs
+
+ assert_equal [a1_x86_mingw32], releases
+ end
+
+ def test_find_gems_with_sources_with_bad_source
+ Gem.sources.replace ["http://not-there.nothing"]
+
+ installer = Gem::DependencyInstaller.new
+
+ dep = Gem::Dependency.new('a')
+
+ out = Gem::Deprecate.skip_during do
+ installer.find_gems_with_sources(dep)
+ end
+
+ assert out.empty?
+ assert_kind_of Gem::SourceFetchProblem, installer.errors.first
+ end
+
def test_resolve_dependencies
util_setup_gems