From 8eb39185810a59ad8d3aa874ba8f6c9a7b0949ac Mon Sep 17 00:00:00 2001 From: drbrain Date: Wed, 25 Sep 2013 00:53:19 +0000 Subject: * lib/rubygems: Fix CVE-2013-4363. Miscellaneous minor improvements. * test/rubygems: Tests for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43039 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/rubygems/test_gem_requirement.rb | 20 +++++++++++--------- test/rubygems/test_gem_specification.rb | 20 +++++++++++++++++--- test/rubygems/test_gem_version.rb | 11 ++++++++--- 3 files changed, 36 insertions(+), 15 deletions(-) (limited to 'test') diff --git a/test/rubygems/test_gem_requirement.rb b/test/rubygems/test_gem_requirement.rb index 1de0f41f20..01db08e84f 100644 --- a/test/rubygems/test_gem_requirement.rb +++ b/test/rubygems/test_gem_requirement.rb @@ -47,18 +47,20 @@ class TestGemRequirement < Gem::TestCase end def test_parse_bad - e = assert_raises Gem::Requirement::BadRequirementError do - Gem::Requirement.parse nil - end - - assert_equal 'Illformed requirement [nil]', e.message + [ + nil, + '', + '! 1', + '= junk', + '1..2', + ].each do |bad| + e = assert_raises Gem::Requirement::BadRequirementError do + Gem::Requirement.parse bad + end - e = assert_raises Gem::Requirement::BadRequirementError do - Gem::Requirement.parse "" + assert_equal "Illformed requirement [#{bad.inspect}]", e.message end - assert_equal 'Illformed requirement [""]', e.message - assert_equal Gem::Requirement::BadRequirementError.superclass, ArgumentError end diff --git a/test/rubygems/test_gem_specification.rb b/test/rubygems/test_gem_specification.rb index 51c7be813f..2e2074fb29 100644 --- a/test/rubygems/test_gem_specification.rb +++ b/test/rubygems/test_gem_specification.rb @@ -1112,6 +1112,20 @@ dependencies: [] assert_equal [@bonobo, @monkey], @gem.dependencies end + def test_dependent_gems + util_setup_deps + + assert_empty @gem.dependent_gems + + bonobo = quick_spec 'bonobo' + + expected = [ + [@gem, @bonobo, [bonobo]], + ] + + assert_equal expected, bonobo.dependent_gems + end + def test_doc_dir assert_equal File.join(@gemhome, 'doc', 'a-1'), @a1.doc_dir end @@ -1550,13 +1564,13 @@ dependencies: [] @a2.add_runtime_dependency 'b', '1' @a2.dependencies.first.instance_variable_set :@type, nil @a2.required_rubygems_version = Gem::Requirement.new '> 0' - @a2.require_paths << "lib/a/ext" + @a2.require_paths << 'other' ruby_code = @a2.to_ruby expected = <<-SPEC # -*- encoding: utf-8 -*- -# stub: a 2 ruby lib\0lib/a/ext +# stub: a 2 ruby lib\0other Gem::Specification.new do |s| s.name = "a" @@ -1569,7 +1583,7 @@ Gem::Specification.new do |s| s.email = "example@example.com" s.files = ["lib/code.rb"] s.homepage = "http://example.com" - s.require_paths = ["lib", "lib/a/ext"] + s.require_paths = ["lib", "other"] s.rubygems_version = "#{Gem::VERSION}" s.summary = "this is a summary" diff --git a/test/rubygems/test_gem_version.rb b/test/rubygems/test_gem_version.rb index 2ba196e48d..2136034d1f 100644 --- a/test/rubygems/test_gem_version.rb +++ b/test/rubygems/test_gem_version.rb @@ -67,12 +67,17 @@ class TestGemVersion < Gem::TestCase end def test_initialize_bad - ["junk", "1.0\n2.0"].each do |bad| - e = assert_raises ArgumentError do + %W[ + junk + 1.0\n2.0 + 1..2 + 1.2\ 3.4 + ].each do |bad| + e = assert_raises ArgumentError, bad do Gem::Version.new bad end - assert_equal "Malformed version number string #{bad}", e.message + assert_equal "Malformed version number string #{bad}", e.message, bad end end -- cgit v1.2.3