Merge pull request #3774 from thaJeztah/remove_deprecated_shortid
reference: remove support for deprecated "shortid" refsmaster
						commit
						c7758d1637
					
				|  | @ -4,7 +4,6 @@ import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"strings" | 	"strings" | ||||||
| 
 | 
 | ||||||
| 	"github.com/distribution/distribution/v3/digestset" |  | ||||||
| 	"github.com/opencontainers/go-digest" | 	"github.com/opencontainers/go-digest" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -179,20 +178,3 @@ func ParseAnyReference(ref string) (Reference, error) { | ||||||
| 
 | 
 | ||||||
| 	return ParseNormalizedNamed(ref) | 	return ParseNormalizedNamed(ref) | ||||||
| } | } | ||||||
| 
 |  | ||||||
| // ParseAnyReferenceWithSet parses a reference string as a possible short
 |  | ||||||
| // identifier to be matched in a digest set, a full digest, or familiar name.
 |  | ||||||
| func ParseAnyReferenceWithSet(ref string, ds *digestset.Set) (Reference, error) { |  | ||||||
| 	if ok := anchoredShortIdentifierRegexp.MatchString(ref); ok { |  | ||||||
| 		dgst, err := ds.Lookup(ref) |  | ||||||
| 		if err == nil { |  | ||||||
| 			return digestReference(dgst), nil |  | ||||||
| 		} |  | ||||||
| 	} else { |  | ||||||
| 		if dgst, err := digest.Parse(ref); err == nil { |  | ||||||
| 			return digestReference(dgst), nil |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return ParseNormalizedNamed(ref) |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  | @ -4,7 +4,6 @@ import ( | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"testing" | 	"testing" | ||||||
| 
 | 
 | ||||||
| 	"github.com/distribution/distribution/v3/digestset" |  | ||||||
| 	"github.com/opencontainers/go-digest" | 	"github.com/opencontainers/go-digest" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -360,7 +359,6 @@ func TestParseAnyReference(t *testing.T) { | ||||||
| 		Reference  string | 		Reference  string | ||||||
| 		Equivalent string | 		Equivalent string | ||||||
| 		Expected   Reference | 		Expected   Reference | ||||||
| 		Digests    []digest.Digest |  | ||||||
| 	}{ | 	}{ | ||||||
| 		{ | 		{ | ||||||
| 			Reference:  "redis", | 			Reference:  "redis", | ||||||
|  | @ -416,62 +414,16 @@ func TestParseAnyReference(t *testing.T) { | ||||||
| 			Reference:  "dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9", | 			Reference:  "dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9", | ||||||
| 			Equivalent: "docker.io/library/dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9", | 			Equivalent: "docker.io/library/dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9", | ||||||
| 		}, | 		}, | ||||||
| 		{ |  | ||||||
| 			Reference:  "dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9", |  | ||||||
| 			Expected:   digestReference("sha256:dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c"), |  | ||||||
| 			Equivalent: "sha256:dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c", |  | ||||||
| 			Digests: []digest.Digest{ |  | ||||||
| 				digest.Digest("sha256:dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c"), |  | ||||||
| 				digest.Digest("sha256:abcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c"), |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			Reference:  "dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9", |  | ||||||
| 			Equivalent: "docker.io/library/dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9", |  | ||||||
| 			Digests: []digest.Digest{ |  | ||||||
| 				digest.Digest("sha256:abcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c"), |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			Reference:  "dbcc1c", |  | ||||||
| 			Expected:   digestReference("sha256:dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c"), |  | ||||||
| 			Equivalent: "sha256:dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c", |  | ||||||
| 			Digests: []digest.Digest{ |  | ||||||
| 				digest.Digest("sha256:dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c"), |  | ||||||
| 				digest.Digest("sha256:abcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c"), |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		{ | 		{ | ||||||
| 			Reference:  "dbcc1", | 			Reference:  "dbcc1", | ||||||
| 			Equivalent: "docker.io/library/dbcc1", | 			Equivalent: "docker.io/library/dbcc1", | ||||||
| 			Digests: []digest.Digest{ |  | ||||||
| 				digest.Digest("sha256:dbcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c"), |  | ||||||
| 				digest.Digest("sha256:abcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c"), |  | ||||||
| 			}, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			Reference:  "dbcc1c", |  | ||||||
| 			Equivalent: "docker.io/library/dbcc1c", |  | ||||||
| 			Digests: []digest.Digest{ |  | ||||||
| 				digest.Digest("sha256:abcc1c35ac38df41fd2f5e4130b32ffdb93ebae8b3dbe638c23575912276fc9c"), |  | ||||||
| 			}, |  | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	for _, tcase := range tcases { | 	for _, tcase := range tcases { | ||||||
| 		var ref Reference | 		var ref Reference | ||||||
| 		var err error | 		var err error | ||||||
| 		if len(tcase.Digests) == 0 { | 		ref, err = ParseAnyReference(tcase.Reference) | ||||||
| 			ref, err = ParseAnyReference(tcase.Reference) |  | ||||||
| 		} else { |  | ||||||
| 			ds := digestset.NewSet() |  | ||||||
| 			for _, dgst := range tcase.Digests { |  | ||||||
| 				if err := ds.Add(dgst); err != nil { |  | ||||||
| 					t.Fatalf("Error adding digest %s: %v", dgst.String(), err) |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			ref, err = ParseAnyReferenceWithSet(tcase.Reference, ds) |  | ||||||
| 		} |  | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			t.Fatalf("Error parsing reference %s: %v", tcase.Reference, err) | 			t.Fatalf("Error parsing reference %s: %v", tcase.Reference, err) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -112,22 +112,10 @@ var ( | ||||||
| 	// are like digests without the algorithm, since sha256 is used.
 | 	// are like digests without the algorithm, since sha256 is used.
 | ||||||
| 	IdentifierRegexp = regexp.MustCompile(identifier) | 	IdentifierRegexp = regexp.MustCompile(identifier) | ||||||
| 
 | 
 | ||||||
| 	shortIdentifier = `([a-f0-9]{6,64})` |  | ||||||
| 	// ShortIdentifierRegexp is the format used to represent a prefix
 |  | ||||||
| 	// of an identifier. A prefix may be used to match a sha256 identifier
 |  | ||||||
| 	// within a list of trusted identifiers.
 |  | ||||||
| 	ShortIdentifierRegexp = regexp.MustCompile(shortIdentifier) |  | ||||||
| 
 |  | ||||||
| 	anchoredIdentifier = anchored(identifier) | 	anchoredIdentifier = anchored(identifier) | ||||||
| 	// anchoredIdentifierRegexp is used to check or match an
 | 	// anchoredIdentifierRegexp is used to check or match an
 | ||||||
| 	// identifier value, anchored at start and end of string.
 | 	// identifier value, anchored at start and end of string.
 | ||||||
| 	anchoredIdentifierRegexp = regexp.MustCompile(anchoredIdentifier) | 	anchoredIdentifierRegexp = regexp.MustCompile(anchoredIdentifier) | ||||||
| 
 |  | ||||||
| 	anchoredShortIdentifier = anchored(shortIdentifier) |  | ||||||
| 	// anchoredShortIdentifierRegexp is used to check if a value
 |  | ||||||
| 	// is a possible identifier prefix, anchored at start and end
 |  | ||||||
| 	// of string.
 |  | ||||||
| 	anchoredShortIdentifierRegexp = regexp.MustCompile(anchoredShortIdentifier) |  | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // literal compiles s into a literal regular expression, escaping any regexp
 | // literal compiles s into a literal regular expression, escaping any regexp
 | ||||||
|  |  | ||||||
|  | @ -550,43 +550,7 @@ func TestIdentifierRegexp(t *testing.T) { | ||||||
| 			match: false, | 			match: false, | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 
 |  | ||||||
| 	shortCases := []regexpMatch{ |  | ||||||
| 		{ |  | ||||||
| 			input: "da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf9821", |  | ||||||
| 			match: true, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			input: "7EC43B381E5AEFE6E04EFB0B3F0693FF2A4A50652D64AEC573905F2DB5889A1C", |  | ||||||
| 			match: false, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			input: "da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf", |  | ||||||
| 			match: true, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			input: "sha256:da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf9821", |  | ||||||
| 			match: false, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			input: "da304e823d8ca2b9d863a3c897baeb852ba21ea9a9f1414736394ae7fcaf98218482", |  | ||||||
| 			match: false, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			input: "da304", |  | ||||||
| 			match: false, |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			input: "da304e", |  | ||||||
| 			match: true, |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	for i := range fullCases { | 	for i := range fullCases { | ||||||
| 		checkRegexp(t, anchoredIdentifierRegexp, fullCases[i]) | 		checkRegexp(t, anchoredIdentifierRegexp, fullCases[i]) | ||||||
| 	} | 	} | ||||||
| 
 |  | ||||||
| 	for i := range shortCases { |  | ||||||
| 		checkRegexp(t, anchoredShortIdentifierRegexp, shortCases[i]) |  | ||||||
| 	} |  | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue