diff --git a/util/semver/nuget_test.go b/util/semver/nuget_test.go index 7851a91..11253c0 100644 --- a/util/semver/nuget_test.go +++ b/util/semver/nuget_test.go @@ -74,6 +74,8 @@ var nugetVersionParseTests = []versionParseTest{ v("1.*.*", "version has multiple wildcards in `1.*.*`", ""), v("1.0.0*-alpha", "missing asterisk at end of prerelease in `1.0.0*-alpha`", ""), v("1.0.0-a*a*", "invalid text in version string in `1.0.0-a*a*`", ""), + v("1*.", "invalid text in version string in `1*.`", ""), + v("1*-", "empty pre-release metadata in `1*-`", ""), } func TestNuGetVersionParse(t *testing.T) { diff --git a/util/semver/version.go b/util/semver/version.go index d7c296e..4ca1024 100644 --- a/util/semver/version.go +++ b/util/semver/version.go @@ -526,9 +526,12 @@ func (p *versionParser) version() (*Version, error) { // NuGet allows for the metadata part to start and end with an // asterisk. r = p.lex.next() - if r != eof { + if r == '-' { p.isPrerelease = true r = p.metadata(&p.pre, false, "pre-release") + if len(p.pre) == 0 { + return nil, p.lex.err + } l := p.pre[len(p.pre)-1] if l[len(l)-1] != '*' { p.lex.setErr("missing asterisk at end of prerelease")