You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ut...@apache.org on 2017/11/28 08:39:28 UTC
[mynewt-newt] branch master updated: newt - 1-dev and 1.0-dev
should not compare equal
This is an automated email from the ASF dual-hosted git repository.
utzig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-newt.git
The following commit(s) were added to refs/heads/master by this push:
new 60ae37b newt - 1-dev and 1.0-dev should not compare equal
60ae37b is described below
commit 60ae37b707f77a130cbda25678c315200076a43d
Author: Christopher Collins <cc...@apache.org>
AuthorDate: Mon Nov 27 18:12:38 2017 -0800
newt - 1-dev and 1.0-dev should not compare equal
Newt generated some false positives when comparing the desired repo
version against an actual version. The problem was that unspecified
version parts were set to 0. Thus, the following two versions would
compare equal to one another:
o 1-latest
o 1.0-latest
The fix is to set unspecified version parts to a special value (-1).
---
newt/repo/version.go | 36 +++++++++++++++++++++++++++---------
1 file changed, 27 insertions(+), 9 deletions(-)
diff --git a/newt/repo/version.go b/newt/repo/version.go
index f09d38c..2dc723f 100644
--- a/newt/repo/version.go
+++ b/newt/repo/version.go
@@ -32,8 +32,6 @@ import (
log "github.com/Sirupsen/logrus"
)
-const VERSION_FORMAT = "%d.%d.%d-%s"
-
const (
VERSION_STABILITY_NONE = "none"
VERSION_STABILITY_STABLE = "stable"
@@ -42,6 +40,10 @@ const (
VERSION_STABILITY_TAG = "tag"
)
+// Represents an unspecified part in a version. For example, in "1-latest",
+// the minor and revision parts are floating.
+const VERSION_FLOATING = -1
+
type VersionMatch struct {
compareType string
Vers *Version
@@ -109,8 +111,8 @@ func (v *Version) CompareVersions(vers1 interfaces.VersionInterface,
}
func (v *Version) SatisfiesVersion(versMatches []interfaces.VersionReqInterface) bool {
- if versMatches == nil {
- return true
+ if len(versMatches) == 0 {
+ return false
}
for _, match := range versMatches {
@@ -154,7 +156,18 @@ func (vers *Version) String() string {
if vers.tag != "" {
return fmt.Sprintf("%s-tag", vers.tag)
}
- return fmt.Sprintf(VERSION_FORMAT, vers.Major(), vers.Minor(), vers.Revision(), vers.Stability())
+
+ s := fmt.Sprintf("%d", vers.Major())
+ if vers.Minor() != VERSION_FLOATING {
+ s += fmt.Sprintf(".%d", vers.Minor())
+ }
+ if vers.Revision() != VERSION_FLOATING {
+ s += fmt.Sprintf(".%d", vers.Revision())
+ }
+
+ s += fmt.Sprintf("-%s", vers.Stability())
+
+ return s
}
func (vers *Version) ToNuVersion() newtutil.Version {
@@ -182,20 +195,25 @@ func LoadVersion(versStr string) (*Version, error) {
fallthrough
case VERSION_STABILITY_LATEST:
default:
- return nil, util.NewNewtError(
- fmt.Sprintf("Unknown stability (%s) in version ", stability) + versStr)
+ return nil, util.FmtNewtError(
+ "Unknown stability (%s) in version %s", stability, versStr)
}
}
parts := strings.Split(sparts[0], ".")
if len(parts) > 3 {
- return nil, util.NewNewtError(fmt.Sprintf("Invalid version string: %s", versStr))
+ return nil, util.FmtNewtError("Invalid version string: %s", versStr)
}
if strings.Trim(parts[0], " ") == "" || strings.Trim(parts[0], " ") == "none" {
return nil, nil
}
- vers := &Version{}
+ // Assume no parts of the version are specified.
+ vers := &Version{
+ major: VERSION_FLOATING,
+ minor: VERSION_FLOATING,
+ revision: VERSION_FLOATING,
+ }
vers.stability = stability
// convert first string to an int
--
To stop receiving notification emails like this one, please contact
['"commits@mynewt.apache.org" <co...@mynewt.apache.org>'].