Files
iris-context/tests/commands/zoxide_test.go
T

48 lines
1.3 KiB
Go

package tests
import (
"fmt"
"os"
"path/filepath"
"testing"
"github.com/versenilvis/iris/commands/fs"
)
func TestZoxideGenerator(t *testing.T) {
dataDir := t.TempDir()
project := filepath.Join(dataDir, "project1")
docs := filepath.Join(dataDir, "docs")
iris := filepath.Join(dataDir, "dev", "iris")
missing := filepath.Join(dataDir, "deleted")
for _, path := range []string{project, docs, iris} {
if err := os.MkdirAll(path, 0o755); err != nil {
t.Fatalf("create directory %q: %v", path, err)
}
}
binDir := t.TempDir()
mockZoxide := filepath.Join(binDir, "zoxide")
script := fmt.Sprintf("#!/bin/sh\nprintf '%%s\\n' %q %q %q %q\n", project, docs, iris, missing)
if err := os.WriteFile(mockZoxide, []byte(script), 0o755); err != nil {
t.Fatalf("create mock zoxide: %v", err)
}
t.Setenv("PATH", binDir+string(os.PathListSeparator)+os.Getenv("PATH"))
gen := fs.ZoxideGenerator()
results := gen([]string{"z", ""}, "z ", "")
if len(results) != 3 {
t.Fatalf("suggestion count = %d, want 3: %#v", len(results), results)
}
for _, result := range results {
if result.Cmd == missing {
t.Fatalf("missing directory was suggested: %#v", result)
}
}
results = gen([]string{"z", "iris"}, "z ", "iris")
if len(results) != 1 || results[0].Cmd != iris {
t.Fatalf("fuzzy suggestions = %#v, want %q", results, iris)
}
}