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 }