48 lines
1.3 KiB
Go
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)
|
|
}
|
|
}
|