gitea源码

grep_test.go 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Copyright 2024 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package git
  4. import (
  5. "path/filepath"
  6. "testing"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestGrepSearch(t *testing.T) {
  10. repo, err := OpenRepository(t.Context(), filepath.Join(testReposDir, "language_stats_repo"))
  11. assert.NoError(t, err)
  12. defer repo.Close()
  13. res, err := GrepSearch(t.Context(), repo, "void", GrepOptions{})
  14. assert.NoError(t, err)
  15. assert.Equal(t, []*GrepResult{
  16. {
  17. Filename: "java-hello/main.java",
  18. LineNumbers: []int{3},
  19. LineCodes: []string{" public static void main(String[] args)"},
  20. },
  21. {
  22. Filename: "main.vendor.java",
  23. LineNumbers: []int{3},
  24. LineCodes: []string{" public static void main(String[] args)"},
  25. },
  26. }, res)
  27. res, err = GrepSearch(t.Context(), repo, "void", GrepOptions{PathspecList: []string{":(glob)java-hello/*"}})
  28. assert.NoError(t, err)
  29. assert.Equal(t, []*GrepResult{
  30. {
  31. Filename: "java-hello/main.java",
  32. LineNumbers: []int{3},
  33. LineCodes: []string{" public static void main(String[] args)"},
  34. },
  35. }, res)
  36. res, err = GrepSearch(t.Context(), repo, "void", GrepOptions{PathspecList: []string{":(glob,exclude)java-hello/*"}})
  37. assert.NoError(t, err)
  38. assert.Equal(t, []*GrepResult{
  39. {
  40. Filename: "main.vendor.java",
  41. LineNumbers: []int{3},
  42. LineCodes: []string{" public static void main(String[] args)"},
  43. },
  44. }, res)
  45. res, err = GrepSearch(t.Context(), repo, "void", GrepOptions{MaxResultLimit: 1})
  46. assert.NoError(t, err)
  47. assert.Equal(t, []*GrepResult{
  48. {
  49. Filename: "java-hello/main.java",
  50. LineNumbers: []int{3},
  51. LineCodes: []string{" public static void main(String[] args)"},
  52. },
  53. }, res)
  54. res, err = GrepSearch(t.Context(), repo, "void", GrepOptions{MaxResultLimit: 1, MaxLineLength: 39})
  55. assert.NoError(t, err)
  56. assert.Equal(t, []*GrepResult{
  57. {
  58. Filename: "java-hello/main.java",
  59. LineNumbers: []int{3},
  60. LineCodes: []string{" public static void main(String[] arg"},
  61. },
  62. }, res)
  63. res, err = GrepSearch(t.Context(), repo, "no-such-content", GrepOptions{})
  64. assert.NoError(t, err)
  65. assert.Empty(t, res)
  66. res, err = GrepSearch(t.Context(), &Repository{Path: "no-such-git-repo"}, "no-such-content", GrepOptions{})
  67. assert.Error(t, err)
  68. assert.Empty(t, res)
  69. }