# frozen_string_literal: true require_relative "helper" 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 + "info" 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) + "info" 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 def test_spec_jruby_platform spec_fetcher do |fetcher| fetcher.gem "j", 1 do |spec| spec.platform = "jruby" end end dep_uri = URI(@gem_repo) + "info" set = Gem::Resolver::APISet.new dep_uri data = { :name => "j", :number => "1", :platform => "jruby", :dependencies => [], } api_spec = Gem::Resolver::APISpecification.new set, data spec = api_spec.spec assert_kind_of Gem::Specification, spec assert_equal "j-1-java", spec.full_name end end