make lint: include unit tests

Include the unit tests (i.e., _test.go files) for linting to make the
tests more robust and enforce the linters' coding styles etc.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
This commit is contained in:
Valentin Rothberg
2020-01-14 09:53:02 +01:00
parent a102869746
commit cf1f3191d2
14 changed files with 170 additions and 121 deletions

View File

@ -151,7 +151,7 @@ endif
lint: golangci-lint lint: golangci-lint
golangci-lint: .gopathok varlink_generate .install.golangci-lint golangci-lint: .gopathok varlink_generate .install.golangci-lint
$(GOBIN)/golangci-lint run --tests=false $(GOBIN)/golangci-lint run
gofmt: ## Verify the source code gofmt gofmt: ## Verify the source code gofmt
find . -name '*.go' ! -path './vendor/*' -exec gofmt -s -w {} \+ find . -name '*.go' ! -path './vendor/*' -exec gofmt -s -w {} \+

View File

@ -1,15 +0,0 @@
package main
import (
"os/user"
"testing"
)
func skipTestIfNotRoot(t *testing.T) {
u, err := user.Current()
if err != nil {
t.Skip("Could not determine user. Running without root may cause tests to fail")
} else if u.Uid != "0" {
t.Skip("tests will fail unless run as root")
}
}

View File

@ -92,14 +92,15 @@ func TestReadRemoteConfig(t *testing.T) {
{"nouser", args{reader: strings.NewReader(noUser)}, makeNoUserResult(), false}, {"nouser", args{reader: strings.NewReader(noUser)}, makeNoUserResult(), false},
} }
for _, tt := range tests { for _, tt := range tests {
test := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
got, err := ReadRemoteConfig(tt.args.reader) got, err := ReadRemoteConfig(test.args.reader)
if (err != nil) != tt.wantErr { if (err != nil) != test.wantErr {
t.Errorf("ReadRemoteConfig() error = %v, wantErr %v", err, tt.wantErr) t.Errorf("ReadRemoteConfig() error = %v, wantErr %v", err, test.wantErr)
return return
} }
if !reflect.DeepEqual(got, tt.want) { if !reflect.DeepEqual(got, test.want) {
t.Errorf("ReadRemoteConfig() = %v, want %v", got, tt.want) t.Errorf("ReadRemoteConfig() = %v, want %v", got, test.want)
} }
}) })
} }
@ -150,17 +151,18 @@ func TestRemoteConfig_GetDefault(t *testing.T) {
{"single", fields{Connections: none}, nil, true}, {"single", fields{Connections: none}, nil, true},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { test := tt
t.Run(test.name, func(t *testing.T) {
r := &RemoteConfig{ r := &RemoteConfig{
Connections: tt.fields.Connections, Connections: test.fields.Connections,
} }
got, err := r.GetDefault() got, err := r.GetDefault()
if (err != nil) != tt.wantErr { if (err != nil) != test.wantErr {
t.Errorf("RemoteConfig.GetDefault() error = %v, wantErr %v", err, tt.wantErr) t.Errorf("RemoteConfig.GetDefault() error = %v, wantErr %v", err, test.wantErr)
return return
} }
if !reflect.DeepEqual(got, tt.want) { if !reflect.DeepEqual(got, test.want) {
t.Errorf("RemoteConfig.GetDefault() = %v, want %v", got, tt.want) t.Errorf("RemoteConfig.GetDefault() = %v, want %v", got, test.want)
} }
}) })
} }
@ -192,17 +194,18 @@ func TestRemoteConfig_GetRemoteConnection(t *testing.T) {
{"none", fields{Connections: blank}, args{name: "foobar"}, nil, true}, {"none", fields{Connections: blank}, args{name: "foobar"}, nil, true},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { test := tt
t.Run(test.name, func(t *testing.T) {
r := &RemoteConfig{ r := &RemoteConfig{
Connections: tt.fields.Connections, Connections: test.fields.Connections,
} }
got, err := r.GetRemoteConnection(tt.args.name) got, err := r.GetRemoteConnection(test.args.name)
if (err != nil) != tt.wantErr { if (err != nil) != test.wantErr {
t.Errorf("RemoteConfig.GetRemoteConnection() error = %v, wantErr %v", err, tt.wantErr) t.Errorf("RemoteConfig.GetRemoteConnection() error = %v, wantErr %v", err, test.wantErr)
return return
} }
if !reflect.DeepEqual(got, tt.want) { if !reflect.DeepEqual(got, test.want) {
t.Errorf("RemoteConfig.GetRemoteConnection() = %v, want %v", got, tt.want) t.Errorf("RemoteConfig.GetRemoteConnection() = %v, want %v", got, test.want)
} }
}) })
} }

View File

@ -61,7 +61,8 @@ func TestPostDeleteHooks(t *testing.T) {
} }
stateRegexp := `{"ociVersion":"1\.0\.1-dev","id":"123abc","status":"stopped","bundle":"` + strings.TrimSuffix(os.TempDir(), "/") + `/libpod_test_[0-9]*","annotations":{"a":"b"}}` stateRegexp := `{"ociVersion":"1\.0\.1-dev","id":"123abc","status":"stopped","bundle":"` + strings.TrimSuffix(os.TempDir(), "/") + `/libpod_test_[0-9]*","annotations":{"a":"b"}}`
for _, path := range []string{statePath, copyPath} { for _, p := range []string{statePath, copyPath} {
path := p
t.Run(path, func(t *testing.T) { t.Run(path, func(t *testing.T) {
content, err := ioutil.ReadFile(path) content, err := ioutil.ReadFile(path)
if err != nil { if err != nil {

View File

@ -3,7 +3,6 @@ package image
import ( import (
"context" "context"
"fmt" "fmt"
"io"
"io/ioutil" "io/ioutil"
"os" "os"
"testing" "testing"
@ -91,8 +90,7 @@ func TestImage_NewFromLocal(t *testing.T) {
RunRoot: workdir, RunRoot: workdir,
GraphRoot: workdir, GraphRoot: workdir,
} }
var writer io.Writer writer := os.Stdout
writer = os.Stdout
// Need images to be present for this test // Need images to be present for this test
ir, err := NewImageRuntimeFromOptions(so) ir, err := NewImageRuntimeFromOptions(so)
@ -108,7 +106,7 @@ func TestImage_NewFromLocal(t *testing.T) {
for _, image := range tm { for _, image := range tm {
// tag our images // tag our images
image.img.TagImage(image.taggedName) err = image.img.TagImage(image.taggedName)
assert.NoError(t, err) assert.NoError(t, err)
for _, name := range image.names { for _, name := range image.names {
newImage, err := ir.NewFromLocal(name) newImage, err := ir.NewFromLocal(name)
@ -142,8 +140,7 @@ func TestImage_New(t *testing.T) {
// Build the list of pull names // Build the list of pull names
names = append(names, bbNames...) names = append(names, bbNames...)
names = append(names, fedoraNames...) names = append(names, fedoraNames...)
var writer io.Writer writer := os.Stdout
writer = os.Stdout
// Iterate over the names and delete the image // Iterate over the names and delete the image
// after the pull // after the pull
@ -213,7 +210,7 @@ func TestImage_RepoDigests(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
for _, test := range []struct { for _, tt := range []struct {
name string name string
names []string names []string
expected []string expected []string
@ -234,6 +231,7 @@ func TestImage_RepoDigests(t *testing.T) {
expected: []string{"docker.io/library/busybox@sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc"}, expected: []string{"docker.io/library/busybox@sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc"},
}, },
} { } {
test := tt
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
image := &Image{ image := &Image{
image: &storage.Image{ image: &storage.Image{

View File

@ -17,10 +17,10 @@ func TestCreateAndDeallocate(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
defer os.RemoveAll(d) defer os.RemoveAll(d)
l, err := OpenFileLock(filepath.Join(d, "locks")) _, err = OpenFileLock(filepath.Join(d, "locks"))
assert.Error(t, err) assert.Error(t, err)
l, err = CreateFileLock(filepath.Join(d, "locks")) l, err := CreateFileLock(filepath.Join(d, "locks"))
assert.NoError(t, err) assert.NoError(t, err)
lock, err := l.AllocateLock() lock, err := l.AllocateLock()

View File

@ -350,7 +350,8 @@ func TestAddCtrSameNamespaceSucceeds(t *testing.T) {
testCtr.config.Namespace = "test1" testCtr.config.Namespace = "test1"
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
@ -369,12 +370,14 @@ func TestAddCtrDifferentNamespaceFails(t *testing.T) {
testCtr.config.Namespace = "test1" testCtr.config.Namespace = "test1"
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.Error(t, err) assert.Error(t, err)
state.SetNamespace("") err = state.SetNamespace("")
assert.NoError(t, err)
ctrs, err := state.AllContainers() ctrs, err := state.AllContainers()
assert.NoError(t, err) assert.NoError(t, err)
@ -406,7 +409,8 @@ func TestGetContainerInDifferentNamespaceFails(t *testing.T) {
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
_, err = state.Container(testCtr.ID()) _, err = state.Container(testCtr.ID())
assert.Error(t, err) assert.Error(t, err)
@ -423,7 +427,8 @@ func TestGetContainerInSameNamespaceSucceeds(t *testing.T) {
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
ctr, err := state.Container(testCtr.ID()) ctr, err := state.Container(testCtr.ID())
assert.NoError(t, err) assert.NoError(t, err)
@ -586,7 +591,8 @@ func TestLookupCtrInSameNamespaceSucceeds(t *testing.T) {
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
ctr, err := state.LookupContainer(testCtr.ID()) ctr, err := state.LookupContainer(testCtr.ID())
assert.NoError(t, err) assert.NoError(t, err)
@ -608,7 +614,8 @@ func TestLookupCtrInDifferentNamespaceFails(t *testing.T) {
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
_, err = state.LookupContainer(testCtr.ID()) _, err = state.LookupContainer(testCtr.ID())
assert.Error(t, err) assert.Error(t, err)
@ -633,7 +640,8 @@ func TestLookupContainerMatchInDifferentNamespaceSucceeds(t *testing.T) {
err = state.AddContainer(testCtr2) err = state.AddContainer(testCtr2)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
ctr, err := state.LookupContainer("000") ctr, err := state.LookupContainer("000")
assert.NoError(t, err) assert.NoError(t, err)
@ -698,7 +706,8 @@ func TestHasContainerSameNamespaceIsTrue(t *testing.T) {
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
exists, err := state.HasContainer(testCtr.ID()) exists, err := state.HasContainer(testCtr.ID())
assert.NoError(t, err) assert.NoError(t, err)
@ -716,7 +725,8 @@ func TestHasContainerDifferentNamespaceIsFalse(t *testing.T) {
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
exists, err := state.HasContainer(testCtr.ID()) exists, err := state.HasContainer(testCtr.ID())
assert.NoError(t, err) assert.NoError(t, err)
@ -759,7 +769,8 @@ func TestSaveAndUpdateContainerSameNamespaceSucceeds(t *testing.T) {
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
retrievedCtr, err := state.Container(testCtr.ID()) retrievedCtr, err := state.Container(testCtr.ID())
assert.NoError(t, err) assert.NoError(t, err)
@ -806,7 +817,8 @@ func TestUpdateContainerNotInNamespaceReturnsError(t *testing.T) {
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
err = state.UpdateContainer(testCtr) err = state.UpdateContainer(testCtr)
assert.Error(t, err) assert.Error(t, err)
@ -841,7 +853,8 @@ func TestSaveContainerNotInNamespaceReturnsError(t *testing.T) {
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
err = state.SaveContainer(testCtr) err = state.SaveContainer(testCtr)
assert.Error(t, err) assert.Error(t, err)
@ -894,12 +907,14 @@ func TestRemoveContainerNotInNamespaceFails(t *testing.T) {
assert.NoError(t, err) assert.NoError(t, err)
assert.Equal(t, 1, len(ctrs)) assert.Equal(t, 1, len(ctrs))
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
err = state.RemoveContainer(testCtr) err = state.RemoveContainer(testCtr)
assert.Error(t, err) assert.Error(t, err)
state.SetNamespace("") err = state.SetNamespace("")
assert.NoError(t, err)
ctrs2, err := state.AllContainers() ctrs2, err := state.AllContainers()
assert.NoError(t, err) assert.NoError(t, err)
@ -960,7 +975,8 @@ func TestGetAllContainersNoContainerInNamespace(t *testing.T) {
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
ctrs, err := state.AllContainers() ctrs, err := state.AllContainers()
assert.NoError(t, err) assert.NoError(t, err)
@ -984,7 +1000,8 @@ func TestGetContainerOneContainerInNamespace(t *testing.T) {
err = state.AddContainer(testCtr2) err = state.AddContainer(testCtr2)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
ctrs, err := state.AllContainers() ctrs, err := state.AllContainers()
assert.NoError(t, err) assert.NoError(t, err)
@ -1020,7 +1037,8 @@ func TestContainerInUseCtrNotInNamespace(t *testing.T) {
err = state.AddContainer(testCtr) err = state.AddContainer(testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
_, err = state.ContainerInUse(testCtr) _, err = state.ContainerInUse(testCtr)
assert.Error(t, err) assert.Error(t, err)
@ -1497,7 +1515,8 @@ func TestGetPodInNamespaceSucceeds(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
statePod, err := state.Pod(testPod.ID()) statePod, err := state.Pod(testPod.ID())
assert.NoError(t, err) assert.NoError(t, err)
@ -1516,7 +1535,8 @@ func TestGetPodPodNotInNamespaceFails(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
_, err = state.Pod(testPod.ID()) _, err = state.Pod(testPod.ID())
assert.Error(t, err) assert.Error(t, err)
@ -1637,7 +1657,8 @@ func TestLookupPodInSameNamespaceSucceeds(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
statePod, err := state.LookupPod(testPod.ID()) statePod, err := state.LookupPod(testPod.ID())
assert.NoError(t, err) assert.NoError(t, err)
@ -1656,7 +1677,8 @@ func TestLookupPodInDifferentNamespaceFails(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
_, err = state.LookupPod(testPod.ID()) _, err = state.LookupPod(testPod.ID())
assert.Error(t, err) assert.Error(t, err)
@ -1681,7 +1703,8 @@ func TestLookupPodOneInDifferentNamespaceFindsRightPod(t *testing.T) {
err = state.AddPod(testPod2) err = state.AddPod(testPod2)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
pod, err := state.LookupPod(strings.Repeat("1", 5)) pod, err := state.LookupPod(strings.Repeat("1", 5))
assert.NoError(t, err) assert.NoError(t, err)
@ -1757,7 +1780,8 @@ func TestHasPodSameNamespaceSucceeds(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
exist, err := state.HasPod(testPod.ID()) exist, err := state.HasPod(testPod.ID())
assert.NoError(t, err) assert.NoError(t, err)
@ -1775,7 +1799,8 @@ func TestHasPodDifferentNamespaceFails(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
exist, err := state.HasPod(testPod.ID()) exist, err := state.HasPod(testPod.ID())
assert.NoError(t, err) assert.NoError(t, err)
@ -1913,7 +1938,8 @@ func TestAddPodSameNamespaceSucceeds(t *testing.T) {
testPod.config.Namespace = "test1" testPod.config.Namespace = "test1"
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
@ -1933,12 +1959,14 @@ func TestAddPodDifferentNamespaceFails(t *testing.T) {
testPod.config.Namespace = "test1" testPod.config.Namespace = "test1"
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.Error(t, err) assert.Error(t, err)
state.SetNamespace("") err = state.SetNamespace("")
assert.NoError(t, err)
allPods, err := state.AllPods() allPods, err := state.AllPods()
assert.NoError(t, err) assert.NoError(t, err)
@ -2067,12 +2095,14 @@ func TestRemovePodNotInNamespaceFails(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
err = state.RemovePod(testPod) err = state.RemovePod(testPod)
assert.Error(t, err) assert.Error(t, err)
state.SetNamespace("") err = state.SetNamespace("")
assert.NoError(t, err)
allPods, err := state.AllPods() allPods, err := state.AllPods()
assert.NoError(t, err) assert.NoError(t, err)
@ -2152,7 +2182,8 @@ func TestAllPodsPodInDifferentNamespaces(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
allPods, err := state.AllPods() allPods, err := state.AllPods()
assert.NoError(t, err) assert.NoError(t, err)
@ -2178,7 +2209,8 @@ func TestAllPodsOnePodInDifferentNamespace(t *testing.T) {
err = state.AddPod(testPod2) err = state.AddPod(testPod2)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
allPods, err := state.AllPods() allPods, err := state.AllPods()
assert.NoError(t, err) assert.NoError(t, err)
@ -2274,7 +2306,8 @@ func TestPodHasContainerPodNotInNamespaceFails(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
_, err = state.PodHasContainer(testPod, strings.Repeat("2", 32)) _, err = state.PodHasContainer(testPod, strings.Repeat("2", 32))
assert.Error(t, err) assert.Error(t, err)
@ -2393,7 +2426,8 @@ func TestPodContainerByIDPodNotInNamespace(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
_, err = state.PodContainersByID(testPod) _, err = state.PodContainersByID(testPod)
assert.Error(t, err) assert.Error(t, err)
@ -2513,7 +2547,8 @@ func TestPodContainersPodNotInNamespace(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
_, err = state.PodContainers(testPod) _, err = state.PodContainers(testPod)
assert.Error(t, err) assert.Error(t, err)
@ -2686,7 +2721,8 @@ func TestRemoveContainersNotInNamespace(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
err = state.RemovePodContainers(testPod) err = state.RemovePodContainers(testPod)
assert.Error(t, err) assert.Error(t, err)
@ -3229,7 +3265,8 @@ func TestAddCtrToPodSameNamespaceSucceeds(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
err = state.AddContainerToPod(testPod, testCtr) err = state.AddContainerToPod(testPod, testCtr)
assert.NoError(t, err) assert.NoError(t, err)
@ -3253,15 +3290,17 @@ func TestAddCtrToPodDifferentNamespaceFails(t *testing.T) {
testPod.config.Namespace = "test1" testPod.config.Namespace = "test1"
testCtr.config.Pod = testPod.ID() testCtr.config.Pod = testPod.ID()
state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
err = state.AddContainerToPod(testPod, testCtr) err = state.AddContainerToPod(testPod, testCtr)
assert.Error(t, err) assert.Error(t, err)
state.SetNamespace("") err = state.SetNamespace("")
assert.NoError(t, err)
ctrs, err := state.AllContainers() ctrs, err := state.AllContainers()
assert.NoError(t, err) assert.NoError(t, err)
@ -3461,7 +3500,8 @@ func TestRemoveContainerFromPodSameNamespaceSucceeds(t *testing.T) {
err = state.AddContainerToPod(testPod, testCtr) err = state.AddContainerToPod(testPod, testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
err = state.RemoveContainerFromPod(testPod, testCtr) err = state.RemoveContainerFromPod(testPod, testCtr)
assert.NoError(t, err) assert.NoError(t, err)
@ -3495,12 +3535,14 @@ func TestRemoveContainerFromPodDifferentNamespaceFails(t *testing.T) {
err = state.AddContainerToPod(testPod, testCtr) err = state.AddContainerToPod(testPod, testCtr)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
err = state.RemoveContainerFromPod(testPod, testCtr) err = state.RemoveContainerFromPod(testPod, testCtr)
assert.Error(t, err) assert.Error(t, err)
state.SetNamespace("") err = state.SetNamespace("")
assert.NoError(t, err)
ctrs, err := state.PodContainers(testPod) ctrs, err := state.PodContainers(testPod)
assert.NoError(t, err) assert.NoError(t, err)
@ -3539,7 +3581,8 @@ func TestUpdatePodNotInNamespaceFails(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
err = state.UpdatePod(testPod) err = state.UpdatePod(testPod)
assert.Error(t, err) assert.Error(t, err)
@ -3573,7 +3616,8 @@ func TestSavePodNotInNamespaceFails(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test2") err = state.SetNamespace("test2")
assert.NoError(t, err)
err = state.SavePod(testPod) err = state.SavePod(testPod)
assert.Error(t, err) assert.Error(t, err)
@ -3615,7 +3659,8 @@ func TestSaveAndUpdatePodSameNamespace(t *testing.T) {
err = state.AddPod(testPod) err = state.AddPod(testPod)
assert.NoError(t, err) assert.NoError(t, err)
state.SetNamespace("test1") err = state.SetNamespace("test1")
assert.NoError(t, err)
statePod, err := state.Pod(testPod.ID()) statePod, err := state.Pod(testPod.ID())
assert.NoError(t, err) assert.NoError(t, err)

View File

@ -134,7 +134,7 @@ func TestDefaultContent(t *testing.T) {
if _, err := os.Stat(aapath); err != nil { if _, err := os.Stat(aapath); err != nil {
t.Skip("AppArmor isn't available in this environment") t.Skip("AppArmor isn't available in this environment")
} }
if err := DefaultContent(profile); err != nil { if _, err := DefaultContent(profile); err != nil {
t.Fatalf("Couldn't retrieve default AppArmor profile content '%s': %v", profile, err) t.Fatalf("Couldn't retrieve default AppArmor profile content '%s': %v", profile, err)
} }
} }

View File

@ -10,7 +10,8 @@ import (
func TestNoMatch(t *testing.T) { func TestNoMatch(t *testing.T) {
config := &rspec.Spec{} config := &rspec.Spec{}
for _, or := range []bool{true, false} { for _, o := range []bool{true, false} {
or := o
t.Run(fmt.Sprintf("or %t", or), func(t *testing.T) { t.Run(fmt.Sprintf("or %t", or), func(t *testing.T) {
when := When{Or: or} when := When{Or: or}
match, err := when.Match(config, map[string]string{}, false) match, err := when.Match(config, map[string]string{}, false)
@ -27,9 +28,12 @@ func TestAlways(t *testing.T) {
processStruct := &rspec.Process{ processStruct := &rspec.Process{
Args: []string{"/bin/sh", "a", "b"}, Args: []string{"/bin/sh", "a", "b"},
} }
for _, always := range []bool{true, false} { for _, a := range []bool{true, false} {
for _, or := range []bool{true, false} { always := a
for _, process := range []*rspec.Process{processStruct, nil} { for _, o := range []bool{true, false} {
or := o
for _, p := range []*rspec.Process{processStruct, nil} {
process := p
t.Run(fmt.Sprintf("always %t, or %t, has process %t", always, or, process != nil), func(t *testing.T) { t.Run(fmt.Sprintf("always %t, or %t, has process %t", always, or, process != nil), func(t *testing.T) {
config.Process = process config.Process = process
when := When{Always: &always, Or: or} when := When{Always: &always, Or: or}
@ -48,7 +52,8 @@ func TestHasBindMountsAnd(t *testing.T) {
hasBindMounts := true hasBindMounts := true
when := When{HasBindMounts: &hasBindMounts} when := When{HasBindMounts: &hasBindMounts}
config := &rspec.Spec{} config := &rspec.Spec{}
for _, containerHasBindMounts := range []bool{false, true} { for _, b := range []bool{false, true} {
containerHasBindMounts := b
t.Run(fmt.Sprintf("%t", containerHasBindMounts), func(t *testing.T) { t.Run(fmt.Sprintf("%t", containerHasBindMounts), func(t *testing.T) {
match, err := when.Match(config, map[string]string{}, containerHasBindMounts) match, err := when.Match(config, map[string]string{}, containerHasBindMounts)
if err != nil { if err != nil {
@ -63,7 +68,8 @@ func TestHasBindMountsOr(t *testing.T) {
hasBindMounts := true hasBindMounts := true
when := When{HasBindMounts: &hasBindMounts, Or: true} when := When{HasBindMounts: &hasBindMounts, Or: true}
config := &rspec.Spec{} config := &rspec.Spec{}
for _, containerHasBindMounts := range []bool{false, true} { for _, b := range []bool{false, true} {
containerHasBindMounts := b
t.Run(fmt.Sprintf("%t", containerHasBindMounts), func(t *testing.T) { t.Run(fmt.Sprintf("%t", containerHasBindMounts), func(t *testing.T) {
match, err := when.Match(config, map[string]string{}, containerHasBindMounts) match, err := when.Match(config, map[string]string{}, containerHasBindMounts)
if err != nil { if err != nil {
@ -82,7 +88,7 @@ func TestAnnotations(t *testing.T) {
}, },
} }
config := &rspec.Spec{} config := &rspec.Spec{}
for _, test := range []struct { for _, tt := range []struct {
name string name string
annotations map[string]string annotations map[string]string
or bool or bool
@ -131,6 +137,7 @@ func TestAnnotations(t *testing.T) {
match: false, match: false,
}, },
} { } {
test := tt
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
when.Or = test.or when.Or = test.or
match, err := when.Match(config, test.annotations, false) match, err := when.Match(config, test.annotations, false)
@ -149,7 +156,7 @@ func TestCommands(t *testing.T) {
}, },
} }
config := &rspec.Spec{} config := &rspec.Spec{}
for _, test := range []struct { for _, tt := range []struct {
name string name string
process *rspec.Process process *rspec.Process
match bool match bool
@ -173,6 +180,7 @@ func TestCommands(t *testing.T) {
match: false, match: false,
}, },
} { } {
test := tt
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
config.Process = test.process config.Process = test.process
match, err := when.Match(config, map[string]string{}, false) match, err := when.Match(config, map[string]string{}, false)
@ -209,7 +217,7 @@ func TestHasBindMountsAndCommands(t *testing.T) {
}, },
} }
config := &rspec.Spec{Process: &rspec.Process{}} config := &rspec.Spec{Process: &rspec.Process{}}
for _, test := range []struct { for _, tt := range []struct {
name string name string
command string command string
hasBindMounts bool hasBindMounts bool
@ -273,6 +281,7 @@ func TestHasBindMountsAndCommands(t *testing.T) {
match: false, match: false,
}, },
} { } {
test := tt
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
config.Process.Args = []string{test.command} config.Process.Args = []string{test.command}
when.Or = test.or when.Or = test.or
@ -287,7 +296,7 @@ func TestHasBindMountsAndCommands(t *testing.T) {
func TestInvalidRegexp(t *testing.T) { func TestInvalidRegexp(t *testing.T) {
config := &rspec.Spec{Process: &rspec.Process{Args: []string{"/bin/sh"}}} config := &rspec.Spec{Process: &rspec.Process{Args: []string{"/bin/sh"}}}
for _, test := range []struct { for _, tt := range []struct {
name string name string
when When when When
expected string expected string
@ -308,6 +317,7 @@ func TestInvalidRegexp(t *testing.T) {
expected: "^command: error parsing regexp: .*", expected: "^command: error parsing regexp: .*",
}, },
} { } {
test := tt
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
_, err := test.when.Match(config, map[string]string{"a": "b"}, false) _, err := test.when.Match(config, map[string]string{"a": "b"}, false)
if err == nil { if err == nil {

View File

@ -94,7 +94,7 @@ func TestRunEnvironment(t *testing.T) {
Path: path, Path: path,
Args: []string{"sh", "-c", "env"}, Args: []string{"sh", "-c", "env"},
} }
for _, test := range []struct { for _, tt := range []struct {
name string name string
env []string env []string
expected map[string]string expected map[string]string
@ -120,6 +120,7 @@ func TestRunEnvironment(t *testing.T) {
}, },
}, },
} { } {
test := tt
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
var stderr, stdout bytes.Buffer var stderr, stdout bytes.Buffer
hook.Env = test.env hook.Env = test.env
@ -147,7 +148,7 @@ func TestRunCancel(t *testing.T) {
Args: []string{"sh", "-c", "echo waiting; sleep 2; echo done"}, Args: []string{"sh", "-c", "echo waiting; sleep 2; echo done"},
} }
one := 1 one := 1
for _, test := range []struct { for _, tt := range []struct {
name string name string
contextTimeout time.Duration contextTimeout time.Duration
hookTimeout *int hookTimeout *int
@ -174,6 +175,7 @@ func TestRunCancel(t *testing.T) {
expectedRunError: context.DeadlineExceeded, expectedRunError: context.DeadlineExceeded,
}, },
} { } {
test := tt
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
ctx := context.Background() ctx := context.Background()
var stderr, stdout bytes.Buffer var stderr, stdout bytes.Buffer

View File

@ -25,9 +25,9 @@ func pointerFileMode(value os.FileMode) *os.FileMode {
} }
func TestRuntimeConfigFilter(t *testing.T) { func TestRuntimeConfigFilter(t *testing.T) {
unexpectedEndOfJSONInput := json.Unmarshal([]byte("{\n"), nil) unexpectedEndOfJSONInput := json.Unmarshal([]byte("{\n"), nil) //nolint
for _, test := range []struct { for _, tt := range []struct {
name string name string
contextTimeout time.Duration contextTimeout time.Duration
hooks []spec.Hook hooks []spec.Hook
@ -244,6 +244,7 @@ func TestRuntimeConfigFilter(t *testing.T) {
expectedRunError: unexpectedEndOfJSONInput, expectedRunError: unexpectedEndOfJSONInput,
}, },
} { } {
test := tt
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
ctx := context.Background() ctx := context.Background()
if test.contextTimeout > 0 { if test.contextTimeout > 0 {

View File

@ -25,9 +25,10 @@ func Test_networkIntersect(t *testing.T) {
{"Two 24s", args{n1: parseCIDR("192.168.1.0/24"), n2: parseCIDR("192.168.2.0/24")}, false}, {"Two 24s", args{n1: parseCIDR("192.168.1.0/24"), n2: parseCIDR("192.168.2.0/24")}, false},
} }
for _, tt := range tests { for _, tt := range tests {
test := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
if got := networkIntersect(tt.args.n1, tt.args.n2); got != tt.want { if got := networkIntersect(test.args.n1, test.args.n2); got != test.want {
t.Errorf("networkIntersect() = %v, want %v", got, tt.want) t.Errorf("networkIntersect() = %v, want %v", got, test.want)
} }
}) })
} }

View File

@ -20,14 +20,15 @@ func TestNextSubnet(t *testing.T) {
{"class c", args{subnet: parseCIDR("192.168.1.0/24")}, parseCIDR("192.168.2.0/24"), false}, {"class c", args{subnet: parseCIDR("192.168.1.0/24")}, parseCIDR("192.168.2.0/24"), false},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { test := tt
got, err := NextSubnet(tt.args.subnet) t.Run(test.name, func(t *testing.T) {
if (err != nil) != tt.wantErr { got, err := NextSubnet(test.args.subnet)
t.Errorf("NextSubnet() error = %v, wantErr %v", err, tt.wantErr) if (err != nil) != test.wantErr {
t.Errorf("NextSubnet() error = %v, wantErr %v", err, test.wantErr)
return return
} }
if !reflect.DeepEqual(got, tt.want) { if !reflect.DeepEqual(got, test.want) {
t.Errorf("NextSubnet() got = %v, want %v", got, tt.want) t.Errorf("NextSubnet() got = %v, want %v", got, test.want)
} }
}) })
} }

View File

@ -24,9 +24,10 @@ func TestValidateRestartPolicy(t *testing.T) {
{"failblank", ContainerInfo{restart: ""}, true}, {"failblank", ContainerInfo{restart: ""}, true},
} }
for _, tt := range tests { for _, tt := range tests {
test := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
if err := validateRestartPolicy(tt.ContainerInfo.restart); (err != nil) != tt.wantErr { if err := validateRestartPolicy(test.ContainerInfo.restart); (err != nil) != test.wantErr {
t.Errorf("ValidateRestartPolicy() error = %v, wantErr %v", err, tt.wantErr) t.Errorf("ValidateRestartPolicy() error = %v, wantErr %v", err, test.wantErr)
} }
}) })
} }
@ -221,18 +222,19 @@ WantedBy=multi-user.target`
}, },
} }
for _, tt := range tests { for _, tt := range tests {
test := tt
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
opts := Options{ opts := Options{
Files: false, Files: false,
New: tt.info.New, New: test.info.New,
} }
got, err := CreateContainerSystemdUnit(&tt.info, opts) got, err := CreateContainerSystemdUnit(&test.info, opts)
if (err != nil) != tt.wantErr { if (err != nil) != test.wantErr {
t.Errorf("CreateContainerSystemdUnit() error = \n%v, wantErr \n%v", err, tt.wantErr) t.Errorf("CreateContainerSystemdUnit() error = \n%v, wantErr \n%v", err, test.wantErr)
return return
} }
if got != tt.want { if got != test.want {
t.Errorf("CreateContainerSystemdUnit() = \n%v\n---------> want\n%v", got, tt.want) t.Errorf("CreateContainerSystemdUnit() = \n%v\n---------> want\n%v", got, test.want)
} }
}) })
} }