listing_nonwindows_test.go 2.4 KB

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