Blake Mizerany 1 рік тому
батько
коміт
f51197a814
1 змінених файлів з 42 додано та 26 видалено
  1. 42 26
      x/model/name_test.go

+ 42 - 26
x/model/name_test.go

@@ -7,26 +7,42 @@ import (
 )
 
 var testNames = map[string]Name{
-	"mistral:latest":      {model: "mistral", tag: "latest"},
-	"mistral":             {model: "mistral"},
-	"mistral:30B":         {model: "mistral", tag: "30B"},
-	"mistral:7b":          {model: "mistral", tag: "7b"},
-	"mistral:7b+Q4_0":     {model: "mistral", tag: "7b", build: "Q4_0"},
-	"mistral+KQED":        {model: "mistral", build: "KQED"},
-	"mistral.x-3:7b+Q4_0": {model: "mistral.x-3", tag: "7b", build: "Q4_0"},
-	"mistral:7b+q4_0":     {model: "mistral", tag: "7b", build: "Q4_0"},
-	"llama2":              {model: "llama2"},
+	"mistral:latest":                 {model: "mistral", tag: "latest"},
+	"mistral":                        {model: "mistral"},
+	"mistral:30B":                    {model: "mistral", tag: "30B"},
+	"mistral:7b":                     {model: "mistral", tag: "7b"},
+	"mistral:7b+Q4_0":                {model: "mistral", tag: "7b", build: "Q4_0"},
+	"mistral+KQED":                   {model: "mistral", build: "KQED"},
+	"mistral.x-3:7b+Q4_0":            {model: "mistral.x-3", tag: "7b", build: "Q4_0"},
+	"mistral:7b+q4_0":                {model: "mistral", tag: "7b", build: "Q4_0"},
+	"llama2":                         {model: "llama2"},
+	"user/model":                     {namespace: "user", model: "model"},
+	"example.com/ns/mistral:7b+Q4_0": {host: "example.com", namespace: "ns", model: "mistral", tag: "7b", build: "Q4_0"},
+	"example.com/ns/mistral:7b+x":    {host: "example.com", namespace: "ns", model: "mistral", tag: "7b", build: "X"},
 
 	// invalid (includes fuzzing trophies)
-	"+":                      {},
-	"mistral:7b+Q4_0:latest": {},
-	"mi tral":                {},
-	"x/y/z/foo":              {},
+	" / / : + ": {},
+	" / : + ":   {},
+	" : + ":     {},
+	" + ":       {},
+	" : ":       {},
+	" / ":       {},
+	" /":        {},
+	"/ ":        {},
+	"/":         {},
+	":":         {},
+	"+":         {},
+
+	// (".") in namepsace is not allowed
+	"invalid.com/7b+x": {},
+
+	"invalid:7b+Q4_0:latest": {},
+	"in valid":               {},
+	"invalid/y/z/foo":        {},
 	"/0":                     {},
 	"0 /0":                   {},
 	"0 /":                    {},
 	"0/":                     {},
-	":":                      {},
 	":/0":                    {},
 	"+0/00000":               {},
 	"0+.\xf2\x80\xf6\x9d00000\xe5\x99\xe6\xd900\xd90\xa60\x91\xdc0\xff\xbf\x99\xe800\xb9\xdc\xd6\xc300\x970\xfb\xfd0\xe0\x8a\xe1\xad\xd40\x9700\xa80\x980\xdd0000\xb00\x91000\xfe0\x89\x9b\x90\x93\x9f0\xe60\xf7\x84\xb0\x87\xa5\xff0\xa000\x9a\x85\xf6\x85\xfe\xa9\xf9\xe9\xde00\xf4\xe0\x8f\x81\xad\xde00\xd700\xaa\xe000000\xb1\xee0\x91": {},
@@ -83,11 +99,11 @@ func TestName(t *testing.T) {
 		completeWithoutBuild bool
 	}{
 		{"", false, false},
-		{"example.com/mistral:7b+x", false, false},
-		{"example.com/mistral:7b+Q4_0", false, false},
-		{"mistral:7b+x", false, false},
-		{"example.com/x/mistral:latest+Q4_0", true, true},
-		{"example.com/x/mistral:latest", false, true},
+		{"incomplete/mistral:7b+x", false, false},
+		{"incomplete/mistral:7b+Q4_0", false, false},
+		{"incomplete:7b+x", false, false},
+		{"complete.com/x/mistral:latest+Q4_0", true, true},
+		{"complete.com/x/mistral:latest", false, true},
 	}
 
 	for _, tt := range cases {
@@ -136,8 +152,8 @@ func TestNameFull(t *testing.T) {
 		wantFull string
 	}{
 		{"", empty},
-		{"example.com/mistral:7b+x", "!(MISSING DOMAIN)/example.com/mistral:7b+X"},
-		{"example.com/mistral:7b+Q4_0", "!(MISSING DOMAIN)/example.com/mistral:7b+Q4_0"},
+		{"ns/mistral:7b+x", "!(MISSING DOMAIN)/ns/mistral:7b+X"},
+		{"ns/mistral:7b+Q4_0", "!(MISSING DOMAIN)/ns/mistral:7b+Q4_0"},
 		{"example.com/x/mistral:latest", "example.com/x/mistral:latest+!(MISSING BUILD)"},
 		{"example.com/x/mistral:latest+Q4_0", "example.com/x/mistral:latest+Q4_0"},
 
@@ -210,15 +226,15 @@ func FuzzParseName(f *testing.F) {
 		if !r0.EqualFold(r1) {
 			t.Errorf("round-trip mismatch: %+v != %+v", r0, r1)
 		}
-
 	})
 }
 
 func ExampleMerge() {
-	r := Merge(
-		ParseName("mistral"),
-		ParseName("registry.ollama.com/XXXXX:latest+Q4_0"),
-	)
+	src := ParseName("registry.ollama.com/mistral:latest")
+	dst := ParseName("mistral")
+	r := Merge(dst, src)
+	fmt.Println("src:", src)
+	fmt.Println("dst:", dst)
 	fmt.Println(r)
 
 	// Output: