diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/rubygems/test_gem_commands_install_command.rb | 131 | ||||
-rw-r--r-- | test/rubygems/test_gem_installer.rb | 66 | ||||
-rw-r--r-- | test/rubygems/test_gem_resolver_api_set.rb | 78 | ||||
-rw-r--r-- | test/rubygems/test_gem_resolver_api_specification.rb | 6 | ||||
-rw-r--r-- | test/rubygems/test_gem_resolver_best_set.rb | 6 | ||||
-rw-r--r-- | test/rubygems/test_gem_source.rb | 4 | ||||
-rw-r--r-- | test/rubygems/test_gem_source_subpath_problem.rb | 4 |
7 files changed, 173 insertions, 122 deletions
diff --git a/test/rubygems/test_gem_commands_install_command.rb b/test/rubygems/test_gem_commands_install_command.rb index 08530bfeca..c8015f9985 100644 --- a/test/rubygems/test_gem_commands_install_command.rb +++ b/test/rubygems/test_gem_commands_install_command.rb @@ -504,6 +504,137 @@ ERROR: Possible alternatives: non_existent_with_hint assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name } end + def test_execute_required_ruby_version + next_ruby = Gem.ruby_version.segments.map.with_index{|n, i| i == 1 ? n + 1 : n }.join(".") + + local = Gem::Platform.local + spec_fetcher do |fetcher| + fetcher.download 'a', 2 + fetcher.download 'a', 2 do |s| + s.required_ruby_version = "< #{RUBY_VERSION}.a" + s.platform = local + end + fetcher.download 'a', 3 do |s| + s.required_ruby_version = ">= #{next_ruby}" + end + fetcher.download 'a', 3 do |s| + s.required_ruby_version = ">= #{next_ruby}" + s.platform = local + end + end + + @cmd.options[:args] = %w[a] + + use_ui @ui do + assert_raises Gem::MockGemUi::SystemExitException, @ui.error do + @cmd.execute + end + end + + assert_equal %w[a-2], @cmd.installed_specs.map {|spec| spec.full_name } + end + + def test_execute_required_ruby_version_upper_bound + local = Gem::Platform.local + spec_fetcher do |fetcher| + fetcher.gem 'a', 2.0 + fetcher.gem 'a', 2.0 do |s| + s.required_ruby_version = "< #{RUBY_VERSION}.a" + s.platform = local + end + end + + @cmd.options[:args] = %w[a] + + use_ui @ui do + assert_raises Gem::MockGemUi::SystemExitException, @ui.error do + @cmd.execute + end + end + + assert_equal %w[a-2.0], @cmd.installed_specs.map {|spec| spec.full_name } + end + + def test_execute_required_ruby_version_specific_not_met + spec_fetcher do |fetcher| + fetcher.gem 'a', '1.0' do |s| + s.required_ruby_version = '= 1.4.6' + end + end + + @cmd.options[:args] = %w[a] + + use_ui @ui do + assert_raises Gem::MockGemUi::TermError do + @cmd.execute + end + end + + errs = @ui.error.split("\n") + assert_equal "ERROR: Error installing a:", errs.shift + assert_equal "\ta-1.0 requires Ruby version = 1.4.6. The current ruby version is #{Gem.ruby_version}.", errs.shift + end + + def test_execute_required_ruby_version_specific_prerelease_met + spec_fetcher do |fetcher| + fetcher.gem 'a', '1.0' do |s| + s.required_ruby_version = '>= 1.4.6.preview2' + end + end + + @cmd.options[:args] = %w[a] + + use_ui @ui do + assert_raises Gem::MockGemUi::SystemExitException, @ui.error do + @cmd.execute + end + end + + assert_equal %w[a-1.0], @cmd.installed_specs.map {|spec| spec.full_name } + end + + def test_execute_required_ruby_version_specific_prerelease_not_met + next_ruby_pre = Gem.ruby_version.segments.map.with_index{|n, i| i == 1 ? n + 1 : n }.join(".") + ".a" + + spec_fetcher do |fetcher| + fetcher.gem 'a', '1.0' do |s| + s.required_ruby_version = "> #{next_ruby_pre}" + end + end + + @cmd.options[:args] = %w[a] + + use_ui @ui do + assert_raises Gem::MockGemUi::TermError do + @cmd.execute + end + end + + errs = @ui.error.split("\n") + assert_equal "ERROR: Error installing a:", errs.shift + assert_equal "\ta-1.0 requires Ruby version > #{next_ruby_pre}. The current ruby version is #{Gem.ruby_version}.", errs.shift + end + + def test_execute_required_rubygems_version_wrong + spec_fetcher do |fetcher| + fetcher.gem 'a', '1.0' do |s| + s.required_rubygems_version = '< 0' + end + end + + @cmd.options[:args] = %w[a] + + use_ui @ui do + assert_raises Gem::MockGemUi::TermError do + @cmd.execute + end + end + + errs = @ui.error.split("\n") + assert_equal "ERROR: Error installing a:", errs.shift + assert_equal "\ta-1.0 requires RubyGems version < 0. The current RubyGems version is #{Gem.rubygems_version}. Try 'gem update --system' to update RubyGems itself.", errs.shift + end + def test_execute_rdoc specs = spec_fetcher do |fetcher| fetcher.gem 'a', 2 diff --git a/test/rubygems/test_gem_installer.rb b/test/rubygems/test_gem_installer.rb index 0a9a2e38dd..4ce7e92442 100644 --- a/test/rubygems/test_gem_installer.rb +++ b/test/rubygems/test_gem_installer.rb @@ -1172,12 +1172,16 @@ gem 'other', version end def test_install_force + _, missing_dep_gem = util_gem 'missing_dep', '1' do |s| + s.add_dependency 'doesnt_exist', '1' + end + use_ui @ui do - installer = Gem::Installer.at old_ruby_required('= 1.4.6'), :force => true + installer = Gem::Installer.at missing_dep_gem, :force => true installer.install end - gem_dir = File.join(@gemhome, 'gems', 'old_ruby_required-1') + gem_dir = File.join(@gemhome, 'gems', 'missing_dep-1') assert_path_exists gem_dir end @@ -1620,54 +1624,6 @@ gem 'other', version end end - def test_pre_install_checks_ruby_version - use_ui @ui do - installer = Gem::Installer.at old_ruby_required('= 1.4.6') - e = assert_raises Gem::RuntimeRequirementNotMetError do - installer.pre_install_checks - end - rv = Gem.ruby_version - assert_equal "old_ruby_required requires Ruby version = 1.4.6. The current ruby version is #{rv}.", - e.message - end - end - - def test_pre_install_checks_ruby_version_with_prereleases - util_set_RUBY_VERSION '2.6.0', -1, '63539', 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]' - - installer = Gem::Installer.at old_ruby_required('>= 2.6.0.preview2') - assert installer.pre_install_checks - - installer = Gem::Installer.at old_ruby_required('> 2.6.0.preview2') - e = assert_raises Gem::RuntimeRequirementNotMetError do - assert installer.pre_install_checks - end - assert_equal "old_ruby_required requires Ruby version > 2.6.0.preview2. The current ruby version is 2.6.0.preview2.", - e.message - ensure - util_restore_RUBY_VERSION - end - - def test_pre_install_checks_wrong_rubygems_version - spec = util_spec 'old_rubygems_required', '1' do |s| - s.required_rubygems_version = '< 0' - end - - util_build_gem spec - - gem = File.join(@gemhome, 'cache', spec.file_name) - - use_ui @ui do - installer = Gem::Installer.at gem - e = assert_raises Gem::RuntimeRequirementNotMetError do - installer.pre_install_checks - end - rgv = Gem::VERSION - assert_equal "old_rubygems_required requires RubyGems version < 0. The current RubyGems version is #{rgv}. " + - "Try 'gem update --system' to update RubyGems itself.", e.message - end - end - def test_pre_install_checks_malicious_name spec = util_spec '../malicious', '1' def spec.full_name # so the spec is buildable @@ -2252,16 +2208,6 @@ gem 'other', version assert_kind_of(String, installer.gem) end - def old_ruby_required(requirement) - spec = util_spec 'old_ruby_required', '1' do |s| - s.required_ruby_version = requirement - end - - util_build_gem spec - - spec.cache_file - end - def util_execless @spec = util_spec 'z' util_build_gem @spec diff --git a/test/rubygems/test_gem_resolver_api_set.rb b/test/rubygems/test_gem_resolver_api_set.rb index 8a838c761b..aa17ec6f3a 100644 --- a/test/rubygems/test_gem_resolver_api_set.rb +++ b/test/rubygems/test_gem_resolver_api_set.rb @@ -6,29 +6,29 @@ class TestGemResolverAPISet < Gem::TestCase super @DR = Gem::Resolver - @dep_uri = URI "#{@gem_repo}api/v1/dependencies" + @dep_uri = URI "#{@gem_repo}info/" 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'), set.uri - assert_equal Gem::Source.new(URI('https://rubygems.org')), set.source + assert_equal URI('https://index.rubygems.org/info/'), set.dep_uri + assert_equal URI('https://index.rubygems.org/'), set.uri + assert_equal Gem::Source.new(URI('https://index.rubygems.org')), set.source end def test_initialize_deeper_uri - set = @DR::APISet.new 'https://rubygemsserver.com/mygems/api/v1/dependencies' + set = @DR::APISet.new 'https://rubygemsserver.com/mygems/info' - assert_equal URI('https://rubygemsserver.com/mygems/api/v1/dependencies'), set.dep_uri - assert_equal URI('https://rubygemsserver.com/mygems/'), set.uri - assert_equal Gem::Source.new(URI('https://rubygemsserver.com/mygems/')), set.source + assert_equal URI('https://rubygemsserver.com/mygems/info'), set.dep_uri + assert_equal URI('https://rubygemsserver.com/'), set.uri + assert_equal Gem::Source.new(URI('https://rubygemsserver.com/')), set.source end def test_initialize_uri set = @DR::APISet.new @dep_uri - assert_equal URI("#{@gem_repo}api/v1/dependencies"), set.dep_uri + assert_equal URI("#{@gem_repo}info/"), set.dep_uri assert_equal URI("#{@gem_repo}"), set.uri end @@ -42,7 +42,7 @@ class TestGemResolverAPISet < Gem::TestCase :dependencies => [] }, ] - @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data + @fetcher.data["#{@dep_uri}a"] = "---\n1 " set = @DR::APISet.new @dep_uri @@ -69,7 +69,7 @@ class TestGemResolverAPISet < Gem::TestCase :dependencies => [] }, ] - @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data + @fetcher.data["#{@dep_uri}a"] = "---\n1\n2.a" set = @DR::APISet.new @dep_uri set.prerelease = true @@ -94,7 +94,7 @@ class TestGemResolverAPISet < Gem::TestCase :dependencies => [] }, ] - @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data + @fetcher.data["#{@dep_uri}a"] = "---\n1 " set = @DR::APISet.new @dep_uri @@ -108,7 +108,7 @@ class TestGemResolverAPISet < Gem::TestCase assert_equal expected, set.find_all(a_dep) - @fetcher.data.delete "#{@dep_uri}?gems=a" + @fetcher.data.delete "#{@dep_uri}a" end def test_find_all_local @@ -123,7 +123,7 @@ class TestGemResolverAPISet < Gem::TestCase def test_find_all_missing spec_fetcher - @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump [] + @fetcher.data["#{@dep_uri}a"] = "---" set = @DR::APISet.new @dep_uri @@ -131,7 +131,7 @@ class TestGemResolverAPISet < Gem::TestCase assert_empty set.find_all(a_dep) - @fetcher.data.delete "#{@dep_uri}?gems=a" + @fetcher.data.delete "#{@dep_uri}a" assert_empty set.find_all(a_dep) end @@ -139,15 +139,8 @@ class TestGemResolverAPISet < Gem::TestCase 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 [] + @fetcher.data["#{@dep_uri}a"] = "---\n1 \n" + @fetcher.data["#{@dep_uri}b"] = "---" set = @DR::APISet.new @dep_uri @@ -163,14 +156,7 @@ class TestGemResolverAPISet < Gem::TestCase def test_prefetch_cache spec_fetcher - data = [ - { :name => 'a', - :number => '1', - :platform => 'ruby', - :dependencies => [] }, - ] - - @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data + @fetcher.data["#{@dep_uri}a"] = "---\n1 \n" set = @DR::APISet.new @dep_uri @@ -179,8 +165,8 @@ class TestGemResolverAPISet < Gem::TestCase set.prefetch [a_dep] - @fetcher.data.delete "#{@dep_uri}?gems=a" - @fetcher.data["#{@dep_uri}?gems=b"] = Marshal.dump [] + @fetcher.data.delete "#{@dep_uri}a" + @fetcher.data["#{@dep_uri}?b"] = "---" set.prefetch [a_dep, b_dep] end @@ -188,14 +174,8 @@ class TestGemResolverAPISet < Gem::TestCase 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 + @fetcher.data["#{@dep_uri}a"] = "---\n1 \n" + @fetcher.data["#{@dep_uri}b"] = "---" set = @DR::APISet.new @dep_uri @@ -204,7 +184,8 @@ class TestGemResolverAPISet < Gem::TestCase set.prefetch [a_dep, b_dep] - @fetcher.data.delete "#{@dep_uri}?gems=a,b" + @fetcher.data.delete "#{@dep_uri}a" + @fetcher.data.delete "#{@dep_uri}b" set.prefetch [a_dep, b_dep] end @@ -212,15 +193,8 @@ class TestGemResolverAPISet < Gem::TestCase def test_prefetch_local 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 [] + @fetcher.data["#{@dep_uri}a"] = "---\n1 \n" + @fetcher.data["#{@dep_uri}b"] = "---" set = @DR::APISet.new @dep_uri set.remote = false diff --git a/test/rubygems/test_gem_resolver_api_specification.rb b/test/rubygems/test_gem_resolver_api_specification.rb index 3db57677f3..e9ba4ae481 100644 --- a/test/rubygems/test_gem_resolver_api_specification.rb +++ b/test/rubygems/test_gem_resolver_api_specification.rb @@ -39,7 +39,7 @@ class TestGemResolverAPISpecification < Gem::TestCase rails = specs['rails-3.0.3'] - repo = @gem_repo + 'api/v1/dependencies' + repo = @gem_repo + 'info' set = Gem::Resolver::APISet.new repo @@ -123,7 +123,7 @@ class TestGemResolverAPISpecification < Gem::TestCase fetcher.spec 'a', 1 end - dep_uri = URI(@gem_repo) + 'api/v1/dependencies' + dep_uri = URI(@gem_repo) + 'info' set = Gem::Resolver::APISet.new dep_uri data = { :name => 'a', @@ -147,7 +147,7 @@ class TestGemResolverAPISpecification < Gem::TestCase end end - dep_uri = URI(@gem_repo) + 'api/v1/dependencies' + dep_uri = URI(@gem_repo) + 'info' set = Gem::Resolver::APISet.new dep_uri data = { :name => 'j', diff --git a/test/rubygems/test_gem_resolver_best_set.rb b/test/rubygems/test_gem_resolver_best_set.rb index 8218bf5d70..657ad33387 100644 --- a/test/rubygems/test_gem_resolver_best_set.rb +++ b/test/rubygems/test_gem_resolver_best_set.rb @@ -39,7 +39,7 @@ class TestGemResolverBestSet < Gem::TestCase set = @DR::BestSet.new - api_uri = URI(@gem_repo) + './api/v1/dependencies' + api_uri = URI(@gem_repo) set.sets << Gem::Resolver::APISet.new(api_uri) @@ -99,12 +99,12 @@ class TestGemResolverBestSet < Gem::TestCase def test_replace_failed_api_set set = @DR::BestSet.new - api_uri = URI(@gem_repo) + './api/v1/dependencies' + api_uri = URI(@gem_repo) + './info/' api_set = Gem::Resolver::APISet.new api_uri set.sets << api_set - error_uri = api_uri + '?gems=a' + error_uri = api_uri + 'a' error = Gem::RemoteFetcher::FetchError.new 'bogus', error_uri diff --git a/test/rubygems/test_gem_source.rb b/test/rubygems/test_gem_source.rb index 09c510f096..d6c2ffa051 100644 --- a/test/rubygems/test_gem_source.rb +++ b/test/rubygems/test_gem_source.rb @@ -44,9 +44,9 @@ class TestGemSource < Gem::TestCase def test_dependency_resolver_set_bundler_api response = Net::HTTPResponse.new '1.1', 200, 'OK' - response.uri = URI('http://example') if response.respond_to? :uri + response.uri = URI('http://example') - @fetcher.data["#{@gem_repo}api/v1/dependencies"] = response + @fetcher.data[@gem_repo] = response set = @source.dependency_resolver_set diff --git a/test/rubygems/test_gem_source_subpath_problem.rb b/test/rubygems/test_gem_source_subpath_problem.rb index eb92b7d404..b2289ea625 100644 --- a/test/rubygems/test_gem_source_subpath_problem.rb +++ b/test/rubygems/test_gem_source_subpath_problem.rb @@ -21,9 +21,9 @@ class TestGemSourceSubpathProblem < Gem::TestCase def test_dependency_resolver_set response = Net::HTTPResponse.new '1.1', 200, 'OK' - response.uri = URI('http://example') if response.respond_to? :uri + response.uri = URI('http://example') - @fetcher.data["#{@gem_repo}/api/v1/dependencies"] = response + @fetcher.data["#{@gem_repo}/"] = response set = @source.dependency_resolver_set |