# frozen_string_literal: true require 'rubygems/test_case' class TestGemResolverAPISpecification < Gem::TestCase def test_initialize set = Gem::Resolver::APISet.new data = { :name => 'rails', :number => '3.0.3', :platform => Gem::Platform.local.to_s, :dependencies => [ ['bundler', '~> 1.0'], ['railties', '= 3.0.3'], ], } spec = Gem::Resolver::APISpecification.new set, data assert_equal 'rails', spec.name assert_equal Gem::Version.new('3.0.3'), spec.version assert_equal Gem::Platform.local, spec.platform expected = [ Gem::Dependency.new('bundler', '~> 1.0'), Gem::Dependency.new('railties', '= 3.0.3'), ] assert_equal expected, spec.dependencies end def test_fetch_development_dependencies specs = spec_fetcher do |fetcher| fetcher.spec 'rails', '3.0.3' do |s| s.add_runtime_dependency 'bundler', '~> 1.0' s.add_runtime_dependency 'railties', '= 3.0.3' s.add_development_dependency 'a', '= 1' end end rails = specs['rails-3.0.3'] repo = @gem_repo + 'api/v1/dependencies' set = Gem::Resolver::APISet.new repo data = { :name => 'rails', :number => '3.0.3', :platform => 'ruby', :dependencies => [ ['bundler', '~> 1.0'], ['railties', '= 3.0.3'], ], } util_setup_spec_fetcher rails spec = Gem::Resolver::APISpecification.new set, data spec.fetch_development_dependencies expected = [ Gem::Dependency.new('bundler', '~> 1.0'), Gem::Dependency.new('railties', '= 3.0.3'), Gem::Dependency.new('a', '= 1', :development), ] assert_equal expected, spec.dependencies end def test_installable_platform_eh set = Gem::Resolver::APISet.new data = { :name => 'a', :number => '1', :platform => 'ruby', :dependencies => [], } a_spec = Gem::Resolver::APISpecification.new set, data assert a_spec.installable_platform? data = { :name => 'b', :number => '1', :platform => 'cpu-other_platform-1', :dependencies => [], } b_spec = Gem::Resolver::APISpecification.new set, data refute b_spec.installable_platform? data = { :name => 'c', :number => '1', :platform => Gem::Platform.local.to_s, :dependencies => [], } c_spec = Gem::Resolver::APISpecification.new set, data assert c_spec.installable_platform? 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