diff --git a/cmd/entire/cli/versioncheck/versioncheck.go b/cmd/entire/cli/versioncheck/versioncheck.go index 11c832c6d..e5ec0a771 100644 --- a/cmd/entire/cli/versioncheck/versioncheck.go +++ b/cmd/entire/cli/versioncheck/versioncheck.go @@ -231,6 +231,12 @@ func isOutdated(current, latest string) bool { latest = "v" + latest } + // Skip notification for prerelease versions (development builds). + // We don't publish prerelease versions, so these are development builds and shouldn't trigger update notifications. + if semver.Prerelease(current) != "" { + return false + } + // semver.Compare returns -1 if current < latest return semver.Compare(current, latest) < 0 } diff --git a/cmd/entire/cli/versioncheck/versioncheck_test.go b/cmd/entire/cli/versioncheck/versioncheck_test.go index 61992db72..1b47d193b 100644 --- a/cmd/entire/cli/versioncheck/versioncheck_test.go +++ b/cmd/entire/cli/versioncheck/versioncheck_test.go @@ -35,8 +35,15 @@ func TestIsOutdated(t *testing.T) { {"1.0.0", "v1.0.1", true, "mixed v prefix reversed"}, // Pre-release versions (semver uses hyphen) - {"1.0.0-rc1", "1.0.0", true, "prerelease in current"}, + {"1.0.0-rc1", "1.0.0", false, "prerelease in current"}, {"1.0.0", "1.0.1-rc1", true, "prerelease in latest is still newer"}, + + // Git describe format (should strip suffix before comparing) + {"v0.4.4-76-g230b49bf-dirty", "v0.4.4", false, "git describe dirty build is not outdated"}, + {"v0.4.4-76-g230b49bf", "v0.4.4", false, "git describe build is not outdated"}, + {"v0.4.4-76-g230b49bf-dirty", "v0.4.5", false, "git describe build is not outdated"}, + {"v0.4.4-1-gabcdef0", "v0.4.4", false, "git describe 1 commit ahead and is not outdated"}, + {"v1.0.0-100-g1234567890ab-dirty", "v1.0.0", false, "git describe long hash dirty"}, } for _, tt := range tests {