code.gitea.io/gitea@v1.22.3/modules/git/grep_test.go (about) 1 // Copyright 2024 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package git 5 6 import ( 7 "context" 8 "path/filepath" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestGrepSearch(t *testing.T) { 15 repo, err := openRepositoryWithDefaultContext(filepath.Join(testReposDir, "language_stats_repo")) 16 assert.NoError(t, err) 17 defer repo.Close() 18 19 res, err := GrepSearch(context.Background(), repo, "void", GrepOptions{}) 20 assert.NoError(t, err) 21 assert.Equal(t, []*GrepResult{ 22 { 23 Filename: "java-hello/main.java", 24 LineNumbers: []int{3}, 25 LineCodes: []string{" public static void main(String[] args)"}, 26 }, 27 { 28 Filename: "main.vendor.java", 29 LineNumbers: []int{3}, 30 LineCodes: []string{" public static void main(String[] args)"}, 31 }, 32 }, res) 33 34 res, err = GrepSearch(context.Background(), repo, "void", GrepOptions{PathspecList: []string{":(glob)java-hello/*"}}) 35 assert.NoError(t, err) 36 assert.Equal(t, []*GrepResult{ 37 { 38 Filename: "java-hello/main.java", 39 LineNumbers: []int{3}, 40 LineCodes: []string{" public static void main(String[] args)"}, 41 }, 42 }, res) 43 44 res, err = GrepSearch(context.Background(), repo, "void", GrepOptions{PathspecList: []string{":(glob,exclude)java-hello/*"}}) 45 assert.NoError(t, err) 46 assert.Equal(t, []*GrepResult{ 47 { 48 Filename: "main.vendor.java", 49 LineNumbers: []int{3}, 50 LineCodes: []string{" public static void main(String[] args)"}, 51 }, 52 }, res) 53 54 res, err = GrepSearch(context.Background(), repo, "void", GrepOptions{MaxResultLimit: 1}) 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[] args)"}, 61 }, 62 }, res) 63 64 res, err = GrepSearch(context.Background(), repo, "void", GrepOptions{MaxResultLimit: 1, MaxLineLength: 39}) 65 assert.NoError(t, err) 66 assert.Equal(t, []*GrepResult{ 67 { 68 Filename: "java-hello/main.java", 69 LineNumbers: []int{3}, 70 LineCodes: []string{" public static void main(String[] arg"}, 71 }, 72 }, res) 73 74 res, err = GrepSearch(context.Background(), repo, "no-such-content", GrepOptions{}) 75 assert.NoError(t, err) 76 assert.Len(t, res, 0) 77 78 res, err = GrepSearch(context.Background(), &Repository{Path: "no-such-git-repo"}, "no-such-content", GrepOptions{}) 79 assert.Error(t, err) 80 assert.Len(t, res, 0) 81 }