require_relative 'gemutilities' require 'rubygems/dependency' class TestGemDependency < RubyGemTestCase def test_subclass sc = Class.new Gem::Dependency def sc.requirement() bogus; end out, err = capture_io do assert_equal Gem::Requirement.default, sc.new('a').version_requirement end assert_match %r%deprecated%, err end def test_initialize d = dep "pkg", "> 1.0" assert_equal "pkg", d.name assert_equal req("> 1.0"), d.requirement end def test_initialize_double d = dep "pkg", "> 1.0", "< 2.0" assert_equal req("> 1.0", "< 2.0"), d.requirement end def test_initialize_empty d = dep "pkg" assert_equal req(">= 0"), d.requirement end def test_initialize_type assert_equal :runtime, dep("pkg").type assert_equal :development, dep("pkg", [], :development).type assert_raises ArgumentError do dep "pkg", :sometimes end end def test_initialize_version d = dep "pkg", v("2") assert_equal req("= 2"), d.requirement end def test_equals2 o = dep "other" d = dep "pkg", "> 1.0" d1 = dep "pkg", "> 1.1" assert_equal d, d.dup assert_equal d.dup, d refute_equal d, d1 refute_equal d1, d refute_equal d, o refute_equal o, d refute_equal d, Object.new refute_equal Object.new, d end def test_equals2_type refute_equal dep("pkg", :runtime), dep("pkg", :development) end def test_equals_tilde d = dep "a", "0" assert_match d, d, "matche self" assert_match dep("a", ">= 0"), d, "match version exact" assert_match dep("a", ">= 0"), dep("a", "1"), "match version" assert_match dep(/a/, ">= 0"), d, "match simple regexp" assert_match dep(/a|b/, ">= 0"), d, "match scary regexp" refute_match dep(/a/), dep("b") refute_match dep("a"), Object.new end def test_equals_tilde_escape refute_match dep("a|b"), dep("a", "1") assert_match dep(/a|b/), dep("a", "1") end def test_equals_tilde_object o = Object.new def o.name ; 'a' end def o.version ; '0' end assert_match dep("a"), o end def test_equals_tilde_spec assert_match dep("a", ">= 0"), spec("a", "0") assert_match dep("a", "1"), spec("a", "1") assert_match dep(/a/, ">= 0"), spec("a", "0") assert_match dep(/a|b/, ">= 0"), spec("b", "0") refute_match dep(/a/, ">= 0"), spec("b", "0") end def test_hash d = dep "pkg", "1.0" assert_equal d.hash, d.dup.hash assert_equal d.dup.hash, d.hash refute_equal dep("pkg", "1.0").hash, dep("pkg", "2.0").hash, "requirement" refute_equal dep("pkg", "1.0").hash, dep("abc", "1.0").hash, "name" refute_equal dep("pkg", :development), dep("pkg", :runtime), "type" end def test_prerelease_eh d = dep "pkg", "= 1" refute d.prerelease? d.prerelease = true assert d.prerelease? d = dep "pkg", "= 1.a" assert d.prerelease? d.prerelease = false assert d.prerelease? d = dep "pkg", "> 1.a", "> 2" assert d.prerelease? end def test_version_requirements_equals_deprecated d = dep "pkg", "1.0" out, err = capture_io do d.version_requirements = '2.0' assert_equal Gem::Requirement.new(%w[2.0]), d.requirement end assert_match %r%deprecated%, err end end