Files
gluetun/internal/env/env_test.go
2020-05-02 13:05:09 +00:00

91 lines
2.2 KiB
Go

package env
import (
"context"
"fmt"
"testing"
"github.com/golang/mock/gomock"
"github.com/qdm12/golibs/logging/mock_logging"
"github.com/stretchr/testify/assert"
)
func Test_FatalOnError(t *testing.T) {
t.Parallel()
tests := map[string]struct {
err error
}{
"nil": {},
"err": {fmt.Errorf("error")},
}
for name, tc := range tests {
tc := tc
t.Run(name, func(t *testing.T) {
t.Parallel()
var logged string
var canceled bool
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
logger := mock_logging.NewMockLogger(mockCtrl)
if tc.err != nil {
logger.EXPECT().Error(tc.err).Do(func(err error) {
logged = err.Error()
}).Times(1)
}
e := &env{
logger: logger,
cancelContext: func() { canceled = true },
}
e.FatalOnError(tc.err)
if tc.err != nil {
assert.Equal(t, logged, tc.err.Error())
assert.True(t, canceled)
} else {
assert.Empty(t, logged)
assert.False(t, canceled)
}
})
}
}
func Test_PrintVersion(t *testing.T) {
t.Parallel()
tests := map[string]struct {
program string
commandVersion string
commandErr error
}{
"no data": {},
"data": {"binu", "2.3-5", nil},
"error": {"binu", "", fmt.Errorf("error")},
}
for name, tc := range tests {
tc := tc
t.Run(name, func(t *testing.T) {
t.Parallel()
var logged string
mockCtrl := gomock.NewController(t)
defer mockCtrl.Finish()
logger := mock_logging.NewMockLogger(mockCtrl)
if tc.commandErr != nil {
logger.EXPECT().Error(tc.commandErr).Do(func(err error) {
logged = err.Error()
}).Times(1)
} else {
logger.EXPECT().Info("%s version: %s", tc.program, tc.commandVersion).
Do(func(format, program, version string) {
logged = fmt.Sprintf(format, program, version)
}).Times(1)
}
e := &env{logger: logger}
commandFn := func(ctx context.Context) (string, error) { return tc.commandVersion, tc.commandErr }
e.PrintVersion(context.Background(), tc.program, commandFn)
if tc.commandErr != nil {
assert.Equal(t, logged, tc.commandErr.Error())
} else {
assert.Equal(t, logged, fmt.Sprintf("%s version: %s", tc.program, tc.commandVersion))
}
})
}
}