Files
go-mocktesting/t_go116_test.go

183 lines
3.4 KiB
Go

//go:build go1.16
// +build go1.16
package mocktesting
import (
"os"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestT_Setenv(t *testing.T) {
type fields struct {
env map[string]string
}
type args struct {
key string
value string
}
tests := []struct {
name string
fields fields
args args
want map[string]string
}{
{
name: "empty key and value",
args: args{},
want: map[string]string{},
},
{
name: "empty key",
args: args{value: "bar"},
want: map[string]string{},
},
{
name: "empty value",
args: args{key: "foo"},
want: map[string]string{"foo": ""},
},
{
name: "key and value",
args: args{key: "foo", value: "bar"},
want: map[string]string{"foo": "bar"},
},
{
name: "add to existing",
fields: fields{env: map[string]string{"hello": "world"}},
args: args{key: "foo", value: "bar"},
want: map[string]string{"hello": "world", "foo": "bar"},
},
{
name: "overwrite existing",
fields: fields{env: map[string]string{"foo": "world"}},
args: args{key: "foo", value: "bar"},
want: map[string]string{"foo": "bar"},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
mt := &T{env: tt.fields.env}
mt.Setenv(tt.args.key, tt.args.value)
assert.Equal(t, tt.want, mt.env)
})
}
}
func TestT_Getenv(t *testing.T) {
type fields struct {
env map[string]string
}
tests := []struct {
name string
fields fields
want map[string]string
}{
{
name: "nil env",
want: map[string]string{},
},
{
name: "empty env",
fields: fields{env: map[string]string{}},
want: map[string]string{},
},
{
name: "env",
fields: fields{
env: map[string]string{
"hello": "world",
"foo": "bar",
},
},
want: map[string]string{
"hello": "world",
"foo": "bar",
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
mt := &T{env: tt.fields.env}
got := mt.Getenv()
assert.Equal(t, tt.want, got)
})
}
}
func TestT_Run_Go116(t *testing.T) {
type fields struct {
name string
abort bool
baseTempdir string
testingT testing.TB
deadline time.Time
timeout bool
}
type args struct {
f func(testing.TB)
}
tests := []struct {
name string
fields fields
args args
want *T
}{
{
name: "set environment variables",
fields: fields{
name: "set_environment_variables",
abort: true,
baseTempdir: os.TempDir(),
deadline: time.Now().Add(10 * time.Minute),
timeout: true,
},
args: args{
f: func(t testing.TB) {
// Type assert to *TB for compatibility with Go 1.16 and
// earlier.
mt := t.(*T)
mt.Setenv("GO_ENV", "test")
mt.Setenv("FOO", "bar")
},
},
want: &T{
name: "set_environment_variables",
abort: true,
baseTempdir: os.TempDir(),
deadline: time.Now().Add(10 * time.Minute),
timeout: true,
env: map[string]string{
"GO_ENV": "test",
"FOO": "bar",
},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
mt := &T{
name: tt.fields.name,
abort: tt.fields.abort,
baseTempdir: tt.fields.baseTempdir,
testingT: tt.fields.testingT,
deadline: tt.fields.deadline,
timeout: tt.fields.timeout,
}
runInGoroutine(func() {
tt.args.f(mt)
})
assertEqualMocktestingT(t, tt.want, mt)
})
}
}