Post migration fixes

Fix tests that failed when using cmp.Compare()
internal/test/testutil/assert
InDelta
Fix DeepEqual with kube metav1.Time
Convert some ErrorContains to assert

Signed-off-by: Daniel Nephin <dnephin@docker.com>
This commit is contained in:
Daniel Nephin
2018-03-05 19:41:17 -05:00
parent 39c2ca57c1
commit 5155cda716
28 changed files with 177 additions and 194 deletions
+39 -69
View File
@@ -4,6 +4,7 @@ import (
"bytes"
"io/ioutil"
"os"
"reflect"
"sort"
"testing"
"time"
@@ -225,16 +226,13 @@ func TestParseAndLoad(t *testing.T) {
func TestInvalidTopLevelObjectType(t *testing.T) {
_, err := loadYAML("1")
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "Top-level object must be a mapping"))
assert.ErrorContains(t, err, "Top-level object must be a mapping")
_, err = loadYAML("\"hello\"")
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "Top-level object must be a mapping"))
assert.ErrorContains(t, err, "Top-level object must be a mapping")
_, err = loadYAML("[\"hello\"]")
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "Top-level object must be a mapping"))
assert.ErrorContains(t, err, "Top-level object must be a mapping")
}
func TestNonStringKeys(t *testing.T) {
@@ -244,8 +242,7 @@ version: "3"
foo:
image: busybox
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "Non-string key at top level: 123"))
assert.ErrorContains(t, err, "Non-string key at top level: 123")
_, err = loadYAML(`
version: "3"
@@ -255,8 +252,7 @@ services:
123:
image: busybox
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "Non-string key in services: 123"))
assert.ErrorContains(t, err, "Non-string key in services: 123")
_, err = loadYAML(`
version: "3"
@@ -269,8 +265,7 @@ networks:
config:
- 123: oh dear
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "Non-string key in networks.default.ipam.config[0]: 123"))
assert.ErrorContains(t, err, "Non-string key in networks.default.ipam.config[0]: 123")
_, err = loadYAML(`
version: "3"
@@ -280,8 +275,7 @@ services:
environment:
1: FOO
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "Non-string key in services.dict-env.environment: 1"))
assert.ErrorContains(t, err, "Non-string key in services.dict-env.environment: 1")
}
func TestSupportedVersion(t *testing.T) {
@@ -309,8 +303,7 @@ services:
foo:
image: busybox
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "version"))
assert.ErrorContains(t, err, "version")
_, err = loadYAML(`
version: "2.0"
@@ -318,8 +311,7 @@ services:
foo:
image: busybox
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "version"))
assert.ErrorContains(t, err, "version")
}
func TestInvalidVersion(t *testing.T) {
@@ -329,8 +321,7 @@ services:
foo:
image: busybox
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "version must be a string"))
assert.ErrorContains(t, err, "version must be a string")
}
func TestV1Unsupported(t *testing.T) {
@@ -338,7 +329,7 @@ func TestV1Unsupported(t *testing.T) {
foo:
image: busybox
`)
assert.Check(t, is.ErrorContains(err, ""))
assert.ErrorContains(t, err, "unsupported Compose file version: 1.0")
}
func TestNonMappingObject(t *testing.T) {
@@ -348,16 +339,14 @@ services:
- foo:
image: busybox
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "services must be a mapping"))
assert.ErrorContains(t, err, "services must be a mapping")
_, err = loadYAML(`
version: "3"
services:
foo: busybox
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "services.foo must be a mapping"))
assert.ErrorContains(t, err, "services.foo must be a mapping")
_, err = loadYAML(`
version: "3"
@@ -365,16 +354,14 @@ networks:
- default:
driver: bridge
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "networks must be a mapping"))
assert.ErrorContains(t, err, "networks must be a mapping")
_, err = loadYAML(`
version: "3"
networks:
default: bridge
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "networks.default must be a mapping"))
assert.ErrorContains(t, err, "networks.default must be a mapping")
_, err = loadYAML(`
version: "3"
@@ -382,16 +369,14 @@ volumes:
- data:
driver: local
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "volumes must be a mapping"))
assert.ErrorContains(t, err, "volumes must be a mapping")
_, err = loadYAML(`
version: "3"
volumes:
data: local
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "volumes.data must be a mapping"))
assert.ErrorContains(t, err, "volumes.data must be a mapping")
}
func TestNonStringImage(t *testing.T) {
@@ -401,8 +386,7 @@ services:
foo:
image: ["busybox", "latest"]
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "services.foo.image must be a string"))
assert.ErrorContains(t, err, "services.foo.image must be a string")
}
func TestLoadWithEnvironment(t *testing.T) {
@@ -452,8 +436,7 @@ services:
environment:
FOO: ["1"]
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "services.dict-env.environment.FOO must be a string, number or null"))
assert.ErrorContains(t, err, "services.dict-env.environment.FOO must be a string, number or null")
}
func TestInvalidEnvironmentObject(t *testing.T) {
@@ -464,8 +447,7 @@ services:
image: busybox
environment: "FOO=1"
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "services.dict-env.environment must be a mapping"))
assert.ErrorContains(t, err, "services.dict-env.environment must be a mapping")
}
func TestLoadWithEnvironmentInterpolation(t *testing.T) {
@@ -736,11 +718,9 @@ services:
service: foo
`)
assert.Assert(t, is.ErrorContains(err, ""))
forbidden, ok := err.(*ForbiddenPropertiesError)
assert.Check(t, ok, "error type is %T instead of ForbiddenPropertiesError", err)
assert.ErrorType(t, err, reflect.TypeOf(&ForbiddenPropertiesError{}))
props := forbidden.Properties
props := err.(*ForbiddenPropertiesError).Properties
assert.Check(t, is.Len(props, 2))
assert.Check(t, is.Contains(props, "volume_driver"))
assert.Check(t, is.Contains(props, "extends"))
@@ -757,8 +737,7 @@ func TestInvalidResource(t *testing.T) {
impossible:
x: 1
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "Additional property impossible is not allowed"))
assert.ErrorContains(t, err, "Additional property impossible is not allowed")
}
func TestInvalidExternalAndDriverCombination(t *testing.T) {
@@ -770,9 +749,8 @@ volumes:
driver: foobar
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "conflicting parameters \"external\" and \"driver\" specified for volume"))
assert.Check(t, is.Contains(err.Error(), "external_volume"))
assert.ErrorContains(t, err, "conflicting parameters \"external\" and \"driver\" specified for volume")
assert.ErrorContains(t, err, "external_volume")
}
func TestInvalidExternalAndDirverOptsCombination(t *testing.T) {
@@ -785,9 +763,8 @@ volumes:
beep: boop
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "conflicting parameters \"external\" and \"driver_opts\" specified for volume"))
assert.Check(t, is.Contains(err.Error(), "external_volume"))
assert.ErrorContains(t, err, "conflicting parameters \"external\" and \"driver_opts\" specified for volume")
assert.ErrorContains(t, err, "external_volume")
}
func TestInvalidExternalAndLabelsCombination(t *testing.T) {
@@ -800,9 +777,8 @@ volumes:
- beep=boop
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "conflicting parameters \"external\" and \"labels\" specified for volume"))
assert.Check(t, is.Contains(err.Error(), "external_volume"))
assert.ErrorContains(t, err, "conflicting parameters \"external\" and \"labels\" specified for volume")
assert.ErrorContains(t, err, "external_volume")
}
func TestLoadVolumeInvalidExternalNameAndNameCombination(t *testing.T) {
@@ -815,9 +791,8 @@ volumes:
name: external_name
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "volume.external.name and volume.name conflict; only use volume.name"))
assert.Check(t, is.Contains(err.Error(), "external_volume"))
assert.ErrorContains(t, err, "volume.external.name and volume.name conflict; only use volume.name")
assert.ErrorContains(t, err, "external_volume")
}
func durationPtr(value time.Duration) *time.Duration {
@@ -890,8 +865,7 @@ services:
tmpfs:
size: 10000
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "services.tmpfs.volumes.0 Additional property tmpfs is not allowed"))
assert.ErrorContains(t, err, "services.tmpfs.volumes.0 Additional property tmpfs is not allowed")
}
func TestLoadBindMountSourceMustNotBeEmpty(t *testing.T) {
@@ -971,8 +945,7 @@ services:
tmpfs:
size: -1
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "services.tmpfs.volumes.0.tmpfs.size Must be greater than or equal to 0"))
assert.ErrorContains(t, err, "services.tmpfs.volumes.0.tmpfs.size Must be greater than or equal to 0")
}
func TestLoadTmpfsVolumeSizeMustBeInteger(t *testing.T) {
@@ -987,8 +960,7 @@ services:
tmpfs:
size: 0.0001
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "services.tmpfs.volumes.0.tmpfs.size must be a integer"))
assert.ErrorContains(t, err, "services.tmpfs.volumes.0.tmpfs.size must be a integer")
}
func serviceSort(services []types.ServiceConfig) []types.ServiceConfig {
@@ -1295,9 +1267,8 @@ secrets:
name: external_name
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "secret.external.name and secret.name conflict; only use secret.name"))
assert.Check(t, is.Contains(err.Error(), "external_secret"))
assert.ErrorContains(t, err, "secret.external.name and secret.name conflict; only use secret.name")
assert.ErrorContains(t, err, "external_secret")
}
func TestLoadSecretsWarnOnDeprecatedExternalNameVersion35(t *testing.T) {
@@ -1383,7 +1354,6 @@ networks:
name: external_name
`)
assert.Assert(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "network.external.name and network.name conflict; only use network.name"))
assert.Check(t, is.Contains(err.Error(), "foo"))
assert.ErrorContains(t, err, "network.external.name and network.name conflict; only use network.name")
assert.ErrorContains(t, err, "foo")
}
+2 -5
View File
@@ -4,7 +4,6 @@ import (
"testing"
"github.com/gotestyourself/gotestyourself/assert"
is "github.com/gotestyourself/gotestyourself/assert/cmp"
)
type dict map[string]interface{}
@@ -33,8 +32,7 @@ func TestValidateUndefinedTopLevelOption(t *testing.T) {
}
err := Validate(config, "3.0")
assert.Check(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "Additional property helicopters is not allowed"))
assert.ErrorContains(t, err, "Additional property helicopters is not allowed")
}
func TestValidateAllowsXTopLevelFields(t *testing.T) {
@@ -77,8 +75,7 @@ func TestValidateInvalidVersion(t *testing.T) {
}
err := Validate(config, "2.1")
assert.Check(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "unsupported Compose file version: 2.1"))
assert.ErrorContains(t, err, "unsupported Compose file version: 2.1")
}
type array []interface{}
+4 -6
View File
@@ -1,9 +1,9 @@
package template
import (
"reflect"
"testing"
"github.com/docker/cli/internal/test/testutil"
"github.com/gotestyourself/gotestyourself/assert"
is "github.com/gotestyourself/gotestyourself/assert/cmp"
)
@@ -43,8 +43,7 @@ func TestInvalid(t *testing.T) {
for _, template := range invalidTemplates {
_, err := Substitute(template, defaultMapping)
assert.Check(t, is.ErrorContains(err, ""))
assert.Check(t, is.Contains(err.Error(), "Invalid template"))
assert.ErrorContains(t, err, "Invalid template")
}
}
@@ -119,9 +118,8 @@ func TestMandatoryVariableErrors(t *testing.T) {
for _, tc := range testCases {
_, err := Substitute(tc.template, defaultMapping)
assert.Check(t, is.ErrorContains(err, ""))
assert.IsType(t, &InvalidTemplateError{}, err)
testutil.ErrorContains(t, err, tc.expectedError)
assert.ErrorContains(t, err, tc.expectedError)
assert.ErrorType(t, err, reflect.TypeOf(&InvalidTemplateError{}))
}
}