123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package failer
- import (
- "fmt"
- "sync"
- "github.com/onsi/ginkgo/types"
- )
- type Failer struct {
- lock *sync.Mutex
- failure types.SpecFailure
- state types.SpecState
- }
- func New() *Failer {
- return &Failer{
- lock: &sync.Mutex{},
- state: types.SpecStatePassed,
- }
- }
- func (f *Failer) Panic(location types.CodeLocation, forwardedPanic interface{}) {
- f.lock.Lock()
- defer f.lock.Unlock()
- if f.state == types.SpecStatePassed {
- f.state = types.SpecStatePanicked
- f.failure = types.SpecFailure{
- Message: "Test Panicked",
- Location: location,
- ForwardedPanic: fmt.Sprintf("%v", forwardedPanic),
- }
- }
- }
- func (f *Failer) Timeout(location types.CodeLocation) {
- f.lock.Lock()
- defer f.lock.Unlock()
- if f.state == types.SpecStatePassed {
- f.state = types.SpecStateTimedOut
- f.failure = types.SpecFailure{
- Message: "Timed out",
- Location: location,
- }
- }
- }
- func (f *Failer) Fail(message string, location types.CodeLocation) {
- f.lock.Lock()
- defer f.lock.Unlock()
- if f.state == types.SpecStatePassed {
- f.state = types.SpecStateFailed
- f.failure = types.SpecFailure{
- Message: message,
- Location: location,
- }
- }
- }
- func (f *Failer) Drain(componentType types.SpecComponentType, componentIndex int, componentCodeLocation types.CodeLocation) (types.SpecFailure, types.SpecState) {
- f.lock.Lock()
- defer f.lock.Unlock()
- failure := f.failure
- outcome := f.state
- if outcome != types.SpecStatePassed {
- failure.ComponentType = componentType
- failure.ComponentIndex = componentIndex
- failure.ComponentCodeLocation = componentCodeLocation
- }
- f.state = types.SpecStatePassed
- f.failure = types.SpecFailure{}
- return failure, outcome
- }
- func (f *Failer) Skip(message string, location types.CodeLocation) {
- f.lock.Lock()
- defer f.lock.Unlock()
- if f.state == types.SpecStatePassed {
- f.state = types.SpecStateSkipped
- f.failure = types.SpecFailure{
- Message: message,
- Location: location,
- }
- }
- }
|