From 506987d31fdd39673aa0cd4d3bd3dca519a1193e Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Mon, 17 Feb 2014 20:52:37 +0400 Subject: [PATCH] Support version numbers like pkg (1.4) --- debian/version.go | 19 ++++++++++++------- debian/version_test.go | 12 ++++++++++++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/debian/version.go b/debian/version.go index 2a580995..c6997e76 100644 --- a/debian/version.go +++ b/debian/version.go @@ -255,12 +255,17 @@ func ParseDependency(dep string) (d Dependency, err error) { d.Pkg = strings.TrimSpace(dep[0:i]) - rel := dep[i+1 : i+2] - if dep[i+2] == '>' || dep[i+2] == '<' || dep[i+2] == '=' { - rel += dep[i+2 : i+3] - d.Version = strings.TrimSpace(dep[i+3 : len(dep)-1]) + rel := "" + if dep[i+1] == '>' || dep[i+1] == '<' || dep[i+1] == '=' { + rel += dep[i+1 : i+2] + if dep[i+2] == '>' || dep[i+2] == '<' || dep[i+2] == '=' { + rel += dep[i+2 : i+3] + d.Version = strings.TrimSpace(dep[i+3 : len(dep)-1]) + } else { + d.Version = strings.TrimSpace(dep[i+2 : len(dep)-1]) + } } else { - d.Version = strings.TrimSpace(dep[i+2 : len(dep)-1]) + d.Version = strings.TrimSpace(dep[i+1 : len(dep)-1]) } switch rel { @@ -272,10 +277,10 @@ func ParseDependency(dep string) (d Dependency, err error) { d.Relation = VersionLess case ">>": d.Relation = VersionGreater - case "=": + case "", "=": d.Relation = VersionEqual default: - err = fmt.Errorf("relation unknown: %s", rel) + err = fmt.Errorf("relation unknown %#v in dependency %s", rel, dep) } return diff --git a/debian/version_test.go b/debian/version_test.go index 6b2e760e..844dc4ba 100644 --- a/debian/version_test.go +++ b/debian/version_test.go @@ -112,6 +112,18 @@ func (s *VersionSuite) TestParseDependency(c *C) { c.Check(d.Relation, Equals, VersionGreater) c.Check(d.Version, Equals, "1.6") + d, e = ParseDependency("dpkg(1.6)") + c.Check(e, IsNil) + c.Check(d.Pkg, Equals, "dpkg") + c.Check(d.Relation, Equals, VersionEqual) + c.Check(d.Version, Equals, "1.6") + + d, e = ParseDependency("dpkg ( 1.6)") + c.Check(e, IsNil) + c.Check(d.Pkg, Equals, "dpkg") + c.Check(d.Relation, Equals, VersionEqual) + c.Check(d.Version, Equals, "1.6") + d, e = ParseDependency("dpkg (> 1.6)") c.Check(e, IsNil) c.Check(d.Pkg, Equals, "dpkg")