code.gitea.io/gitea@v1.19.3/modules/git/command_test.go (about) 1 // Copyright 2022 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package git 5 6 import ( 7 "context" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func TestRunWithContextStd(t *testing.T) { 14 cmd := NewCommand(context.Background(), "--version") 15 stdout, stderr, err := cmd.RunStdString(&RunOpts{}) 16 assert.NoError(t, err) 17 assert.Empty(t, stderr) 18 assert.Contains(t, stdout, "git version") 19 20 cmd = NewCommand(context.Background(), "--no-such-arg") 21 stdout, stderr, err = cmd.RunStdString(&RunOpts{}) 22 if assert.Error(t, err) { 23 assert.Equal(t, stderr, err.Stderr()) 24 assert.Contains(t, err.Stderr(), "unknown option:") 25 assert.Contains(t, err.Error(), "exit status 129 - unknown option:") 26 assert.Empty(t, stdout) 27 } 28 29 cmd = NewCommand(context.Background()) 30 cmd.AddDynamicArguments("-test") 31 assert.ErrorIs(t, cmd.Run(&RunOpts{}), ErrBrokenCommand) 32 33 cmd = NewCommand(context.Background()) 34 cmd.AddDynamicArguments("--test") 35 assert.ErrorIs(t, cmd.Run(&RunOpts{}), ErrBrokenCommand) 36 37 subCmd := "version" 38 cmd = NewCommand(context.Background()).AddDynamicArguments(subCmd) // for test purpose only, the sub-command should never be dynamic for production 39 stdout, stderr, err = cmd.RunStdString(&RunOpts{}) 40 assert.NoError(t, err) 41 assert.Empty(t, stderr) 42 assert.Contains(t, stdout, "git version") 43 } 44 45 func TestGitArgument(t *testing.T) { 46 assert.True(t, isValidArgumentOption("-x")) 47 assert.True(t, isValidArgumentOption("--xx")) 48 assert.False(t, isValidArgumentOption("")) 49 assert.False(t, isValidArgumentOption("x")) 50 51 assert.True(t, isSafeArgumentValue("")) 52 assert.True(t, isSafeArgumentValue("x")) 53 assert.False(t, isSafeArgumentValue("-x")) 54 }