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