diff --git a/version/version.go b/version/version.go index ccb3ce207..f8f794af7 100644 --- a/version/version.go +++ b/version/version.go @@ -47,6 +47,11 @@ func InitializePluginVersion(vers, versionPrerelease string) *PluginVersion { func NewRawVersion(rawSemVer string) *PluginVersion { vers := version.Must(version.NewVersion(rawSemVer)) + + if len(vers.Segments()) != 3 { + panic(fmt.Sprintf("versions should only have 3 segments, %q had %d", rawSemVer, len(vers.Segments()))) + } + return &PluginVersion{ version: vers.Core().String(), versionPrerelease: vers.Prerelease(), @@ -71,16 +76,7 @@ func NewPluginVersion(vers, versionPrerelease, versionMetadata string) *PluginVe versionRawString = fmt.Sprintf("%s+%s", versionRawString, versionMetadata) } - // This call initializes the SemVer to make sure that if Packer crashes due - // to an invalid SemVer it's at the very beginning of the Packer run. - semVer := version.Must(version.NewVersion(versionRawString)) - - return &PluginVersion{ - version: semVer.Core().String(), - versionPrerelease: semVer.Prerelease(), - versionMetadata: semVer.Metadata(), - semVer: semVer, - } + return NewRawVersion(versionRawString) } type PluginVersion struct { diff --git a/version/version_test.go b/version/version_test.go index c5957d205..350e5ccd9 100644 --- a/version/version_test.go +++ b/version/version_test.go @@ -59,6 +59,14 @@ func Test_PluginVersionCreate(t *testing.T) { true, "", }, + { + "4-parts version, should not be accepted", + "1.1.1.1", + "", + "", + true, + "", + }, } for _, tt := range tests {