diff options
Diffstat (limited to 'jni/ruby/test/rubygems/test_gem_resolver_api_specification.rb')
-rw-r--r-- | jni/ruby/test/rubygems/test_gem_resolver_api_specification.rb | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/jni/ruby/test/rubygems/test_gem_resolver_api_specification.rb b/jni/ruby/test/rubygems/test_gem_resolver_api_specification.rb new file mode 100644 index 0000000..dfa61e9 --- /dev/null +++ b/jni/ruby/test/rubygems/test_gem_resolver_api_specification.rb @@ -0,0 +1,144 @@ +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 + |