diff options
Diffstat (limited to 'vendor/github.com/stretchr/testify/suite')
-rw-r--r-- | vendor/github.com/stretchr/testify/suite/doc.go | 70 | ||||
-rw-r--r-- | vendor/github.com/stretchr/testify/suite/interfaces.go | 66 | ||||
-rw-r--r-- | vendor/github.com/stretchr/testify/suite/stats.go | 46 | ||||
-rw-r--r-- | vendor/github.com/stretchr/testify/suite/suite.go | 253 |
4 files changed, 0 insertions, 435 deletions
diff --git a/vendor/github.com/stretchr/testify/suite/doc.go b/vendor/github.com/stretchr/testify/suite/doc.go deleted file mode 100644 index 05a562f72..000000000 --- a/vendor/github.com/stretchr/testify/suite/doc.go +++ /dev/null @@ -1,70 +0,0 @@ -// 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). -// -// The suite package does not support parallel tests. See [issue 934]. -// -// 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)) -// } -// -// [issue 934]: https://github.com/stretchr/testify/issues/934 -package suite diff --git a/vendor/github.com/stretchr/testify/suite/interfaces.go b/vendor/github.com/stretchr/testify/suite/interfaces.go deleted file mode 100644 index fed037d7f..000000000 --- a/vendor/github.com/stretchr/testify/suite/interfaces.go +++ /dev/null @@ -1,66 +0,0 @@ -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) - SetS(suite TestingSuite) -} - -// 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) -} - -// WithStats implements HandleStats, a function that will be executed -// when a test suite is finished. The stats contain information about -// the execution of that suite and its tests. -type WithStats interface { - HandleStats(suiteName string, stats *SuiteInformation) -} - -// SetupSubTest has a SetupSubTest method, which will run before each -// subtest in the suite. -type SetupSubTest interface { - SetupSubTest() -} - -// TearDownSubTest has a TearDownSubTest method, which will run after -// each subtest in the suite have been run. -type TearDownSubTest interface { - TearDownSubTest() -} diff --git a/vendor/github.com/stretchr/testify/suite/stats.go b/vendor/github.com/stretchr/testify/suite/stats.go deleted file mode 100644 index 261da37f7..000000000 --- a/vendor/github.com/stretchr/testify/suite/stats.go +++ /dev/null @@ -1,46 +0,0 @@ -package suite - -import "time" - -// SuiteInformation stats stores stats for the whole suite execution. -type SuiteInformation struct { - Start, End time.Time - TestStats map[string]*TestInformation -} - -// TestInformation stores information about the execution of each test. -type TestInformation struct { - TestName string - Start, End time.Time - Passed bool -} - -func newSuiteInformation() *SuiteInformation { - testStats := make(map[string]*TestInformation) - - return &SuiteInformation{ - TestStats: testStats, - } -} - -func (s SuiteInformation) start(testName string) { - s.TestStats[testName] = &TestInformation{ - TestName: testName, - Start: time.Now(), - } -} - -func (s SuiteInformation) end(testName string, passed bool) { - s.TestStats[testName].End = time.Now() - s.TestStats[testName].Passed = passed -} - -func (s SuiteInformation) Passed() bool { - for _, stats := range s.TestStats { - if !stats.Passed { - return false - } - } - - return true -} diff --git a/vendor/github.com/stretchr/testify/suite/suite.go b/vendor/github.com/stretchr/testify/suite/suite.go deleted file mode 100644 index 18443a91c..000000000 --- a/vendor/github.com/stretchr/testify/suite/suite.go +++ /dev/null @@ -1,253 +0,0 @@ -package suite - -import ( - "flag" - "fmt" - "os" - "reflect" - "regexp" - "runtime/debug" - "sync" - "testing" - "time" - - "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 - - mu sync.RWMutex - require *require.Assertions - t *testing.T - - // Parent suite to have access to the implemented methods of parent struct - s TestingSuite -} - -// T retrieves the current *testing.T context. -func (suite *Suite) T() *testing.T { - suite.mu.RLock() - defer suite.mu.RUnlock() - return suite.t -} - -// SetT sets the current *testing.T context. -func (suite *Suite) SetT(t *testing.T) { - suite.mu.Lock() - defer suite.mu.Unlock() - suite.t = t - suite.Assertions = assert.New(t) - suite.require = require.New(t) -} - -// SetS needs to set the current test suite as parent -// to get access to the parent methods -func (suite *Suite) SetS(s TestingSuite) { - suite.s = s -} - -// Require returns a require context for suite. -func (suite *Suite) Require() *require.Assertions { - suite.mu.Lock() - defer suite.mu.Unlock() - if suite.require == nil { - panic("'Require' must not be called before 'Run' or 'SetT'") - } - 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 { - suite.mu.Lock() - defer suite.mu.Unlock() - if suite.Assertions == nil { - panic("'Assert' must not be called before 'Run' or 'SetT'") - } - return suite.Assertions -} - -func recoverAndFailOnPanic(t *testing.T) { - t.Helper() - r := recover() - failOnPanic(t, r) -} - -func failOnPanic(t *testing.T, r interface{}) { - t.Helper() - 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() - - return oldT.Run(name, func(t *testing.T) { - suite.SetT(t) - defer suite.SetT(oldT) - - defer recoverAndFailOnPanic(t) - - if setupSubTest, ok := suite.s.(SetupSubTest); ok { - setupSubTest.SetupSubTest() - } - - if tearDownSubTest, ok := suite.s.(TearDownSubTest); ok { - defer tearDownSubTest.TearDownSubTest() - } - - subtest() - }) -} - -// Run takes a testing suite and runs all of the tests attached -// to it. -func Run(t *testing.T, suite TestingSuite) { - defer recoverAndFailOnPanic(t) - - suite.SetT(t) - suite.SetS(suite) - - var suiteSetupDone bool - - var stats *SuiteInformation - if _, ok := suite.(WithStats); ok { - stats = newSuiteInformation() - } - - tests := []testing.InternalTest{} - methodFinder := reflect.TypeOf(suite) - suiteName := methodFinder.Elem().Name() - - for i := 0; i < methodFinder.NumMethod(); i++ { - method := methodFinder.Method(i) - - 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 stats != nil { - stats.Start = time.Now() - } - - if setupAllSuite, ok := suite.(SetupAllSuite); ok { - setupAllSuite.SetupSuite() - } - - suiteSetupDone = true - } - - test := testing.InternalTest{ - Name: method.Name, - F: func(t *testing.T) { - parentT := suite.T() - suite.SetT(t) - defer recoverAndFailOnPanic(t) - defer func() { - t.Helper() - - r := recover() - - if stats != nil { - passed := !t.Failed() && r == nil - stats.end(method.Name, passed) - } - - if afterTestSuite, ok := suite.(AfterTest); ok { - afterTestSuite.AfterTest(suiteName, method.Name) - } - - if tearDownTestSuite, ok := suite.(TearDownTestSuite); ok { - tearDownTestSuite.TearDownTest() - } - - suite.SetT(parentT) - failOnPanic(t, r) - }() - - if setupTestSuite, ok := suite.(SetupTestSuite); ok { - setupTestSuite.SetupTest() - } - if beforeTestSuite, ok := suite.(BeforeTest); ok { - beforeTestSuite.BeforeTest(methodFinder.Elem().Name(), method.Name) - } - - if stats != nil { - stats.start(method.Name) - } - - method.Func.Call([]reflect.Value{reflect.ValueOf(suite)}) - }, - } - tests = append(tests, test) - } - if suiteSetupDone { - defer func() { - if tearDownAllSuite, ok := suite.(TearDownAllSuite); ok { - tearDownAllSuite.TearDownSuite() - } - - if suiteWithStats, measureStats := suite.(WithStats); measureStats { - stats.End = time.Now() - suiteWithStats.HandleStats(suiteName, stats) - } - }() - } - - runTests(t, tests) -} - -// 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) -} - -func runTests(t testing.TB, tests []testing.InternalTest) { - if len(tests) == 0 { - t.Log("warning: no tests to run") - return - } - - 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) - } -} - -type runner interface { - Run(name string, f func(t *testing.T)) bool -} |