// 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
