code.gitea.io/gitea@v1.19.3/modules/git/git_test.go (about)

     1  // Copyright 2019 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package git
     5  
     6  import (
     7  	"context"
     8  	"fmt"
     9  	"os"
    10  	"strings"
    11  	"testing"
    12  
    13  	"code.gitea.io/gitea/modules/log"
    14  	"code.gitea.io/gitea/modules/setting"
    15  	"code.gitea.io/gitea/modules/util"
    16  
    17  	"github.com/stretchr/testify/assert"
    18  )
    19  
    20  func testRun(m *testing.M) error {
    21  	_ = log.NewLogger(1000, "console", "console", `{"level":"trace","stacktracelevel":"NONE","stderr":true}`)
    22  
    23  	gitHomePath, err := os.MkdirTemp(os.TempDir(), "git-home")
    24  	if err != nil {
    25  		return fmt.Errorf("unable to create temp dir: %w", err)
    26  	}
    27  	defer util.RemoveAll(gitHomePath)
    28  	setting.Git.HomePath = gitHomePath
    29  
    30  	if err = InitFull(context.Background()); err != nil {
    31  		return fmt.Errorf("failed to call Init: %w", err)
    32  	}
    33  
    34  	exitCode := m.Run()
    35  	if exitCode != 0 {
    36  		return fmt.Errorf("run test failed, ExitCode=%d", exitCode)
    37  	}
    38  	return nil
    39  }
    40  
    41  func TestMain(m *testing.M) {
    42  	if err := testRun(m); err != nil {
    43  		_, _ = fmt.Fprintf(os.Stderr, "Test failed: %v", err)
    44  		os.Exit(1)
    45  	}
    46  }
    47  
    48  func TestGitConfig(t *testing.T) {
    49  	gitConfigContains := func(sub string) bool {
    50  		if b, err := os.ReadFile(HomeDir() + "/.gitconfig"); err == nil {
    51  			return strings.Contains(string(b), sub)
    52  		}
    53  		return false
    54  	}
    55  
    56  	assert.False(t, gitConfigContains("key-a"))
    57  
    58  	assert.NoError(t, configSetNonExist("test.key-a", "val-a"))
    59  	assert.True(t, gitConfigContains("key-a = val-a"))
    60  
    61  	assert.NoError(t, configSetNonExist("test.key-a", "val-a-changed"))
    62  	assert.False(t, gitConfigContains("key-a = val-a-changed"))
    63  
    64  	assert.NoError(t, configSet("test.key-a", "val-a-changed"))
    65  	assert.True(t, gitConfigContains("key-a = val-a-changed"))
    66  
    67  	assert.NoError(t, configAddNonExist("test.key-b", "val-b"))
    68  	assert.True(t, gitConfigContains("key-b = val-b"))
    69  
    70  	assert.NoError(t, configAddNonExist("test.key-b", "val-2b"))
    71  	assert.True(t, gitConfigContains("key-b = val-b"))
    72  	assert.True(t, gitConfigContains("key-b = val-2b"))
    73  
    74  	assert.NoError(t, configUnsetAll("test.key-b", "val-b"))
    75  	assert.False(t, gitConfigContains("key-b = val-b"))
    76  	assert.True(t, gitConfigContains("key-b = val-2b"))
    77  
    78  	assert.NoError(t, configUnsetAll("test.key-b", "val-2b"))
    79  	assert.False(t, gitConfigContains("key-b = val-2b"))
    80  
    81  	assert.NoError(t, configSet("test.key-x", "*"))
    82  	assert.True(t, gitConfigContains("key-x = *"))
    83  	assert.NoError(t, configSetNonExist("test.key-x", "*"))
    84  	assert.NoError(t, configUnsetAll("test.key-x", "*"))
    85  	assert.False(t, gitConfigContains("key-x = *"))
    86  }