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) } }