2019-06-19 19:53:37 +03:00
// Copyright 2019 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2019-06-19 19:53:37 +03:00
package git
import (
2019-12-15 12:51:28 +03:00
"context"
2019-06-19 19:53:37 +03:00
"fmt"
"os"
2022-06-10 04:57:49 +03:00
"strings"
2019-06-19 19:53:37 +03:00
"testing"
2021-06-25 19:54:08 +03:00
"code.gitea.io/gitea/modules/log"
2022-06-10 04:57:49 +03:00
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/util"
"github.com/stretchr/testify/assert"
2019-06-19 19:53:37 +03:00
)
2022-06-10 04:57:49 +03:00
func testRun ( m * testing . M ) error {
_ = log . NewLogger ( 1000 , "console" , "console" , ` { "level":"trace","stacktracelevel":"NONE","stderr":true} ` )
2022-07-08 11:09:07 +03:00
gitHomePath , err := os . MkdirTemp ( os . TempDir ( ) , "git-home" )
2022-06-10 04:57:49 +03:00
if err != nil {
return fmt . Errorf ( "unable to create temp dir: %w" , err )
}
2022-07-08 11:09:07 +03:00
defer util . RemoveAll ( gitHomePath )
setting . Git . HomePath = gitHomePath
2022-06-10 04:57:49 +03:00
2022-08-09 06:22:24 +03:00
if err = InitFull ( context . Background ( ) ) ; err != nil {
2022-06-10 04:57:49 +03:00
return fmt . Errorf ( "failed to call Init: %w" , err )
}
exitCode := m . Run ( )
if exitCode != 0 {
return fmt . Errorf ( "run test failed, ExitCode=%d" , exitCode )
}
return nil
2019-06-19 19:53:37 +03:00
}
func TestMain ( m * testing . M ) {
2022-06-10 04:57:49 +03:00
if err := testRun ( m ) ; err != nil {
_ , _ = fmt . Fprintf ( os . Stderr , "Test failed: %v" , err )
os . Exit ( 1 )
}
}
2021-06-25 19:54:08 +03:00
2022-06-10 04:57:49 +03:00
func TestGitConfig ( t * testing . T ) {
gitConfigContains := func ( sub string ) bool {
if b , err := os . ReadFile ( HomeDir ( ) + "/.gitconfig" ) ; err == nil {
return strings . Contains ( string ( b ) , sub )
}
return false
2019-06-19 19:53:37 +03:00
}
2022-06-10 04:57:49 +03:00
assert . False ( t , gitConfigContains ( "key-a" ) )
assert . NoError ( t , configSetNonExist ( "test.key-a" , "val-a" ) )
assert . True ( t , gitConfigContains ( "key-a = val-a" ) )
assert . NoError ( t , configSetNonExist ( "test.key-a" , "val-a-changed" ) )
assert . False ( t , gitConfigContains ( "key-a = val-a-changed" ) )
assert . NoError ( t , configSet ( "test.key-a" , "val-a-changed" ) )
assert . True ( t , gitConfigContains ( "key-a = val-a-changed" ) )
assert . NoError ( t , configAddNonExist ( "test.key-b" , "val-b" ) )
assert . True ( t , gitConfigContains ( "key-b = val-b" ) )
assert . NoError ( t , configAddNonExist ( "test.key-b" , "val-2b" ) )
assert . True ( t , gitConfigContains ( "key-b = val-b" ) )
assert . True ( t , gitConfigContains ( "key-b = val-2b" ) )
assert . NoError ( t , configUnsetAll ( "test.key-b" , "val-b" ) )
assert . False ( t , gitConfigContains ( "key-b = val-b" ) )
assert . True ( t , gitConfigContains ( "key-b = val-2b" ) )
assert . NoError ( t , configUnsetAll ( "test.key-b" , "val-2b" ) )
assert . False ( t , gitConfigContains ( "key-b = val-2b" ) )
2022-06-19 14:56:22 +03:00
assert . NoError ( t , configSet ( "test.key-x" , "*" ) )
assert . True ( t , gitConfigContains ( "key-x = *" ) )
assert . NoError ( t , configSetNonExist ( "test.key-x" , "*" ) )
assert . NoError ( t , configUnsetAll ( "test.key-x" , "*" ) )
assert . False ( t , gitConfigContains ( "key-x = *" ) )
2019-06-19 19:53:37 +03:00
}