collect_test.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // License: GPLv3 Copyright: 2023, Kovid Goyal, <kovid at kovidgoyal.net>
  2. package diff
  3. import (
  4. "fmt"
  5. "os"
  6. "path/filepath"
  7. "strings"
  8. "testing"
  9. "kitty/tools/utils"
  10. "github.com/google/go-cmp/cmp"
  11. )
  12. var _ = fmt.Print
  13. func TestDiffCollectWalk(t *testing.T) {
  14. tdir := t.TempDir()
  15. j := func(x ...string) string { return filepath.Join(append([]string{tdir}, x...)...) }
  16. _ = os.MkdirAll(j("a", "b"), 0o700)
  17. _ = os.WriteFile(j("a/b/c"), nil, 0o600)
  18. _ = os.WriteFile(j("b"), nil, 0o600)
  19. _ = os.WriteFile(j("d"), nil, 0o600)
  20. _ = os.WriteFile(j("e"), nil, 0o600)
  21. _ = os.WriteFile(j("#d#"), nil, 0o600)
  22. _ = os.WriteFile(j("e~"), nil, 0o600)
  23. _ = os.MkdirAll(j("f"), 0o700)
  24. _ = os.WriteFile(j("f/g"), nil, 0o600)
  25. _ = os.WriteFile(j("h space"), nil, 0o600)
  26. expected_names := utils.NewSetWithItems("d", "e", "f/g", "h space")
  27. expected_pmap := map[string]string{
  28. "d": j("d"),
  29. "e": j("e"),
  30. "f/g": j("f/g"),
  31. "h space": j("h space"),
  32. }
  33. names := utils.NewSet[string](16)
  34. pmap := make(map[string]string, 16)
  35. if err := walk(tdir, []string{"*~", "#*#", "b"}, names, pmap, map[string]string{}); err != nil {
  36. t.Fatal(err)
  37. }
  38. if diff := cmp.Diff(
  39. utils.Sort(expected_names.AsSlice(), strings.Compare),
  40. utils.Sort(names.AsSlice(), strings.Compare),
  41. ); diff != "" {
  42. t.Fatal(diff)
  43. }
  44. if diff := cmp.Diff(expected_pmap, pmap); diff != "" {
  45. t.Fatal(diff)
  46. }
  47. }