github.com/chelnak/go-gh@v0.0.2/gh_test.go (about)

     1  package gh
     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", "--", "gh", "issue", "list")
    32  	assert.NoError(t, err)
    33  	assert.Equal(t, "[gh issue list]", 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", "--", "gh", "issue", "list", "error")
    41  	assert.EqualError(t, err, "failed to run gh: 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  }