Files
zzet--gortex/cmd/gortex/eval_embedders_models_test.go
wehub-resource-sync a06f331eb8
CI / benchmark (push) Has been skipped
install-script / posix-syntax (push) Successful in 6m1s
CI / build-onnx (push) Failing after 6m43s
init-smoke / dry-run (push) Failing after 15m57s
security / govulncheck (push) Has been cancelled
security / trivy-fs (push) Has been cancelled
CI / test (1.26, ubuntu-latest) (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
CI / test (1.26, macos-latest) (push) Has been cancelled
CI / build-windows (push) Has been cancelled
CI / lint (push) Has been cancelled
install-script / powershell-syntax (push) Has been cancelled
install-script / install (macos-14) (push) Has been cancelled
install-script / install (ubuntu-latest) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:33:42 +08:00

123 lines
3.4 KiB
Go

package main
import (
"bytes"
"fmt"
"strings"
"testing"
)
func TestNextGenModelSpecs_AllRegistered(t *testing.T) {
specs := nextGenModelSpecs()
want := []string{"embedding-gemma", "qwen3-embedding-8b", "nv-embed-v2", "potion-code-16m"}
got := map[string]bool{}
for _, s := range specs {
got[s.Name] = true
}
for _, w := range want {
if !got[w] {
t.Errorf("registry missing spec %q (have: %v)", w, mapKeys(got))
}
}
}
func TestNextGenModelSpecs_CarryInstallHints(t *testing.T) {
for _, s := range nextGenModelSpecs() {
if s.InstallHint == "" {
t.Errorf("spec %q has empty install hint — operators won't know what to install", s.Name)
}
if s.LoaderCheck == nil {
t.Errorf("spec %q has nil LoaderCheck — --list can't probe availability", s.Name)
}
if s.Provider == "" {
t.Errorf("spec %q has empty provider — list grouping breaks", s.Name)
}
if s.Dim <= 0 {
t.Errorf("spec %q has invalid dim %d", s.Name, s.Dim)
}
}
}
func TestModelSpecByName_CaseInsensitive(t *testing.T) {
for _, name := range []string{"potion-code-16m", "POTION-CODE-16M", "Potion-Code-16M"} {
if got := modelSpecByName(name); got == nil {
t.Errorf("modelSpecByName(%q) = nil, want a match", name)
}
}
}
func TestModelSpecByName_UnknownReturnsNil(t *testing.T) {
if got := modelSpecByName("does-not-exist"); got != nil {
t.Errorf("modelSpecByName(unknown) = %v, want nil", got)
}
}
func TestPythonModulePresent_ImpossibleModuleReturnsError(t *testing.T) {
check := pythonModulePresent("this_module_should_definitely_not_exist_xyz")
if err := check(); err == nil {
t.Error("expected error for impossible module")
}
}
func TestEvalEmbeddersListCmd_PopulatesAllSections(t *testing.T) {
var buf bytes.Buffer
evalEmbeddersListCmd.SetOut(&buf)
if err := evalEmbeddersListCmd.RunE(evalEmbeddersListCmd, nil); err != nil {
t.Fatalf("list cmd failed: %v", err)
}
out := buf.String()
for _, want := range []string{
"# Embedder model registry",
"## Next-gen specs",
"## MiniLM-L6-v2 ONNX variants",
"embedding-gemma",
"qwen3-embedding-8b",
"nv-embed-v2",
"potion-code-16m",
"fp32",
"qint8_arm64",
} {
if !strings.Contains(out, want) {
t.Errorf("--list output missing %q\n----\n%s", want, out)
}
}
}
func TestEvalEmbeddersListCmd_AvailabilityColumnPopulates(t *testing.T) {
var buf bytes.Buffer
evalEmbeddersListCmd.SetOut(&buf)
_ = evalEmbeddersListCmd.RunE(evalEmbeddersListCmd, nil)
out := buf.String()
// Either ✓ or ✗ must appear for each spec — empty cell would
// mean the LoaderCheck panicked or got skipped.
checkmarks := strings.Count(out, "✓") + strings.Count(out, "✗")
if checkmarks < len(nextGenModelSpecs()) {
t.Errorf("availability column under-populated: %d marks for %d specs", checkmarks, len(nextGenModelSpecs()))
}
}
func TestEvalEmbeddersListCmd_Wired(t *testing.T) {
// The list subcommand must be a child of evalEmbeddersCmd (not
// of evalCmd or somewhere stray). Otherwise `gortex eval
// embedders list` doesn't route.
subs := map[string]bool{}
for _, c := range evalEmbeddersCmd.Commands() {
subs[c.Name()] = true
}
if !subs["list"] {
t.Errorf("evalEmbeddersCmd missing `list` subcommand; have %v", subs)
}
}
func mapKeys(m map[string]bool) []string {
out := make([]string, 0, len(m))
for k := range m {
out = append(out, k)
}
return out
}
// Used only to keep imports tidy when Go complains about a stray
// fmt-related lint while iterating; remove if not needed.
var _ = fmt.Sprintf