From eb403a3b1e992400beef25ddb8d2181cb7d26b05 Mon Sep 17 00:00:00 2001 From: vilmibm Date: Fri, 27 Mar 2020 11:35:39 -0500 Subject: [PATCH] more nuanced error typing --- git/git.go | 10 ++++++---- test/helpers.go | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/git/git.go b/git/git.go index 16570a0fa..a4fae4408 100644 --- a/git/git.go +++ b/git/git.go @@ -29,10 +29,12 @@ func CurrentBranch() (string, error) { return firstLine(output), nil } - ce := err.(*run.CmdError) - if ce.Stderr.Len() == 0 { - // Detached head - return "", errors.New("git: not on any branch") + var cmdErr *run.CmdError + if errors.As(err, &cmdErr) { + if cmdErr.Stderr.Len() == 0 { + // Detached head + return "", errors.New("git: not on any branch") + } } // Unknown error diff --git a/test/helpers.go b/test/helpers.go index 390d779c4..556b27157 100644 --- a/test/helpers.go +++ b/test/helpers.go @@ -14,7 +14,7 @@ import ( // OutputStub implements a simple utils.Runnable type OutputStub struct { Out []byte - Error *run.CmdError + Error error } func (s OutputStub) Output() ([]byte, error) { @@ -49,6 +49,7 @@ func (cs *CmdStubber) Stub(desiredOutput string) { } func (cs *CmdStubber) StubError(errText string) { + // TODO support error types beyond CmdError stderrBuff := bytes.NewBufferString(errText) args := []string{"stub"} // TODO make more real? err := errors.New(errText)