version_test.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package version
  2. import (
  3. "strings"
  4. "testing"
  5. )
  6. func TestString(t *testing.T) {
  7. tests := []struct {
  8. name string
  9. version string
  10. commit string
  11. date string
  12. dirty string
  13. want string
  14. }{
  15. {name: "semver without date", version: "1.2.3", commit: "abcdef123456", dirty: "", want: "1.2.3"},
  16. {name: "dev falls back to commit", version: "dev", commit: "abcdef123456", dirty: "", want: "abcdef123456"},
  17. {name: "dev without commit", version: "dev", commit: "unknown", dirty: "", want: "dev"},
  18. {name: "empty version falls back to commit", version: "", commit: "abcdef123456", dirty: "", want: "abcdef123456"},
  19. {name: "dirty suffix", version: "1.2.3", commit: "abcdef123456", dirty: "-dirty", want: "1.2.3-dirty"},
  20. {name: "dirty suffix not duplicated", version: "1.2.3-dirty", commit: "abcdef123456", dirty: "-dirty", want: "1.2.3-dirty"},
  21. }
  22. for _, tt := range tests {
  23. t.Run(tt.name, func(t *testing.T) {
  24. Version, Commit, Date, Dirty = tt.version, tt.commit, tt.date, tt.dirty
  25. if got := String(); got != tt.want {
  26. t.Fatalf("String() = %q, want %q", got, tt.want)
  27. }
  28. })
  29. }
  30. }
  31. func TestStringIncludesSanitizedDate(t *testing.T) {
  32. Version, Commit, Date, Dirty = "1.2.3", "abcdef123456", "2024-01-02T03:04:05+00:00", ""
  33. got := String()
  34. if !strings.HasPrefix(got, "1.2.3_") {
  35. t.Fatalf("String() = %q, want a date suffix after the version", got)
  36. }
  37. if strings.ContainsAny(got, ": ") {
  38. t.Fatalf("String() = %q, want dates without separators", got)
  39. }
  40. }
  41. func TestNormalizeDateRemovesSeparators(t *testing.T) {
  42. for _, in := range []string{
  43. "2024-01-02T03:04:05+00:00",
  44. "2024-01-02 03:04:05",
  45. " 2024-01-02T03:04:05Z ",
  46. } {
  47. got := normalizeDate(in)
  48. if strings.ContainsAny(got, ": ") {
  49. t.Fatalf("normalizeDate(%q) = %q, want no spaces or colons", in, got)
  50. }
  51. }
  52. }
  53. func TestShortCommit(t *testing.T) {
  54. if got := shortCommit("abcdef1234567890"); got != "abcdef123456" {
  55. t.Fatalf("shortCommit(long) = %q, want 12 characters", got)
  56. }
  57. if got := shortCommit("abc"); got != "abc" {
  58. t.Fatalf("shortCommit(short) = %q, want unchanged", got)
  59. }
  60. }