diff --git a/cmd/semver.go b/cmd/semver.go index 277e3b5af..ab9405292 100644 --- a/cmd/semver.go +++ b/cmd/semver.go @@ -24,11 +24,19 @@ func NewSemanticVersion(version string) (*SemanticVersion, error) { // IsRelease returns true if it's a release version func (s *SemanticVersion) IsRelease() bool { + // Limit to v1 + if s.Version.Major() != 1 { + return false + } return len(s.Version.Prerelease()) == 0 && len(s.Version.Metadata()) == 0 } // IsPreRelease returns true if it's a prerelease version func (s *SemanticVersion) IsPreRelease() bool { + // Limit to v1 + if s.Version.Major() != 1 { + return false + } return len(s.Version.Prerelease()) > 0 } diff --git a/cmd/semver_test.go b/cmd/semver_test.go new file mode 100644 index 000000000..54261b6f7 --- /dev/null +++ b/cmd/semver_test.go @@ -0,0 +1,65 @@ +package cmd + +import ( + "testing" +) + +func TestSemanticVersion_IsPreRelease(t *testing.T) { + tests := []struct { + name string + version string + want bool + }{ + {"v1.6.7-pre0", "v1.6.7-pre0", true}, + {"v2.6.7+pre0", "v2.6.7+pre0", false}, + {"v2.6.7", "v2.6.7", false}, + {"v2.0.0+alpha.1", "v2.0.0+alpha.1", false}, + {"v2.0.0-alpha.1", "v2.0.0-alpha.1", false}, + {"v1.6.7", "v1.6.7", false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + semanticversion, err := NewSemanticVersion(tt.version) + if err != nil { + t.Errorf("Invalid semantic version: %s", semanticversion) + return + } + s := &SemanticVersion{ + Version: semanticversion.Version, + } + if got := s.IsPreRelease(); got != tt.want { + t.Errorf("IsPreRelease() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestSemanticVersion_IsRelease(t *testing.T) { + tests := []struct { + name string + version string + want bool + }{ + {"v1.6.7", "v1.6.7", true}, + {"v2.6.7-pre0", "v2.6.7-pre0", false}, + {"v2.6.7", "v2.6.7", false}, + {"v2.6.7+release", "v2.6.7+release", false}, + {"v2.0.0-alpha.1", "v2.0.0-alpha.1", false}, + {"v1.6.7-pre0", "v1.6.7-pre0", false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + semanticversion, err := NewSemanticVersion(tt.version) + if err != nil { + t.Errorf("Invalid semantic version: %s", semanticversion) + return + } + s := &SemanticVersion{ + Version: semanticversion.Version, + } + if got := s.IsRelease(); got != tt.want { + t.Errorf("IsRelease() = %v, want %v", got, tt.want) + } + }) + } +}