...
1 package git
2
3 import (
4 "fmt"
5 "os"
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9 )
10
11 func TestHelperProcess(t *testing.T) {
12 if os.Getenv("GH_WANT_HELPER_PROCESS") != "1" {
13 return
14 }
15 if err := func(args []string) error {
16 if args[len(args)-1] == "error" {
17 return fmt.Errorf("process exited with error")
18 }
19 fmt.Fprintf(os.Stdout, "%v", args)
20 return nil
21 }(os.Args[3:]); err != nil {
22 fmt.Fprint(os.Stderr, err)
23 os.Exit(1)
24 }
25 os.Exit(0)
26 }
27
28 func TestRun(t *testing.T) {
29 stdOut, stdErr, err := run(os.Args[0],
30 []string{"GH_WANT_HELPER_PROCESS=1"},
31 "-test.run=TestHelperProcess", "--", "git", "status")
32 assert.NoError(t, err)
33 assert.Equal(t, "[git status]", stdOut.String())
34 assert.Equal(t, "", stdErr.String())
35 }
36
37 func TestRunError(t *testing.T) {
38 stdOut, stdErr, err := run(os.Args[0],
39 []string{"GH_WANT_HELPER_PROCESS=1"},
40 "-test.run=TestHelperProcess", "--", "git", "status", "error")
41 assert.EqualError(t, err, "failed to run git: process exited with error. error: exit status 1")
42 assert.Equal(t, "", stdOut.String())
43 assert.Equal(t, "process exited with error", stdErr.String())
44 }
45
View as plain text