summaryrefslogtreecommitdiff
path: root/vendor/github.com/stretchr/testify/suite
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/stretchr/testify/suite')
-rw-r--r--vendor/github.com/stretchr/testify/suite/doc.go70
-rw-r--r--vendor/github.com/stretchr/testify/suite/interfaces.go66
-rw-r--r--vendor/github.com/stretchr/testify/suite/stats.go46
-rw-r--r--vendor/github.com/stretchr/testify/suite/suite.go253
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
-}