vendor: add github.com/stretchr/testify/suite
This commit is contained in:
parent
42efce2811
commit
32844d605a
5 changed files with 282 additions and 2 deletions
|
|
@ -1,11 +1,13 @@
|
||||||
package store
|
package store
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
|
||||||
"github.com/stretchr/testify/suite"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/suite"
|
||||||
|
|
||||||
|
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
||||||
)
|
)
|
||||||
|
|
||||||
//struct for sharing state between tests
|
//struct for sharing state between tests
|
||||||
|
|
|
||||||
65
vendor/github.com/stretchr/testify/suite/doc.go
generated
vendored
Normal file
65
vendor/github.com/stretchr/testify/suite/doc.go
generated
vendored
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
// Package suite contains logic for creating testing suite structs
|
||||||
|
// and running the methods on those structs as tests. The most useful
|
||||||
|
// piece of this package is that you can create setup/teardown methods
|
||||||
|
// on your testing suites, which will run before/after the whole suite
|
||||||
|
// or individual tests (depending on which interface(s) you
|
||||||
|
// implement).
|
||||||
|
//
|
||||||
|
// A testing suite is usually built by first extending the built-in
|
||||||
|
// suite functionality from suite.Suite in testify. Alternatively,
|
||||||
|
// you could reproduce that logic on your own if you wanted (you
|
||||||
|
// just need to implement the TestingSuite interface from
|
||||||
|
// suite/interfaces.go).
|
||||||
|
//
|
||||||
|
// After that, you can implement any of the interfaces in
|
||||||
|
// suite/interfaces.go to add setup/teardown functionality to your
|
||||||
|
// suite, and add any methods that start with "Test" to add tests.
|
||||||
|
// Methods that do not match any suite interfaces and do not begin
|
||||||
|
// with "Test" will not be run by testify, and can safely be used as
|
||||||
|
// helper methods.
|
||||||
|
//
|
||||||
|
// Once you've built your testing suite, you need to run the suite
|
||||||
|
// (using suite.Run from testify) inside any function that matches the
|
||||||
|
// identity that "go test" is already looking for (i.e.
|
||||||
|
// func(*testing.T)).
|
||||||
|
//
|
||||||
|
// Regular expression to select test suites specified command-line
|
||||||
|
// argument "-run". Regular expression to select the methods
|
||||||
|
// of test suites specified command-line argument "-m".
|
||||||
|
// Suite object has assertion methods.
|
||||||
|
//
|
||||||
|
// A crude example:
|
||||||
|
// // Basic imports
|
||||||
|
// import (
|
||||||
|
// "testing"
|
||||||
|
// "github.com/stretchr/testify/assert"
|
||||||
|
// "github.com/stretchr/testify/suite"
|
||||||
|
// )
|
||||||
|
//
|
||||||
|
// // Define the suite, and absorb the built-in basic suite
|
||||||
|
// // functionality from testify - including a T() method which
|
||||||
|
// // returns the current testing context
|
||||||
|
// type ExampleTestSuite struct {
|
||||||
|
// suite.Suite
|
||||||
|
// VariableThatShouldStartAtFive int
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // Make sure that VariableThatShouldStartAtFive is set to five
|
||||||
|
// // before each test
|
||||||
|
// func (suite *ExampleTestSuite) SetupTest() {
|
||||||
|
// suite.VariableThatShouldStartAtFive = 5
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // All methods that begin with "Test" are run as tests within a
|
||||||
|
// // suite.
|
||||||
|
// func (suite *ExampleTestSuite) TestExample() {
|
||||||
|
// assert.Equal(suite.T(), 5, suite.VariableThatShouldStartAtFive)
|
||||||
|
// suite.Equal(5, suite.VariableThatShouldStartAtFive)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // In order for 'go test' to run this suite, we need to create
|
||||||
|
// // a normal test function and pass our suite to suite.Run
|
||||||
|
// func TestExampleTestSuite(t *testing.T) {
|
||||||
|
// suite.Run(t, new(ExampleTestSuite))
|
||||||
|
// }
|
||||||
|
package suite
|
||||||
46
vendor/github.com/stretchr/testify/suite/interfaces.go
generated
vendored
Normal file
46
vendor/github.com/stretchr/testify/suite/interfaces.go
generated
vendored
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
package suite
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
// TestingSuite can store and return the current *testing.T context
|
||||||
|
// generated by 'go test'.
|
||||||
|
type TestingSuite interface {
|
||||||
|
T() *testing.T
|
||||||
|
SetT(*testing.T)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetupAllSuite has a SetupSuite method, which will run before the
|
||||||
|
// tests in the suite are run.
|
||||||
|
type SetupAllSuite interface {
|
||||||
|
SetupSuite()
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetupTestSuite has a SetupTest method, which will run before each
|
||||||
|
// test in the suite.
|
||||||
|
type SetupTestSuite interface {
|
||||||
|
SetupTest()
|
||||||
|
}
|
||||||
|
|
||||||
|
// TearDownAllSuite has a TearDownSuite method, which will run after
|
||||||
|
// all the tests in the suite have been run.
|
||||||
|
type TearDownAllSuite interface {
|
||||||
|
TearDownSuite()
|
||||||
|
}
|
||||||
|
|
||||||
|
// TearDownTestSuite has a TearDownTest method, which will run after
|
||||||
|
// each test in the suite.
|
||||||
|
type TearDownTestSuite interface {
|
||||||
|
TearDownTest()
|
||||||
|
}
|
||||||
|
|
||||||
|
// BeforeTest has a function to be executed right before the test
|
||||||
|
// starts and receives the suite and test names as input
|
||||||
|
type BeforeTest interface {
|
||||||
|
BeforeTest(suiteName, testName string)
|
||||||
|
}
|
||||||
|
|
||||||
|
// AfterTest has a function to be executed right after the test
|
||||||
|
// finishes and receives the suite and test names as input
|
||||||
|
type AfterTest interface {
|
||||||
|
AfterTest(suiteName, testName string)
|
||||||
|
}
|
||||||
166
vendor/github.com/stretchr/testify/suite/suite.go
generated
vendored
Normal file
166
vendor/github.com/stretchr/testify/suite/suite.go
generated
vendored
Normal file
|
|
@ -0,0 +1,166 @@
|
||||||
|
package suite
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"reflect"
|
||||||
|
"regexp"
|
||||||
|
"runtime/debug"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
var allTestsFilter = func(_, _ string) (bool, error) { return true, nil }
|
||||||
|
var matchMethod = flag.String("testify.m", "", "regular expression to select tests of the testify suite to run")
|
||||||
|
|
||||||
|
// Suite is a basic testing suite with methods for storing and
|
||||||
|
// retrieving the current *testing.T context.
|
||||||
|
type Suite struct {
|
||||||
|
*assert.Assertions
|
||||||
|
require *require.Assertions
|
||||||
|
t *testing.T
|
||||||
|
}
|
||||||
|
|
||||||
|
// T retrieves the current *testing.T context.
|
||||||
|
func (suite *Suite) T() *testing.T {
|
||||||
|
return suite.t
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetT sets the current *testing.T context.
|
||||||
|
func (suite *Suite) SetT(t *testing.T) {
|
||||||
|
suite.t = t
|
||||||
|
suite.Assertions = assert.New(t)
|
||||||
|
suite.require = require.New(t)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Require returns a require context for suite.
|
||||||
|
func (suite *Suite) Require() *require.Assertions {
|
||||||
|
if suite.require == nil {
|
||||||
|
suite.require = require.New(suite.T())
|
||||||
|
}
|
||||||
|
return suite.require
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assert returns an assert context for suite. Normally, you can call
|
||||||
|
// `suite.NoError(expected, actual)`, but for situations where the embedded
|
||||||
|
// methods are overridden (for example, you might want to override
|
||||||
|
// assert.Assertions with require.Assertions), this method is provided so you
|
||||||
|
// can call `suite.Assert().NoError()`.
|
||||||
|
func (suite *Suite) Assert() *assert.Assertions {
|
||||||
|
if suite.Assertions == nil {
|
||||||
|
suite.Assertions = assert.New(suite.T())
|
||||||
|
}
|
||||||
|
return suite.Assertions
|
||||||
|
}
|
||||||
|
|
||||||
|
func failOnPanic(t *testing.T) {
|
||||||
|
r := recover()
|
||||||
|
if r != nil {
|
||||||
|
t.Errorf("test panicked: %v\n%s", r, debug.Stack())
|
||||||
|
t.FailNow()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run provides suite functionality around golang subtests. It should be
|
||||||
|
// called in place of t.Run(name, func(t *testing.T)) in test suite code.
|
||||||
|
// The passed-in func will be executed as a subtest with a fresh instance of t.
|
||||||
|
// Provides compatibility with go test pkg -run TestSuite/TestName/SubTestName.
|
||||||
|
func (suite *Suite) Run(name string, subtest func()) bool {
|
||||||
|
oldT := suite.T()
|
||||||
|
defer suite.SetT(oldT)
|
||||||
|
return oldT.Run(name, func(t *testing.T) {
|
||||||
|
suite.SetT(t)
|
||||||
|
subtest()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run takes a testing suite and runs all of the tests attached
|
||||||
|
// to it.
|
||||||
|
func Run(t *testing.T, suite TestingSuite) {
|
||||||
|
suite.SetT(t)
|
||||||
|
defer failOnPanic(t)
|
||||||
|
|
||||||
|
suiteSetupDone := false
|
||||||
|
|
||||||
|
methodFinder := reflect.TypeOf(suite)
|
||||||
|
tests := []testing.InternalTest{}
|
||||||
|
for index := 0; index < methodFinder.NumMethod(); index++ {
|
||||||
|
method := methodFinder.Method(index)
|
||||||
|
ok, err := methodFilter(method.Name)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintf(os.Stderr, "testify: invalid regexp for -m: %s\n", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
if !ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if !suiteSetupDone {
|
||||||
|
if setupAllSuite, ok := suite.(SetupAllSuite); ok {
|
||||||
|
setupAllSuite.SetupSuite()
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
if tearDownAllSuite, ok := suite.(TearDownAllSuite); ok {
|
||||||
|
tearDownAllSuite.TearDownSuite()
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
suiteSetupDone = true
|
||||||
|
}
|
||||||
|
test := testing.InternalTest{
|
||||||
|
Name: method.Name,
|
||||||
|
F: func(t *testing.T) {
|
||||||
|
parentT := suite.T()
|
||||||
|
suite.SetT(t)
|
||||||
|
defer failOnPanic(t)
|
||||||
|
|
||||||
|
if setupTestSuite, ok := suite.(SetupTestSuite); ok {
|
||||||
|
setupTestSuite.SetupTest()
|
||||||
|
}
|
||||||
|
if beforeTestSuite, ok := suite.(BeforeTest); ok {
|
||||||
|
beforeTestSuite.BeforeTest(methodFinder.Elem().Name(), method.Name)
|
||||||
|
}
|
||||||
|
defer func() {
|
||||||
|
if afterTestSuite, ok := suite.(AfterTest); ok {
|
||||||
|
afterTestSuite.AfterTest(methodFinder.Elem().Name(), method.Name)
|
||||||
|
}
|
||||||
|
if tearDownTestSuite, ok := suite.(TearDownTestSuite); ok {
|
||||||
|
tearDownTestSuite.TearDownTest()
|
||||||
|
}
|
||||||
|
suite.SetT(parentT)
|
||||||
|
}()
|
||||||
|
method.Func.Call([]reflect.Value{reflect.ValueOf(suite)})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
tests = append(tests, test)
|
||||||
|
}
|
||||||
|
runTests(t, tests)
|
||||||
|
}
|
||||||
|
|
||||||
|
func runTests(t testing.TB, tests []testing.InternalTest) {
|
||||||
|
r, ok := t.(runner)
|
||||||
|
if !ok { // backwards compatibility with Go 1.6 and below
|
||||||
|
if !testing.RunTests(allTestsFilter, tests) {
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
r.Run(test.Name, test.F)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filtering method according to set regular expression
|
||||||
|
// specified command-line argument -m
|
||||||
|
func methodFilter(name string) (bool, error) {
|
||||||
|
if ok, _ := regexp.MatchString("^Test", name); !ok {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
return regexp.MatchString(*matchMethod, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
type runner interface {
|
||||||
|
Run(name string, f func(t *testing.T)) bool
|
||||||
|
}
|
||||||
1
vendor/modules.txt
vendored
1
vendor/modules.txt
vendored
|
|
@ -80,6 +80,7 @@ github.com/pmezard/go-difflib/difflib
|
||||||
# github.com/stretchr/testify v1.4.0
|
# github.com/stretchr/testify v1.4.0
|
||||||
github.com/stretchr/testify/assert
|
github.com/stretchr/testify/assert
|
||||||
github.com/stretchr/testify/require
|
github.com/stretchr/testify/require
|
||||||
|
github.com/stretchr/testify/suite
|
||||||
# golang.org/x/net v0.0.0-20200202094626-16171245cfb2
|
# golang.org/x/net v0.0.0-20200202094626-16171245cfb2
|
||||||
golang.org/x/net/http/httpproxy
|
golang.org/x/net/http/httpproxy
|
||||||
golang.org/x/net/idna
|
golang.org/x/net/idna
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue