22// 
33// See the COPYING file in the root project directory for full text. 
44
5- package  errors 
5+ package  api 
66
77import  (
88	"errors" 
@@ -11,6 +11,90 @@ import (
1111	"gopkg.in/yaml.v3" 
1212)
1313
14+ var  (
15+ 	// ErrFailure is the base error class for all errors that represent failed 
16+ 	// assertions when evaluating a test. 
17+ 	ErrFailure  =  errors .New ("assertion failed" )
18+ 	// ErrTimeoutExceeded is an ErrFailure when a test's execution exceeds a 
19+ 	// timeout length. 
20+ 	ErrTimeoutExceeded  =  fmt .Errorf ("%s: timeout exceeded" , ErrFailure )
21+ 	// ErrNotEqual is an ErrFailure when an expected thing doesn't equal an 
22+ 	// observed thing. 
23+ 	ErrNotEqual  =  fmt .Errorf ("%w: not equal" , ErrFailure )
24+ 	// ErrIn is an ErrFailure when a thing unexpectedly appears in an 
25+ 	// container. 
26+ 	ErrIn  =  fmt .Errorf ("%w: in" , ErrFailure )
27+ 	// ErrNotIn is an ErrFailure when an expected thing doesn't appear in an 
28+ 	// expected container. 
29+ 	ErrNotIn  =  fmt .Errorf ("%w: not in" , ErrFailure )
30+ 	// ErrNoneIn is an ErrFailure when none of a list of elements appears in an 
31+ 	// expected container. 
32+ 	ErrNoneIn  =  fmt .Errorf ("%w: none in" , ErrFailure )
33+ 	// ErrUnexpectedError is an ErrFailure when an unexpected error has 
34+ 	// occurred. 
35+ 	ErrUnexpectedError  =  fmt .Errorf ("%w: unexpected error" , ErrFailure )
36+ )
37+ 
38+ // TimeoutExceeded returns an ErrTimeoutExceeded when a test's execution 
39+ // exceeds a timeout length. The optional failure parameter indicates a failed 
40+ // assertion that occurred before a timeout was reached. 
41+ func  TimeoutExceeded (duration  string , failure  error ) error  {
42+ 	if  failure  !=  nil  {
43+ 		return  fmt .Errorf (
44+ 			"%w: timed out waiting for assertion to succeed (%s)" ,
45+ 			failure , duration ,
46+ 		)
47+ 	}
48+ 	return  fmt .Errorf ("%s (%s)" , ErrTimeoutExceeded , duration )
49+ }
50+ 
51+ // NotEqualLength returns an ErrNotEqual when an expected length doesn't 
52+ // equal an observed length. 
53+ func  NotEqualLength (exp , got  int ) error  {
54+ 	return  fmt .Errorf (
55+ 		"%w: expected length of %d but got %d" ,
56+ 		ErrNotEqual , exp , got ,
57+ 	)
58+ }
59+ 
60+ // NotEqual returns an ErrNotEqual when an expected thing doesn't equal an 
61+ // observed thing. 
62+ func  NotEqual (exp , got  interface {}) error  {
63+ 	return  fmt .Errorf ("%w: expected %v but got %v" , ErrNotEqual , exp , got )
64+ }
65+ 
66+ // In returns an ErrIn when a thing unexpectedly appears in a container. 
67+ func  In (element , container  interface {}) error  {
68+ 	return  fmt .Errorf (
69+ 		"%w: expected %v not to contain %v" ,
70+ 		ErrIn , container , element ,
71+ 	)
72+ }
73+ 
74+ // NotIn returns an ErrNotIn when an expected thing doesn't appear in an 
75+ // expected container. 
76+ func  NotIn (element , container  interface {}) error  {
77+ 	return  fmt .Errorf (
78+ 		"%w: expected %v to contain %v" ,
79+ 		ErrNotIn , container , element ,
80+ 	)
81+ }
82+ 
83+ // NoneIn returns an ErrNoneIn when none of a list of elements appears in an 
84+ // expected container. 
85+ func  NoneIn (elements , container  interface {}) error  {
86+ 	return  fmt .Errorf (
87+ 		"%w: expected %v to contain one of %v" ,
88+ 		ErrNoneIn , container , elements ,
89+ 	)
90+ }
91+ 
92+ // UnexpectedError returns an ErrUnexpectedError when a supplied error is not 
93+ // expected. 
94+ func  UnexpectedError (err  error ) error  {
95+ 	return  fmt .Errorf ("%w: %s" , ErrUnexpectedError , err )
96+ }
97+ 
1498var  (
1599	// ErrUnknownSourceType indicates that a From() function was called with an 
16100	// unknown source parameter type. 
@@ -199,3 +283,21 @@ func FileNotFound(path string, node *yaml.Node) error {
199283		ErrFileNotFound , path , node .Line , node .Column ,
200284	)
201285}
286+ 
287+ var  (
288+ 	// RuntimeError is the base error class for all errors occurring during 
289+ 	// runtime (and not during the parsing of a scenario or spec) 
290+ 	RuntimeError  =  errors .New ("runtime error" )
291+ 	// ErrRequiredFixture is returned when a required fixture has not 
292+ 	// been registered with the context. 
293+ 	ErrRequiredFixture  =  fmt .Errorf (
294+ 		"%w: required fixture missing" ,
295+ 		RuntimeError ,
296+ 	)
297+ )
298+ 
299+ // RequiredFixtureMissing returns an ErrRequiredFixture with the supplied 
300+ // fixture name 
301+ func  RequiredFixtureMissing (name  string ) error  {
302+ 	return  fmt .Errorf ("%w: %s" , ErrRequiredFixture , name )
303+ }
0 commit comments