@@ -23,38 +23,58 @@ func TestMain(m *testing.M) {
2323 defer cleanup ()
2424
2525 setting .Git .HomePath = gitHomePath
26+ os .Exit (m .Run ())
2627}
2728
2829func TestRunWithContextStd (t * testing.T ) {
29- cmd := NewCommand ("--version" )
30- stdout , stderr , err := cmd .RunStdString (t .Context ())
31- assert .NoError (t , err )
32- assert .Empty (t , stderr )
33- assert .Contains (t , stdout , "git version" )
34-
35- cmd = NewCommand ("--no-such-arg" )
36- stdout , stderr , err = cmd .RunStdString (t .Context ())
37- if assert .Error (t , err ) {
38- assert .Equal (t , stderr , err .Stderr ())
39- assert .Contains (t , err .Stderr (), "unknown option:" )
40- assert .Contains (t , err .Error (), "exit status 129 - unknown option:" )
41- assert .Empty (t , stdout )
30+ {
31+ cmd := NewCommand ("--version" )
32+ stdout , stderr , err := cmd .RunStdString (t .Context ())
33+ assert .NoError (t , err )
34+ assert .Empty (t , stderr )
35+ assert .Contains (t , stdout , "git version" )
4236 }
4337
44- cmd = NewCommand ()
45- cmd .AddDynamicArguments ("-test" )
46- assert .ErrorIs (t , cmd .Run (t .Context ()), ErrBrokenCommand )
38+ {
39+ cmd := NewCommand ("ls-tree" , "no-such" )
40+ stdout , stderr , err := cmd .RunStdString (t .Context ())
41+ if assert .Error (t , err ) {
42+ assert .Equal (t , stderr , err .Stderr ())
43+ assert .Equal (t , "fatal: Not a valid object name no-such\n " , err .Stderr ())
44+ assert .Equal (t , "exit status 128 - fatal: Not a valid object name no-such\n " , err .Error ())
45+ assert .Empty (t , stdout )
46+ }
47+ }
48+
49+ {
50+ cmd := NewCommand ("ls-tree" , "no-such" )
51+ stdout , stderr , err := cmd .RunStdBytes (t .Context ())
52+ if assert .Error (t , err ) {
53+ assert .Equal (t , string (stderr ), err .Stderr ())
54+ assert .Equal (t , "fatal: Not a valid object name no-such\n " , err .Stderr ())
55+ assert .Equal (t , "exit status 128 - fatal: Not a valid object name no-such\n " , err .Error ())
56+ assert .Empty (t , stdout )
57+ }
58+ }
4759
48- cmd = NewCommand ()
49- cmd .AddDynamicArguments ("--test" )
50- assert .ErrorIs (t , cmd .Run (t .Context ()), ErrBrokenCommand )
60+ {
61+ cmd := NewCommand ()
62+ cmd .AddDynamicArguments ("-test" )
63+ assert .ErrorIs (t , cmd .Run (t .Context ()), ErrBrokenCommand )
5164
52- subCmd := "version"
53- cmd = NewCommand ().AddDynamicArguments (subCmd ) // for test purpose only, the sub-command should never be dynamic for production
54- stdout , stderr , err = cmd .RunStdString (t .Context ())
55- assert .NoError (t , err )
56- assert .Empty (t , stderr )
57- assert .Contains (t , stdout , "git version" )
65+ cmd = NewCommand ()
66+ cmd .AddDynamicArguments ("--test" )
67+ assert .ErrorIs (t , cmd .Run (t .Context ()), ErrBrokenCommand )
68+ }
69+
70+ {
71+ subCmd := "version"
72+ cmd := NewCommand ().AddDynamicArguments (subCmd ) // for test purpose only, the sub-command should never be dynamic for production
73+ stdout , stderr , err := cmd .RunStdString (t .Context ())
74+ assert .NoError (t , err )
75+ assert .Empty (t , stderr )
76+ assert .Contains (t , stdout , "git version" )
77+ }
5878}
5979
6080func TestGitArgument (t * testing.T ) {
0 commit comments