vendor: update gotest.tools v3.0.2

full diff: https://github.com/gotestyourself/gotest.tools/compare/v2.3.0...v3.0.2

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn 2020-02-28 16:31:56 +01:00
parent 4d242818bf
commit f2edc6f164
No known key found for this signature in database
GPG Key ID: 76698F39D527CE8C
40 changed files with 154 additions and 106 deletions

View File

@ -33,8 +33,8 @@ import (
"github.com/containerd/fifo" "github.com/containerd/fifo"
"github.com/google/go-cmp/cmp/cmpopts" "github.com/google/go-cmp/cmp/cmpopts"
"gotest.tools/assert" "gotest.tools/v3/assert"
is "gotest.tools/assert/cmp" is "gotest.tools/v3/assert/cmp"
) )
func assertHasPrefix(t *testing.T, s, prefix string) { func assertHasPrefix(t *testing.T, s, prefix string) {

View File

@ -23,7 +23,7 @@ import (
"path/filepath" "path/filepath"
"testing" "testing"
"gotest.tools/assert" "gotest.tools/v3/assert"
) )
func TestOpenFifos(t *testing.T) { func TestOpenFifos(t *testing.T) {

View File

@ -21,7 +21,7 @@ package cio
import ( import (
"testing" "testing"
"gotest.tools/assert" "gotest.tools/v3/assert"
) )
func TestNewFifoSetInDir_NoTerminal(t *testing.T) { func TestNewFifoSetInDir_NoTerminal(t *testing.T) {

View File

@ -26,7 +26,7 @@ import (
"github.com/containerd/containerd/pkg/ttrpcutil" "github.com/containerd/containerd/pkg/ttrpcutil"
"github.com/containerd/ttrpc" "github.com/containerd/ttrpc"
"github.com/gogo/protobuf/types" "github.com/gogo/protobuf/types"
"gotest.tools/assert" "gotest.tools/v3/assert"
) )
func TestClientTTRPC_New(t *testing.T) { func TestClientTTRPC_New(t *testing.T) {

View File

@ -26,8 +26,8 @@ import (
"github.com/containerd/containerd/errdefs" "github.com/containerd/containerd/errdefs"
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
"gotest.tools/assert" "gotest.tools/v3/assert"
is "gotest.tools/assert/cmp" is "gotest.tools/v3/assert/cmp"
) )
type copySource struct { type copySource struct {

View File

@ -40,7 +40,7 @@ import (
"github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest"
ocispec "github.com/opencontainers/image-spec/specs-go/v1" ocispec "github.com/opencontainers/image-spec/specs-go/v1"
"gotest.tools/assert" "gotest.tools/v3/assert"
) )
type memoryLabelStore struct { type memoryLabelStore struct {

View File

@ -36,7 +36,7 @@ import (
digest "github.com/opencontainers/go-digest" digest "github.com/opencontainers/go-digest"
ocispec "github.com/opencontainers/image-spec/specs-go/v1" ocispec "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors" "github.com/pkg/errors"
"gotest.tools/assert" "gotest.tools/v3/assert"
) )
const ( const (

View File

@ -23,7 +23,7 @@ import (
"time" "time"
"github.com/containerd/containerd/gc" "github.com/containerd/containerd/gc"
"gotest.tools/assert" "gotest.tools/v3/assert"
) )
func TestPauseThreshold(t *testing.T) { func TestPauseThreshold(t *testing.T) {

View File

@ -20,7 +20,7 @@ import (
"context" "context"
"testing" "testing"
"gotest.tools/assert" "gotest.tools/v3/assert"
) )
func TestLoggerContext(t *testing.T) { func TestLoggerContext(t *testing.T) {

View File

@ -31,7 +31,7 @@ import (
// so we use continuity/testutil instead. // so we use continuity/testutil instead.
"github.com/containerd/continuity/testutil" "github.com/containerd/continuity/testutil"
"github.com/containerd/continuity/testutil/loopback" "github.com/containerd/continuity/testutil/loopback"
"gotest.tools/assert" "gotest.tools/v3/assert"
) )
func checkLookup(t *testing.T, fsType, mntPoint, dir string) { func checkLookup(t *testing.T, fsType, mntPoint, dir string) {

View File

@ -24,7 +24,7 @@ import (
"testing" "testing"
"github.com/containerd/containerd/mount" "github.com/containerd/containerd/mount"
"gotest.tools/assert" "gotest.tools/v3/assert"
) )
// Unmount unmounts a given mountPoint and sets t.Error if it fails // Unmount unmounts a given mountPoint and sets t.Error if it fails

View File

@ -29,7 +29,7 @@ import (
"testing" "testing"
"github.com/pkg/errors" "github.com/pkg/errors"
"gotest.tools/assert" "gotest.tools/v3/assert"
) )
func TestFetcherOpen(t *testing.T) { func TestFetcherOpen(t *testing.T) {

View File

@ -21,8 +21,8 @@ import (
"testing" "testing"
"github.com/containerd/containerd/reference" "github.com/containerd/containerd/reference"
"gotest.tools/assert" "gotest.tools/v3/assert"
"gotest.tools/assert/cmp" "gotest.tools/v3/assert/cmp"
) )
func TestRepositoryScope(t *testing.T) { func TestRepositoryScope(t *testing.T) {

View File

@ -23,7 +23,7 @@ import (
"sort" "sort"
"testing" "testing"
"gotest.tools/assert" "gotest.tools/v3/assert"
"github.com/containerd/containerd/plugin" "github.com/containerd/containerd/plugin"
) )

View File

@ -20,8 +20,8 @@ import (
"testing" "testing"
srvconfig "github.com/containerd/containerd/services/server/config" srvconfig "github.com/containerd/containerd/services/server/config"
"gotest.tools/assert" "gotest.tools/v3/assert"
is "gotest.tools/assert/cmp" is "gotest.tools/v3/assert/cmp"
) )
func TestCreateTopLevelDirectoriesErrorsWithSamePathForRootAndState(t *testing.T) { func TestCreateTopLevelDirectoriesErrorsWithSamePathForRootAndState(t *testing.T) {

View File

@ -32,7 +32,7 @@ import (
"github.com/containerd/continuity/fs/fstest" "github.com/containerd/continuity/fs/fstest"
"github.com/pkg/errors" "github.com/pkg/errors"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"gotest.tools/assert" "gotest.tools/v3/assert"
"github.com/containerd/containerd/mount" "github.com/containerd/containerd/mount"
"github.com/containerd/containerd/snapshots" "github.com/containerd/containerd/snapshots"

View File

@ -25,8 +25,8 @@ import (
"github.com/BurntSushi/toml" "github.com/BurntSushi/toml"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"gotest.tools/assert" "gotest.tools/v3/assert"
is "gotest.tools/assert/cmp" is "gotest.tools/v3/assert/cmp"
) )
func TestLoadConfig(t *testing.T) { func TestLoadConfig(t *testing.T) {

View File

@ -26,8 +26,8 @@ import (
"github.com/docker/go-units" "github.com/docker/go-units"
"golang.org/x/sys/unix" "golang.org/x/sys/unix"
"gotest.tools/assert" "gotest.tools/v3/assert"
is "gotest.tools/assert/cmp" is "gotest.tools/v3/assert/cmp"
"github.com/containerd/containerd/pkg/testutil" "github.com/containerd/containerd/pkg/testutil"
"github.com/containerd/containerd/snapshots/devmapper/losetup" "github.com/containerd/containerd/snapshots/devmapper/losetup"

View File

@ -25,8 +25,8 @@ import (
"github.com/docker/go-units" "github.com/docker/go-units"
"golang.org/x/sys/unix" "golang.org/x/sys/unix"
"gotest.tools/assert" "gotest.tools/v3/assert"
is "gotest.tools/assert/cmp" is "gotest.tools/v3/assert/cmp"
"github.com/containerd/containerd/pkg/testutil" "github.com/containerd/containerd/pkg/testutil"
) )

View File

@ -28,8 +28,8 @@ import (
"github.com/pkg/errors" "github.com/pkg/errors"
"go.etcd.io/bbolt" "go.etcd.io/bbolt"
"gotest.tools/assert" "gotest.tools/v3/assert"
is "gotest.tools/assert/cmp" is "gotest.tools/v3/assert/cmp"
) )
var ( var (

View File

@ -34,7 +34,7 @@ import (
"github.com/containerd/containerd/snapshots/devmapper/losetup" "github.com/containerd/containerd/snapshots/devmapper/losetup"
"github.com/docker/go-units" "github.com/docker/go-units"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"gotest.tools/assert" "gotest.tools/v3/assert"
) )
const ( const (

View File

@ -30,7 +30,7 @@ import (
"github.com/containerd/continuity/fs/fstest" "github.com/containerd/continuity/fs/fstest"
"github.com/hashicorp/go-multierror" "github.com/hashicorp/go-multierror"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"gotest.tools/assert" "gotest.tools/v3/assert"
"github.com/containerd/containerd/mount" "github.com/containerd/containerd/mount"
"github.com/containerd/containerd/namespaces" "github.com/containerd/containerd/namespaces"

View File

@ -28,8 +28,8 @@ import (
"github.com/containerd/containerd/snapshots" "github.com/containerd/containerd/snapshots"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
"github.com/pkg/errors" "github.com/pkg/errors"
"gotest.tools/assert" "gotest.tools/v3/assert"
is "gotest.tools/assert/cmp" is "gotest.tools/v3/assert/cmp"
) )
type testFunc func(context.Context, *testing.T, *MetaStore) type testFunc func(context.Context, *testing.T, *MetaStore)

View File

@ -34,8 +34,8 @@ import (
"github.com/containerd/containerd/pkg/testutil" "github.com/containerd/containerd/pkg/testutil"
"github.com/containerd/containerd/snapshots" "github.com/containerd/containerd/snapshots"
"github.com/containerd/continuity/fs/fstest" "github.com/containerd/continuity/fs/fstest"
"gotest.tools/assert" "gotest.tools/v3/assert"
is "gotest.tools/assert/cmp" is "gotest.tools/v3/assert/cmp"
) )
// SnapshotterFunc is used in SnapshotterSuite // SnapshotterFunc is used in SnapshotterSuite

View File

@ -25,8 +25,8 @@ import (
"testing" "testing"
"time" "time"
"gotest.tools/assert" "gotest.tools/v3/assert"
is "gotest.tools/assert/cmp" is "gotest.tools/v3/assert/cmp"
) )
func TestSetPositiveOomScoreAdjustment(t *testing.T) { func TestSetPositiveOomScoreAdjustment(t *testing.T) {

View File

@ -50,7 +50,7 @@ golang.org/x/sys c990c680b611ac1aeb7d8f2af94a
golang.org/x/text 19e51611da83d6be54ddafce4a4af510cb3e9ea4 golang.org/x/text 19e51611da83d6be54ddafce4a4af510cb3e9ea4
google.golang.org/genproto e50cd9704f63023d62cd06a1994b98227fc4d21a google.golang.org/genproto e50cd9704f63023d62cd06a1994b98227fc4d21a
google.golang.org/grpc f495f5b15ae7ccda3b38c53a1bfcde4c1a58a2bc # v1.27.1 google.golang.org/grpc f495f5b15ae7ccda3b38c53a1bfcde4c1a58a2bc # v1.27.1
gotest.tools 1083505acf35a0bd8a696b26837e1fb3187a7a83 # v2.3.0 gotest.tools/v3 bb0d8a963040ea5048dcef1a14d8f8b58a33d4b3 # v3.0.2
# cri dependencies # cri dependencies
github.com/containerd/cri c0294ebfe0b4342db85c0faf7727ceb8d8c3afce # master github.com/containerd/cri c0294ebfe0b4342db85c0faf7727ceb8d8c3afce # master

View File

@ -1,8 +0,0 @@
module gotest.tools
require (
github.com/google/go-cmp v0.2.0
github.com/pkg/errors v0.8.0
github.com/spf13/pflag v1.0.3
golang.org/x/tools v0.0.0-20180810170437-e96c4e24768d
)

View File

@ -2,26 +2,41 @@
A collection of packages to augment `testing` and support common patterns. A collection of packages to augment `testing` and support common patterns.
[![GoDoc](https://godoc.org/gotest.tools?status.svg)](https://godoc.org/gotest.tools) [![GoDoc](https://godoc.org/gotest.tools?status.svg)](http://gotest.tools)
[![CircleCI](https://circleci.com/gh/gotestyourself/gotest.tools/tree/master.svg?style=shield)](https://circleci.com/gh/gotestyourself/gotest.tools/tree/master) [![CircleCI](https://circleci.com/gh/gotestyourself/gotest.tools/tree/master.svg?style=shield)](https://circleci.com/gh/gotestyourself/gotest.tools/tree/master)
[![Go Reportcard](https://goreportcard.com/badge/gotest.tools)](https://goreportcard.com/report/gotest.tools) [![Go Reportcard](https://goreportcard.com/badge/gotest.tools)](https://goreportcard.com/report/gotest.tools)
## Usage
With Go modules enabled (go1.11+)
```
$ go get gotest.tools/v3
```
```
import "gotest.tools/v3/assert"
```
To use `gotest.tools` with an older version of Go that does not understand Go
module paths pin to version `v2.3.0`.
## Packages ## Packages
* [assert](http://godoc.org/gotest.tools/assert) - * [assert](http://gotest.tools/assert) -
compare values and fail the test when a comparison fails compare values and fail the test when a comparison fails
* [env](http://godoc.org/gotest.tools/env) - * [env](http://gotest.tools/env) -
test code which uses environment variables test code which uses environment variables
* [fs](http://godoc.org/gotest.tools/fs) - * [fs](http://gotest.tools/fs) -
create temporary files and compare a filesystem tree to an expected value create temporary files and compare a filesystem tree to an expected value
* [golden](http://godoc.org/gotest.tools/golden) - * [golden](http://gotest.tools/golden) -
compare large multi-line strings against values frozen in golden files compare large multi-line strings against values frozen in golden files
* [icmd](http://godoc.org/gotest.tools/icmd) - * [icmd](http://gotest.tools/icmd) -
execute binaries and test the output execute binaries and test the output
* [poll](http://godoc.org/gotest.tools/poll) - * [poll](http://gotest.tools/poll) -
test asynchronous code by polling until a desired state is reached test asynchronous code by polling until a desired state is reached
* [skip](http://godoc.org/gotest.tools/skip) - * [skip](http://gotest.tools/skip) -
skip a test and print the source code of the condition used to skip the test skip a test and print the source code of the condition used to skip the test
## Related ## Related

View File

@ -49,30 +49,31 @@ The example below shows assert used with some common types.
Comparisons Comparisons
Package https://godoc.org/gotest.tools/assert/cmp provides Package http://gotest.tools/assert/cmp provides
many common comparisons. Additional comparisons can be written to compare many common comparisons. Additional comparisons can be written to compare
values in other ways. See the example Assert (CustomComparison). values in other ways. See the example Assert (CustomComparison).
Automated migration from testify Automated migration from testify
gty-migrate-from-testify is a binary which can update source code which uses gty-migrate-from-testify is a command which translates Go source code from
testify assertions to use the assertions provided by this package. testify assertions to the assertions provided by this package.
See http://bit.do/cmd-gty-migrate-from-testify. See http://gotest.tools/assert/cmd/gty-migrate-from-testify.
*/ */
package assert // import "gotest.tools/assert" package assert // import "gotest.tools/v3/assert"
import ( import (
"fmt" "fmt"
"go/ast" "go/ast"
"go/token" "go/token"
"reflect"
gocmp "github.com/google/go-cmp/cmp" gocmp "github.com/google/go-cmp/cmp"
"gotest.tools/assert/cmp" "gotest.tools/v3/assert/cmp"
"gotest.tools/internal/format" "gotest.tools/v3/internal/format"
"gotest.tools/internal/source" "gotest.tools/v3/internal/source"
) )
// BoolOrComparison can be a bool, or cmp.Comparison. See Assert() for usage. // BoolOrComparison can be a bool, or cmp.Comparison. See Assert() for usage.
@ -118,8 +119,8 @@ func assert(
return true return true
case error: case error:
msg := "error is not nil: " msg := failureMsgFromError(check)
t.Log(format.WithCustomMessage(failureMessage+msg+check.Error(), msgAndArgs...)) t.Log(format.WithCustomMessage(failureMessage+msg, msgAndArgs...))
case cmp.Comparison: case cmp.Comparison:
success = runComparison(t, argSelector, check, msgAndArgs...) success = runComparison(t, argSelector, check, msgAndArgs...)
@ -174,6 +175,15 @@ func logFailureFromBool(t TestingT, msgAndArgs ...interface{}) {
t.Log(format.WithCustomMessage(failureMessage+msg, msgAndArgs...)) t.Log(format.WithCustomMessage(failureMessage+msg, msgAndArgs...))
} }
func failureMsgFromError(err error) string {
// Handle errors with non-nil types
v := reflect.ValueOf(err)
if v.Kind() == reflect.Ptr && v.IsNil() {
return fmt.Sprintf("error is not nil: error has type %T", err)
}
return "error is not nil: " + err.Error()
}
func boolFailureMessage(expr ast.Expr) (string, error) { func boolFailureMessage(expr ast.Expr) (string, error) {
if binaryExpr, ok := expr.(*ast.BinaryExpr); ok && binaryExpr.Op == token.NEQ { if binaryExpr, ok := expr.(*ast.BinaryExpr); ok && binaryExpr.Op == token.NEQ {
x, err := source.FormatNode(binaryExpr.X) x, err := source.FormatNode(binaryExpr.X)
@ -202,17 +212,20 @@ func boolFailureMessage(expr ast.Expr) (string, error) {
return "expression is false: " + formatted, nil return "expression is false: " + formatted, nil
} }
// Assert performs a comparison. If the comparison fails the test is marked as // Assert performs a comparison. If the comparison fails, the test is marked as
// failed, a failure message is logged, and execution is stopped immediately. // failed, a failure message is logged, and execution is stopped immediately.
// //
// The comparison argument may be one of three types: bool, cmp.Comparison or // The comparison argument may be one of three types:
// error. // bool
// When called with a bool the failure message will contain the literal source // True is success. False is a failure.
// code of the expression. // The failure message will contain the literal source code of the expression.
// When called with a cmp.Comparison the comparison is responsible for producing // cmp.Comparison
// a helpful failure message. // Uses cmp.Result.Success() to check for success of failure.
// When called with an error a nil value is considered success. A non-nil error // The comparison is responsible for producing a helpful failure message.
// is a failure, and Error() is used as the failure message. // http://gotest.tools/assert/cmp provides many common comparisons.
// error
// A nil value is considered success.
// A non-nil error is a failure, err.Error() is used as the failure message.
func Assert(t TestingT, comparison BoolOrComparison, msgAndArgs ...interface{}) { func Assert(t TestingT, comparison BoolOrComparison, msgAndArgs ...interface{}) {
if ht, ok := t.(helperT); ok { if ht, ok := t.(helperT); ok {
ht.Helper() ht.Helper()
@ -260,10 +273,10 @@ func Equal(t TestingT, x, y interface{}, msgAndArgs ...interface{}) {
assert(t, t.FailNow, argsAfterT, cmp.Equal(x, y), msgAndArgs...) assert(t, t.FailNow, argsAfterT, cmp.Equal(x, y), msgAndArgs...)
} }
// DeepEqual uses google/go-cmp (http://bit.do/go-cmp) to assert two values are // DeepEqual uses google/go-cmp (https://godoc.org/github.com/google/go-cmp/cmp)
// equal and fails the test if they are not equal. // to assert two values are equal and fails the test if they are not equal.
// //
// Package https://godoc.org/gotest.tools/assert/opt provides some additional // Package http://gotest.tools/assert/opt provides some additional
// commonly used Options. // commonly used Options.
// //
// This is equivalent to Assert(t, cmp.DeepEqual(x, y)). // This is equivalent to Assert(t, cmp.DeepEqual(x, y)).
@ -295,14 +308,19 @@ func ErrorContains(t TestingT, err error, substring string, msgAndArgs ...interf
} }
// ErrorType fails the test if err is nil, or err is not the expected type. // ErrorType fails the test if err is nil, or err is not the expected type.
// Equivalent to Assert(t, cmp.ErrorType(err, expected)).
// //
// Expected can be one of: // Expected can be one of:
// a func(error) bool which returns true if the error is the expected type, // func(error) bool
// an instance of (or a pointer to) a struct of the expected type, // Function should return true if the error is the expected type.
// a pointer to an interface the error is expected to implement, // type struct{}, type &struct{}
// a reflect.Type of the expected struct or interface. // A struct or a pointer to a struct.
// // Fails if the error is not of the same type as expected.
// Equivalent to Assert(t, cmp.ErrorType(err, expected)). // type &interface{}
// A pointer to an interface type.
// Fails if err does not implement the interface.
// reflect.Type
// Fails if err does not implement the reflect.Type
func ErrorType(t TestingT, err error, expected interface{}, msgAndArgs ...interface{}) { func ErrorType(t TestingT, err error, expected interface{}, msgAndArgs ...interface{}) {
if ht, ok := t.(helperT); ok { if ht, ok := t.(helperT); ok {
ht.Helper() ht.Helper()

View File

@ -1,5 +1,5 @@
/*Package cmp provides Comparisons for Assert and Check*/ /*Package cmp provides Comparisons for Assert and Check*/
package cmp // import "gotest.tools/assert/cmp" package cmp // import "gotest.tools/v3/assert/cmp"
import ( import (
"fmt" "fmt"
@ -8,7 +8,7 @@ import (
"strings" "strings"
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
"gotest.tools/internal/format" "gotest.tools/v3/internal/format"
) )
// Comparison is a function which compares values and returns ResultSuccess if // Comparison is a function which compares values and returns ResultSuccess if
@ -16,11 +16,12 @@ import (
// Result will contain a message about why it failed. // Result will contain a message about why it failed.
type Comparison func() Result type Comparison func() Result
// DeepEqual compares two values using google/go-cmp (http://bit.do/go-cmp) // DeepEqual compares two values using google/go-cmp
// (https://godoc.org/github.com/google/go-cmp/cmp)
// and succeeds if the values are equal. // and succeeds if the values are equal.
// //
// The comparison can be customized using comparison Options. // The comparison can be customized using comparison Options.
// Package https://godoc.org/gotest.tools/assert/opt provides some additional // Package http://gotest.tools/assert/opt provides some additional
// commonly used Options. // commonly used Options.
func DeepEqual(x, y interface{}, opts ...cmp.Option) Comparison { func DeepEqual(x, y interface{}, opts ...cmp.Option) Comparison {
return func() (result Result) { return func() (result Result) {
@ -103,10 +104,10 @@ func Equal(x, y interface{}) Comparison {
return multiLineDiffResult(diff) return multiLineDiffResult(diff)
} }
return ResultFailureTemplate(` return ResultFailureTemplate(`
{{- .Data.x}} ( {{- printf "%v" .Data.x}} (
{{- with callArg 0 }}{{ formatNode . }} {{end -}} {{- with callArg 0 }}{{ formatNode . }} {{end -}}
{{- printf "%T" .Data.x -}} {{- printf "%T" .Data.x -}}
) != {{ .Data.y}} ( ) != {{ printf "%v" .Data.y}} (
{{- with callArg 1 }}{{ formatNode . }} {{end -}} {{- with callArg 1 }}{{ formatNode . }} {{end -}}
{{- printf "%T" .Data.y -}} {{- printf "%T" .Data.y -}}
)`, )`,
@ -241,10 +242,12 @@ func ErrorContains(err error, substring string) Comparison {
} }
} }
type causer interface {
Cause() error
}
func formatErrorMessage(err error) string { func formatErrorMessage(err error) string {
if _, ok := err.(interface { if _, ok := err.(causer); ok {
Cause() error
}); ok {
return fmt.Sprintf("%q\n%+v", err, err) return fmt.Sprintf("%q\n%+v", err, err)
} }
// This error was not wrapped with github.com/pkg/errors // This error was not wrapped with github.com/pkg/errors
@ -283,10 +286,16 @@ func isNil(obj interface{}, msgFunc func(reflect.Value) string) Comparison {
// ErrorType succeeds if err is not nil and is of the expected type. // ErrorType succeeds if err is not nil and is of the expected type.
// //
// Expected can be one of: // Expected can be one of:
// a func(error) bool which returns true if the error is the expected type, // func(error) bool
// an instance of (or a pointer to) a struct of the expected type, // Function should return true if the error is the expected type.
// a pointer to an interface the error is expected to implement, // type struct{}, type &struct{}
// a reflect.Type of the expected struct or interface. // A struct or a pointer to a struct.
// Fails if the error is not of the same type as expected.
// type &interface{}
// A pointer to an interface type.
// Fails if err does not implement the interface.
// reflect.Type
// Fails if err does not implement the reflect.Type
func ErrorType(err error, expected interface{}) Comparison { func ErrorType(err error, expected interface{}) Comparison {
return func() Result { return func() Result {
switch expectedType := expected.(type) { switch expectedType := expected.(type) {

View File

@ -6,7 +6,7 @@ import (
"go/ast" "go/ast"
"text/template" "text/template"
"gotest.tools/internal/source" "gotest.tools/v3/internal/source"
) )
// A Result of a Comparison. // A Result of a Comparison.

View File

@ -4,9 +4,9 @@ import (
"fmt" "fmt"
"go/ast" "go/ast"
"gotest.tools/assert/cmp" "gotest.tools/v3/assert/cmp"
"gotest.tools/internal/format" "gotest.tools/v3/internal/format"
"gotest.tools/internal/source" "gotest.tools/v3/internal/source"
) )
func runComparison( func runComparison(

10
vendor/gotest.tools/v3/go.mod vendored Normal file
View File

@ -0,0 +1,10 @@
module gotest.tools/v3
require (
github.com/google/go-cmp v0.3.0
github.com/pkg/errors v0.8.1
github.com/spf13/pflag v1.0.3
golang.org/x/tools v0.0.0-20190624222133-a101b041ded4
)
go 1.11

View File

@ -4,7 +4,7 @@ Original source: https://github.com/pmezard/go-difflib
This file is trimmed to only the parts used by this repository. This file is trimmed to only the parts used by this repository.
*/ */
package difflib // import "gotest.tools/internal/difflib" package difflib // import "gotest.tools/v3/internal/difflib"
func min(a, b int) int { func min(a, b int) int {
if a < b { if a < b {

View File

@ -6,7 +6,7 @@ import (
"strings" "strings"
"unicode" "unicode"
"gotest.tools/internal/difflib" "gotest.tools/v3/internal/difflib"
) )
const ( const (

View File

@ -1,4 +1,4 @@
package format // import "gotest.tools/internal/format" package format // import "gotest.tools/v3/internal/format"
import "fmt" import "fmt"

View File

@ -1,4 +1,4 @@
package source // import "gotest.tools/internal/source" package source // import "gotest.tools/v3/internal/source"
import ( import (
"bytes" "bytes"
@ -92,7 +92,9 @@ func nodePosition(fileset *token.FileSet, node ast.Node) token.Position {
return fileset.Position(node.Pos()) return fileset.Position(node.Pos())
} }
var goVersionBefore19 = func() bool { // GoVersionLessThan returns true if runtime.Version() is semantically less than
// version 1.minor.
func GoVersionLessThan(minor int64) bool {
version := runtime.Version() version := runtime.Version()
// not a release version // not a release version
if !strings.HasPrefix(version, "go") { if !strings.HasPrefix(version, "go") {
@ -103,9 +105,11 @@ var goVersionBefore19 = func() bool {
if len(parts) < 2 { if len(parts) < 2 {
return false return false
} }
minor, err := strconv.ParseInt(parts[1], 10, 32) actual, err := strconv.ParseInt(parts[1], 10, 32)
return err == nil && parts[0] == "1" && minor < 9 return err == nil && parts[0] == "1" && actual < minor
}() }
var goVersionBefore19 = GoVersionLessThan(9)
func getCallExprArgs(node ast.Node) ([]ast.Expr, error) { func getCallExprArgs(node ast.Node) ([]ast.Expr, error) {
visitor := &callExprVisitor{} visitor := &callExprVisitor{}