github.com/shopify/docker@v1.13.1/api/types/reference/image_reference_test.go (about) 1 package reference 2 3 import ( 4 "testing" 5 ) 6 7 func TestParse(t *testing.T) { 8 testCases := []struct { 9 ref string 10 expectedName string 11 expectedTag string 12 expectedError bool 13 }{ 14 { 15 ref: "", 16 expectedName: "", 17 expectedTag: "", 18 expectedError: true, 19 }, 20 { 21 ref: "repository", 22 expectedName: "repository", 23 expectedTag: "latest", 24 expectedError: false, 25 }, 26 { 27 ref: "repository:tag", 28 expectedName: "repository", 29 expectedTag: "tag", 30 expectedError: false, 31 }, 32 { 33 ref: "test.com/repository", 34 expectedName: "test.com/repository", 35 expectedTag: "latest", 36 expectedError: false, 37 }, 38 { 39 ref: "test.com:5000/test/repository", 40 expectedName: "test.com:5000/test/repository", 41 expectedTag: "latest", 42 expectedError: false, 43 }, 44 { 45 ref: "test.com:5000/repo@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 46 expectedName: "test.com:5000/repo", 47 expectedTag: "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 48 expectedError: false, 49 }, 50 { 51 ref: "test.com:5000/repo:tag@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 52 expectedName: "test.com:5000/repo", 53 expectedTag: "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", 54 expectedError: false, 55 }, 56 } 57 58 for _, c := range testCases { 59 name, tag, err := Parse(c.ref) 60 if err != nil && c.expectedError { 61 continue 62 } else if err != nil { 63 t.Fatalf("error with %s: %s", c.ref, err.Error()) 64 } 65 if name != c.expectedName { 66 t.Fatalf("expected name %s, got %s", c.expectedName, name) 67 } 68 if tag != c.expectedTag { 69 t.Fatalf("expected tag %s, got %s", c.expectedTag, tag) 70 } 71 } 72 }