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  }