versioning_test.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package tarsum
  2. import (
  3. "testing"
  4. )
  5. func TestVersionLabelForChecksum(t *testing.T) {
  6. version := VersionLabelForChecksum("tarsum+sha256:deadbeef")
  7. if version != "tarsum" {
  8. t.Fatalf("Version should have been 'tarsum', was %v", version)
  9. }
  10. version = VersionLabelForChecksum("tarsum.v1+sha256:deadbeef")
  11. if version != "tarsum.v1" {
  12. t.Fatalf("Version should have been 'tarsum.v1', was %v", version)
  13. }
  14. version = VersionLabelForChecksum("something+somethingelse")
  15. if version != "something" {
  16. t.Fatalf("Version should have been 'something', was %v", version)
  17. }
  18. version = VersionLabelForChecksum("invalidChecksum")
  19. if version != "" {
  20. t.Fatalf("Version should have been empty, was %v", version)
  21. }
  22. }
  23. func TestVersion(t *testing.T) {
  24. expected := "tarsum"
  25. var v Version
  26. if v.String() != expected {
  27. t.Errorf("expected %q, got %q", expected, v.String())
  28. }
  29. expected = "tarsum.v1"
  30. v = 1
  31. if v.String() != expected {
  32. t.Errorf("expected %q, got %q", expected, v.String())
  33. }
  34. expected = "tarsum.dev"
  35. v = 2
  36. if v.String() != expected {
  37. t.Errorf("expected %q, got %q", expected, v.String())
  38. }
  39. }
  40. func TestGetVersion(t *testing.T) {
  41. testSet := []struct {
  42. Str string
  43. Expected Version
  44. }{
  45. {"tarsum+sha256:e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b", Version0},
  46. {"tarsum+sha256", Version0},
  47. {"tarsum", Version0},
  48. {"tarsum.dev", VersionDev},
  49. {"tarsum.dev+sha256:deadbeef", VersionDev},
  50. }
  51. for _, ts := range testSet {
  52. v, err := GetVersionFromTarsum(ts.Str)
  53. if err != nil {
  54. t.Fatalf("%q : %s", err, ts.Str)
  55. }
  56. if v != ts.Expected {
  57. t.Errorf("expected %d (%q), got %d (%q)", ts.Expected, ts.Expected, v, v)
  58. }
  59. }
  60. // test one that does not exist, to ensure it errors
  61. str := "weak+md5:abcdeabcde"
  62. _, err := GetVersionFromTarsum(str)
  63. if err != ErrNotVersion {
  64. t.Fatalf("%q : %s", err, str)
  65. }
  66. }
  67. func TestGetVersions(t *testing.T) {
  68. expected := []Version{
  69. Version0,
  70. Version1,
  71. VersionDev,
  72. }
  73. versions := GetVersions()
  74. if len(versions) != len(expected) {
  75. t.Fatalf("Expected %v versions, got %v", len(expected), len(versions))
  76. }
  77. if !containsVersion(versions, expected[0]) || !containsVersion(versions, expected[1]) || !containsVersion(versions, expected[2]) {
  78. t.Fatalf("Expected [%v], got [%v]", expected, versions)
  79. }
  80. }
  81. func containsVersion(versions []Version, version Version) bool {
  82. for _, v := range versions {
  83. if v == version {
  84. return true
  85. }
  86. }
  87. return false
  88. }