github.com/markusbkk/elvish@v0.0.0-20231204143114-91dc52438621/pkg/edit/listing_nonwindows_test.go (about) 1 //go:build !windows 2 // +build !windows 3 4 package edit 5 6 import ( 7 "os" 8 "path/filepath" 9 "reflect" 10 "sort" 11 "testing" 12 13 "github.com/markusbkk/elvish/pkg/cli/term" 14 "github.com/markusbkk/elvish/pkg/store/storedefs" 15 "github.com/markusbkk/elvish/pkg/testutil" 16 "github.com/markusbkk/elvish/pkg/ui" 17 ) 18 19 func TestLocationAddon(t *testing.T) { 20 f := setup(t, storeOp(func(s storedefs.Store) { 21 s.AddDir("/usr/bin", 1) 22 s.AddDir("/tmp", 1) 23 s.AddDir("/home/elf", 1) 24 })) 25 26 evals(f.Evaler, 27 `set edit:location:pinned = [/opt]`, 28 `set edit:location:hidden = [/tmp]`) 29 f.TTYCtrl.Inject(term.K('L', ui.Ctrl)) 30 31 f.TestTTY(t, 32 "~> \n", 33 " LOCATION ", Styles, 34 "********** ", term.DotHere, "\n", 35 " * /opt \n", Styles, 36 "++++++++++++++++++++++++++++++++++++++++++++++++++", 37 " 10 /home/elf\n", 38 " 10 /usr/bin", 39 ) 40 } 41 42 func TestLocationAddon_Workspace(t *testing.T) { 43 f := setup(t, storeOp(func(s storedefs.Store) { 44 s.AddDir("/usr/bin", 1) 45 s.AddDir("ws/bin", 1) 46 s.AddDir("other-ws/bin", 1) 47 })) 48 49 testutil.ApplyDir( 50 testutil.Dir{ 51 "ws1": testutil.Dir{ 52 "bin": testutil.Dir{}, 53 "tmp": testutil.Dir{}}}) 54 err := os.Chdir("ws1/tmp") 55 if err != nil { 56 t.Skip("chdir:", err) 57 } 58 59 evals(f.Evaler, 60 `set edit:location:workspaces = [&ws=$E:HOME/ws.]`) 61 62 f.TTYCtrl.Inject(term.K('L', ui.Ctrl)) 63 f.TestTTY(t, 64 "~/ws1/tmp> \n", 65 " LOCATION ", Styles, 66 "********** ", term.DotHere, "\n", 67 " 10 ws/bin \n", Styles, 68 "++++++++++++++++++++++++++++++++++++++++++++++++++", 69 " 10 /usr/bin", 70 ) 71 72 f.TTYCtrl.Inject(term.K(ui.Enter)) 73 f.TestTTY(t, "~/ws1/bin> ", term.DotHere) 74 } 75 76 func TestLocation_AddDir(t *testing.T) { 77 f := setup(t) 78 79 testutil.ApplyDir( 80 testutil.Dir{ 81 "bin": testutil.Dir{}, 82 "ws1": testutil.Dir{ 83 "bin": testutil.Dir{}}}) 84 evals(f.Evaler, `set edit:location:workspaces = [&ws=$E:HOME/ws.]`) 85 86 chdir := func(path string) { 87 err := f.Evaler.Chdir(path) 88 if err != nil { 89 t.Skip("chdir:", err) 90 } 91 } 92 chdir("bin") 93 chdir("../ws1/bin") 94 95 entries, err := f.Store.Dirs(map[string]struct{}{}) 96 if err != nil { 97 t.Error("unable to list dir history:", err) 98 } 99 dirs := make([]string, len(entries)) 100 for i, entry := range entries { 101 dirs[i] = entry.Path 102 } 103 104 wantDirs := []string{ 105 filepath.Join(f.Home, "bin"), 106 filepath.Join(f.Home, "ws1", "bin"), 107 filepath.Join("ws", "bin"), 108 } 109 110 sort.Strings(dirs) 111 sort.Strings(wantDirs) 112 if !reflect.DeepEqual(dirs, wantDirs) { 113 t.Errorf("got dirs %v, want %v", dirs, wantDirs) 114 } 115 }