ollama/server/modelpath_test.go

123 lines
2.4 KiB
Go
Raw Normal View History

2023-08-22 00:56:56 -04:00
package server
import "testing"
func TestParseModelPath(t *testing.T) {
type input struct {
name string
allowInsecure bool
}
tests := []struct {
name string
args input
want ModelPath
wantErr error
}{
{
"full path https",
input{"https://example.com/ns/repo:tag", false},
ModelPath{
ProtocolScheme: "https",
Registry: "example.com",
Namespace: "ns",
Repository: "repo",
Tag: "tag",
},
nil,
},
{
"full path http without insecure",
input{"http://example.com/ns/repo:tag", false},
ModelPath{},
ErrInsecureProtocol,
},
{
"full path http with insecure",
input{"http://example.com/ns/repo:tag", true},
ModelPath{
ProtocolScheme: "http",
Registry: "example.com",
Namespace: "ns",
Repository: "repo",
Tag: "tag",
},
nil,
},
{
"full path invalid protocol",
input{"file://example.com/ns/repo:tag", false},
ModelPath{},
ErrInvalidProtocol,
},
{
"no protocol",
input{"example.com/ns/repo:tag", false},
ModelPath{
ProtocolScheme: "https",
Registry: "example.com",
Namespace: "ns",
Repository: "repo",
Tag: "tag",
},
nil,
},
{
"no registry",
input{"ns/repo:tag", false},
ModelPath{
ProtocolScheme: "https",
Registry: DefaultRegistry,
Namespace: "ns",
Repository: "repo",
Tag: "tag",
},
nil,
},
{
"no namespace",
input{"repo:tag", false},
ModelPath{
ProtocolScheme: "https",
Registry: DefaultRegistry,
Namespace: DefaultNamespace,
Repository: "repo",
Tag: "tag",
},
nil,
},
{
"no tag",
input{"repo", false},
ModelPath{
ProtocolScheme: "https",
Registry: DefaultRegistry,
Namespace: DefaultNamespace,
Repository: "repo",
Tag: DefaultTag,
},
nil,
},
{
"invalid image format",
input{"example.com/a/b/c", false},
ModelPath{},
ErrInvalidImageFormat,
},
}
for _, tc := range tests {
t.Run(tc.name, func(t *testing.T) {
got, err := ParseModelPath(tc.args.name, tc.args.allowInsecure)
if err != tc.wantErr {
t.Errorf("got: %q want: %q", err, tc.wantErr)
}
if got != tc.want {
t.Errorf("got: %q want: %q", got, tc.want)
}
})
}
}