FatalOnError cancels parent context

This commit is contained in:
Quentin McGaw
2020-05-02 13:05:09 +00:00
parent 41168f88cd
commit 8e77842f1e
3 changed files with 18 additions and 15 deletions

13
internal/env/env.go vendored
View File

@@ -2,7 +2,6 @@ package env
import (
"context"
"os"
"github.com/qdm12/golibs/logging"
)
@@ -13,21 +12,21 @@ type Env interface {
}
type env struct {
logger logging.Logger
osExit func(n int)
logger logging.Logger
cancelContext func()
}
func New(logger logging.Logger) Env {
func New(logger logging.Logger, cancelContext context.CancelFunc) Env {
return &env{
logger: logger,
osExit: os.Exit,
logger: logger,
cancelContext: cancelContext,
}
}
func (e *env) FatalOnError(err error) {
if err != nil {
e.logger.Error(err)
e.osExit(1)
e.cancelContext()
}
}

View File

@@ -23,7 +23,7 @@ func Test_FatalOnError(t *testing.T) {
t.Run(name, func(t *testing.T) {
t.Parallel()
var logged string
var exitCode int
var canceled bool
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
logger := mock_logging.NewMockLogger(mockCtrl)
@@ -32,15 +32,17 @@ func Test_FatalOnError(t *testing.T) {
logged = err.Error()
}).Times(1)
}
osExit := func(n int) { exitCode = n }
e := &env{logger, osExit}
e := &env{
logger: logger,
cancelContext: func() { canceled = true },
}
e.FatalOnError(tc.err)
if tc.err != nil {
assert.Equal(t, logged, tc.err.Error())
assert.Equal(t, exitCode, 1)
assert.True(t, canceled)
} else {
assert.Empty(t, logged)
assert.Zero(t, exitCode)
assert.False(t, canceled)
}
})
}