Merge pull request #22542 from hashicorp/deps-bump-deep
deps: Bump github.com/go-test/deep to 1.0.3
This commit is contained in:
commit
db4d75fcaa
6
go.mod
6
go.mod
|
@ -31,7 +31,7 @@ require (
|
|||
github.com/dnaeon/go-vcr v0.0.0-20180920040454-5637cf3d8a31 // indirect
|
||||
github.com/dylanmei/iso8601 v0.1.0 // indirect
|
||||
github.com/dylanmei/winrmtest v0.0.0-20190225150635-99b7fe2fddf1
|
||||
github.com/go-test/deep v1.0.1
|
||||
github.com/go-test/deep v1.0.3
|
||||
github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7 // indirect
|
||||
github.com/golang/mock v1.3.1
|
||||
github.com/golang/protobuf v1.3.1
|
||||
|
@ -62,12 +62,12 @@ require (
|
|||
github.com/hashicorp/go-uuid v1.0.1
|
||||
github.com/hashicorp/go-version v1.1.0
|
||||
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f
|
||||
github.com/hashicorp/hcl2 v0.0.0-20190809210004-72d32879a5c5
|
||||
github.com/hashicorp/hcl2 v0.0.0-20190821123243-0c888d1241f6
|
||||
github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590
|
||||
github.com/hashicorp/logutils v1.0.0
|
||||
github.com/hashicorp/memberlist v0.1.0 // indirect
|
||||
github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb // indirect
|
||||
github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70
|
||||
github.com/hashicorp/terraform-config-inspect v0.0.0-20190821133035-82a99dc22ef4
|
||||
github.com/hashicorp/vault v0.10.4
|
||||
github.com/jonboulle/clockwork v0.1.0 // indirect
|
||||
github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926
|
||||
|
|
21
go.sum
21
go.sum
|
@ -123,8 +123,8 @@ github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aev
|
|||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/go-test/deep v1.0.1 h1:UQhStjbkDClarlmv0am7OXXO4/GaPdCGiUiMTvi28sg=
|
||||
github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
|
||||
github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
|
||||
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.2.0 h1:xU6/SpYbvkNYiptHJYEDRseDLvYE7wSqhYYNy0QSUzI=
|
||||
github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
|
@ -230,9 +230,8 @@ github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCO
|
|||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws=
|
||||
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
|
||||
github.com/hashicorp/hcl2 v0.0.0-20181208003705-670926858200/go.mod h1:ShfpTh661oAaxo7VcNxg0zcZW6jvMa7Moy2oFx7e5dE=
|
||||
github.com/hashicorp/hcl2 v0.0.0-20190809210004-72d32879a5c5 h1:OFoLPLBMKaHdNqbf+YRWnPh38QB7VJFlm6i9ULrZ8bI=
|
||||
github.com/hashicorp/hcl2 v0.0.0-20190809210004-72d32879a5c5/go.mod h1:FSQTwDi9qesxGBsII2VqhIzKQ4r0bHvBkOczWfD7llg=
|
||||
github.com/hashicorp/hcl2 v0.0.0-20190821123243-0c888d1241f6 h1:JImQpEeUQ+0DPFMaWzLA0GdUNPaUlCXLpfiqkSZBUfc=
|
||||
github.com/hashicorp/hcl2 v0.0.0-20190821123243-0c888d1241f6/go.mod h1:Cxv+IJLuBiEhQ7pBYGEuORa0nr4U994pE8mYLuFd7v0=
|
||||
github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 h1:2yzhWGdgQUWZUCNK+AoO35V+HTsgEmcM4J9IkArh7PI=
|
||||
github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE=
|
||||
github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
|
||||
|
@ -241,8 +240,8 @@ github.com/hashicorp/memberlist v0.1.0 h1:qSsCiC0WYD39lbSitKNt40e30uorm2Ss/d4JGU
|
|||
github.com/hashicorp/memberlist v0.1.0/go.mod h1:ncdBp14cuox2iFOq3kDiquKU6fqsTBc3W6JvZwjxxsE=
|
||||
github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb h1:ZbgmOQt8DOg796figP87/EFCVx2v2h9yRvwHF/zceX4=
|
||||
github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb/go.mod h1:h/Ru6tmZazX7WO/GDmwdpS975F019L4t5ng5IgwbNrE=
|
||||
github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70 h1:oZm5nE11yhzsTRz/YrUyDMSvixePqjoZihwn8ipuOYI=
|
||||
github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70/go.mod h1:ItvqtvbC3K23FFET62ZwnkwtpbKZm8t8eMcWjmVVjD8=
|
||||
github.com/hashicorp/terraform-config-inspect v0.0.0-20190821133035-82a99dc22ef4 h1:fTkL0YwjohGyN7AqsDhz6bwcGBpT+xBqi3Qhpw58Juw=
|
||||
github.com/hashicorp/terraform-config-inspect v0.0.0-20190821133035-82a99dc22ef4/go.mod h1:JDmizlhaP5P0rYTTZB0reDMefAiJyfWPEtugV4in1oI=
|
||||
github.com/hashicorp/vault v0.10.4 h1:4x0lHxui/ZRp/B3E0Auv1QNBJpzETqHR2kQD3mHSBJU=
|
||||
github.com/hashicorp/vault v0.10.4/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0=
|
||||
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb h1:b5rjCoWHc7eqmAS4/qyk21ZsHyb6Mxv/jykxvNTkU4M=
|
||||
|
@ -280,6 +279,8 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
|||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4=
|
||||
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
|
||||
github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
|
||||
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
|
||||
github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
|
||||
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||
github.com/lusis/go-artifactory v0.0.0-20160115162124-7e4ce345df82 h1:wnfcqULT+N2seWf6y4yHzmi7GD2kNx4Ute0qArktD48=
|
||||
|
@ -428,6 +429,8 @@ github.com/spf13/afero v1.2.1 h1:qgMbHoJbPbw579P+1zVY+6n4nIFuIchaIjzZ/I/Yq8M=
|
|||
github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
|
||||
github.com/spf13/pflag v1.0.2 h1:Fy0orTDgHdbnzHcsOgfCN4LtHf0ec3wwtiwJqwvf3Gc=
|
||||
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
|
||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
|
@ -453,7 +456,6 @@ github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18 h1:MPPkRncZLN9Kh4M
|
|||
github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557 h1:Jpn2j6wHkC9wJv5iMfJhKqrZJx3TahFx+7sbZ7zQdxs=
|
||||
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
||||
github.com/zclconf/go-cty v0.0.0-20181129180422-88fbe721e0f8/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
||||
github.com/zclconf/go-cty v1.0.0 h1:EWtv3gKe2wPLIB9hQRQJa7k/059oIfAqcEkCNnaVckk=
|
||||
github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
||||
github.com/zclconf/go-cty v1.0.1-0.20190708163926-19588f92a98f h1:sq2p8SN6ji66CFEQFIWLlD/gFmGtr5hBrOzv5nLlGfA=
|
||||
|
@ -473,7 +475,6 @@ go.uber.org/zap v1.9.1 h1:XCJQEf3W6eZaVwhRBof6ImoYGJSITeKWsyeh3HFu/5o=
|
|||
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
|
||||
golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
|
||||
golang.org/x/crypto v0.0.0-20180816225734-aabede6cba87/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
|
@ -499,8 +500,6 @@ golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73r
|
|||
golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76 h1:xx5MUFyRQRbPk6VjWjIE1epE/K5AoDD8QUN116NCy8k=
|
||||
golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
"attributes_flat": {
|
||||
"id": "3214385801340650197",
|
||||
"triggers.%": "1",
|
||||
"triggers.what": "0"
|
||||
"triggers.what": "1"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -42,9 +42,9 @@
|
|||
},
|
||||
{
|
||||
"attributes_flat": {
|
||||
"id": "604776346677326098",
|
||||
"id": "4776432143683449212",
|
||||
"triggers.%": "1",
|
||||
"triggers.index": "0"
|
||||
"triggers.index": "1"
|
||||
},
|
||||
"depends_on": ["null_resource.baz"],
|
||||
"index_key": 1,
|
||||
|
|
|
@ -42,9 +42,9 @@
|
|||
},
|
||||
{
|
||||
"attributes_flat": {
|
||||
"id": "604776346677326098",
|
||||
"id": "4776432143683449212",
|
||||
"triggers.%": "1",
|
||||
"triggers.index": "0"
|
||||
"triggers.index": "1"
|
||||
},
|
||||
"depends_on": ["null_resource.baz"],
|
||||
"index_key": 1,
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
"attributes_flat": {
|
||||
"id": "1523897709610803586",
|
||||
"triggers.%": "1",
|
||||
"triggers.what": "0"
|
||||
"triggers.what": "1"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
language: go
|
||||
|
||||
go:
|
||||
- 1.7
|
||||
- 1.8
|
||||
- 1.9
|
||||
- "1.10"
|
||||
- "1.11"
|
||||
- "1.12"
|
||||
|
||||
before_install:
|
||||
- go get github.com/mattn/goveralls
|
||||
|
|
|
@ -1,8 +1,25 @@
|
|||
# go-test/deep Changelog
|
||||
|
||||
## v1.0.3
|
||||
|
||||
* Fixed issue #31: panic on typed primitives that implement error interface
|
||||
|
||||
## v1.0.2 released 2019-07-14
|
||||
|
||||
* Enabled Go module (@radeksimko)
|
||||
* Changed supported and tested Go versions: 1.10, 1.11, and 1.12 (dropped 1.9)
|
||||
* Changed Error equality: additional struct fields are compared too (PR #29) (@andrewmostello)
|
||||
* Fixed typos and ineffassign issues (PR #25) (@tariq1890)
|
||||
* Fixed diff order for nil comparison (PR #16) (@gmarik)
|
||||
* Fixed slice equality when slices are extracted from the same array (PR #11) (@risteli)
|
||||
* Fixed test spelling and messages (PR #19) (@sofuture)
|
||||
* Fixed issue #15: panic on comparing struct with anonymous time.Time
|
||||
* Fixed issue #18: Panic when comparing structs with time.Time value and CompareUnexportedFields is true
|
||||
* Fixed issue #21: Set default MaxDepth = 0 (disabled) (PR #23)
|
||||
|
||||
## v1.0.1 released 2018-01-28
|
||||
|
||||
* Fixed #12: Arrays are not properly compared (samlitowitz)
|
||||
* Fixed issue #12: Arrays are not properly compared (@samlitowitz)
|
||||
|
||||
## v1.0.0 releaesd 2017-10-27
|
||||
|
||||
|
|
|
@ -19,14 +19,15 @@ var (
|
|||
// MaxDiff specifies the maximum number of differences to return.
|
||||
MaxDiff = 10
|
||||
|
||||
// MaxDepth specifies the maximum levels of a struct to recurse into.
|
||||
MaxDepth = 10
|
||||
// MaxDepth specifies the maximum levels of a struct to recurse into,
|
||||
// if greater than zero. If zero, there is no limit.
|
||||
MaxDepth = 0
|
||||
|
||||
// LogErrors causes errors to be logged to STDERR when true.
|
||||
LogErrors = false
|
||||
|
||||
// CompareUnexportedFields causes unexported struct fields, like s in
|
||||
// T{s int}, to be comparsed when true.
|
||||
// T{s int}, to be compared when true.
|
||||
CompareUnexportedFields = false
|
||||
)
|
||||
|
||||
|
@ -50,8 +51,9 @@ type cmp struct {
|
|||
var errorType = reflect.TypeOf((*error)(nil)).Elem()
|
||||
|
||||
// Equal compares variables a and b, recursing into their structure up to
|
||||
// MaxDepth levels deep, and returns a list of differences, or nil if there are
|
||||
// none. Some differences may not be found if an error is also returned.
|
||||
// MaxDepth levels deep (if greater than zero), and returns a list of differences,
|
||||
// or nil if there are none. Some differences may not be found if an error is
|
||||
// also returned.
|
||||
//
|
||||
// If a type has an Equal method, like time.Equal, it is called to check for
|
||||
// equality.
|
||||
|
@ -66,7 +68,7 @@ func Equal(a, b interface{}) []string {
|
|||
if a == nil && b == nil {
|
||||
return nil
|
||||
} else if a == nil && b != nil {
|
||||
c.saveDiff(b, "<nil pointer>")
|
||||
c.saveDiff("<nil pointer>", b)
|
||||
} else if a != nil && b == nil {
|
||||
c.saveDiff(a, "<nil pointer>")
|
||||
}
|
||||
|
@ -82,7 +84,7 @@ func Equal(a, b interface{}) []string {
|
|||
}
|
||||
|
||||
func (c *cmp) equals(a, b reflect.Value, level int) {
|
||||
if level > MaxDepth {
|
||||
if MaxDepth > 0 && level > MaxDepth {
|
||||
logError(ErrMaxRecursion)
|
||||
return
|
||||
}
|
||||
|
@ -97,7 +99,7 @@ func (c *cmp) equals(a, b reflect.Value, level int) {
|
|||
return
|
||||
}
|
||||
|
||||
// If differenet types, they can't be equal
|
||||
// If different types, they can't be equal
|
||||
aType := a.Type()
|
||||
bType := b.Type()
|
||||
if aType != bType {
|
||||
|
@ -110,46 +112,37 @@ func (c *cmp) equals(a, b reflect.Value, level int) {
|
|||
aKind := a.Kind()
|
||||
bKind := b.Kind()
|
||||
|
||||
// Do a and b have underlying elements? Yes if they're ptr or interface.
|
||||
aElem := aKind == reflect.Ptr || aKind == reflect.Interface
|
||||
bElem := bKind == reflect.Ptr || bKind == reflect.Interface
|
||||
|
||||
// If both types implement the error interface, compare the error strings.
|
||||
// This must be done before dereferencing because the interface is on a
|
||||
// pointer receiver.
|
||||
// pointer receiver. Re https://github.com/go-test/deep/issues/31, a/b might
|
||||
// be primitive kinds; see TestErrorPrimitiveKind.
|
||||
if aType.Implements(errorType) && bType.Implements(errorType) {
|
||||
if a.Elem().IsValid() && b.Elem().IsValid() { // both err != nil
|
||||
if (!aElem || !a.IsNil()) && (!bElem || !b.IsNil()) {
|
||||
aString := a.MethodByName("Error").Call(nil)[0].String()
|
||||
bString := b.MethodByName("Error").Call(nil)[0].String()
|
||||
if aString != bString {
|
||||
c.saveDiff(aString, bString)
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Dereference pointers and interface{}
|
||||
if aElem, bElem := (aKind == reflect.Ptr || aKind == reflect.Interface),
|
||||
(bKind == reflect.Ptr || bKind == reflect.Interface); aElem || bElem {
|
||||
|
||||
if aElem || bElem {
|
||||
if aElem {
|
||||
a = a.Elem()
|
||||
}
|
||||
|
||||
if bElem {
|
||||
b = b.Elem()
|
||||
}
|
||||
|
||||
c.equals(a, b, level+1)
|
||||
return
|
||||
}
|
||||
|
||||
// Types with an Equal(), like time.Time.
|
||||
eqFunc := a.MethodByName("Equal")
|
||||
if eqFunc.IsValid() {
|
||||
retVals := eqFunc.Call([]reflect.Value{b})
|
||||
if !retVals[0].Bool() {
|
||||
c.saveDiff(a, b)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
switch aKind {
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
|
@ -167,6 +160,29 @@ func (c *cmp) equals(a, b reflect.Value, level int) {
|
|||
|
||||
Iterate through the fields (FirstName, LastName), recurse into their values.
|
||||
*/
|
||||
|
||||
// Types with an Equal() method, like time.Time, only if struct field
|
||||
// is exported (CanInterface)
|
||||
if eqFunc := a.MethodByName("Equal"); eqFunc.IsValid() && eqFunc.CanInterface() {
|
||||
// Handle https://github.com/go-test/deep/issues/15:
|
||||
// Don't call T.Equal if the method is from an embedded struct, like:
|
||||
// type Foo struct { time.Time }
|
||||
// First, we'll encounter Equal(Ttime, time.Time) but if we pass b
|
||||
// as the 2nd arg we'll panic: "Call using pkg.Foo as type time.Time"
|
||||
// As far as I can tell, there's no way to see that the method is from
|
||||
// time.Time not Foo. So we check the type of the 1st (0) arg and skip
|
||||
// unless it's b type. Later, we'll encounter the time.Time anonymous/
|
||||
// embedded field and then we'll have Equal(time.Time, time.Time).
|
||||
funcType := eqFunc.Type()
|
||||
if funcType.NumIn() == 1 && funcType.In(0) == bType {
|
||||
retVals := eqFunc.Call([]reflect.Value{b})
|
||||
if !retVals[0].Bool() {
|
||||
c.saveDiff(a, b)
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
for i := 0; i < a.NumField(); i++ {
|
||||
if aType.Field(i).PkgPath != "" && !CompareUnexportedFields {
|
||||
continue // skip unexported field, e.g. s in type T struct {s string}
|
||||
|
@ -267,12 +283,13 @@ func (c *cmp) equals(a, b reflect.Value, level int) {
|
|||
return
|
||||
}
|
||||
|
||||
if a.Pointer() == b.Pointer() {
|
||||
aLen := a.Len()
|
||||
bLen := b.Len()
|
||||
|
||||
if a.Pointer() == b.Pointer() && aLen == bLen {
|
||||
return
|
||||
}
|
||||
|
||||
aLen := a.Len()
|
||||
bLen := b.Len()
|
||||
n := aLen
|
||||
if bLen > aLen {
|
||||
n = bLen
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
module github.com/go-test/deep
|
|
@ -158,7 +158,7 @@ github.com/dylanmei/iso8601
|
|||
github.com/dylanmei/winrmtest
|
||||
# github.com/fatih/color v1.7.0
|
||||
github.com/fatih/color
|
||||
# github.com/go-test/deep v1.0.1
|
||||
# github.com/go-test/deep v1.0.3
|
||||
github.com/go-test/deep
|
||||
# github.com/gogo/protobuf v1.2.0
|
||||
github.com/gogo/protobuf/gogoproto
|
||||
|
|
Loading…
Reference in New Issue