Blake Mizerany vor 1 Jahr
Ursprung
Commit
9f2d8d2117
2 geänderte Dateien mit 10 neuen und 5 gelöschten Zeilen
  1. 7 2
      x/build/blob/ref.go
  2. 3 3
      x/build/blob/ref_test.go

+ 7 - 2
x/build/blob/ref.go

@@ -198,6 +198,11 @@ func ParseRef(s string) Ref {
 	return r
 }
 
+// Parts returns a sequence of the parts of a ref string from most specific
+// to least specific.
+//
+// It normalizes the input string by removing "http://" and "https://" only.
+// No other normalization is done.
 func Parts(s string) iter.Seq2[PartKind, string] {
 	return func(yield func(PartKind, string) bool) {
 		if strings.HasPrefix(s, "http://") {
@@ -224,8 +229,7 @@ func Parts(s string) iter.Seq2[PartKind, string] {
 			case '+':
 				switch state {
 				case Build:
-					v := strings.ToUpper(s[i+1 : j])
-					if !yieldValid(Build, v) {
+					if !yieldValid(Build, s[i+1:j]) {
 						return
 					}
 					state, j = Tag, i
@@ -265,6 +269,7 @@ func Parts(s string) iter.Seq2[PartKind, string] {
 		case Domain:
 			yieldValid(Domain, s[:j])
 		case Namespace:
+			println("namespace", s[:j])
 			yieldValid(Namespace, s[:j])
 		default:
 			yieldValid(Name, s[:j])

+ 3 - 3
x/build/blob/ref_test.go

@@ -24,9 +24,9 @@ var testRefs = map[string]Ref{
 	// invalid
 	"mistral:7b+Q4_0:latest": {},
 	"mi tral":                {},
-
-	// From fuzzing
-	"/0": {},
+	"x/y/z/foo":              {},
+	"/0":                     {},
+	"0/":                     {},
 }
 
 func TestRefParts(t *testing.T) {