godogのエラの詳細を把握したい
runPickleの戻り値の時点ではerror型をもっている
code: go
func (s *suite) runPickle(pickle *messages.Pickle) (err error)
runPickeleの呼び出しをするconcurrentではboolになってしまう。
code: go
func (r *runner) concurrent(rate int) (failed bool)
concurrentで呼び出すときに失敗を判断するのはshouldFail関数
code: go
func (s *suite) shouldFail(err error) bool {
if err == nil {
return false
}
if err == ErrUndefined || err == ErrPending {
return s.strict
}
return true
}
OptionがstrictかどうかでUndefinedとPendingが許容するかどうか決まる。
しかしtesting.Tがどこかでエラーになってる。
code: go
if s.testingT != nil {
// Running scenario as a subtest.
s.testingT.Run(pickle.Name, func(t *testing.T) {
ctx, err = s.runSteps(ctx, pickle, pickle.Steps)
if err != nil {
t.Error(err)
}
})
} else {
ctx, err = s.runSteps(ctx, pickle, pickle.Steps)
}
errがあれば tがエラーになってしまっている。このためgo test経由で実行する場合にtesting.Tを渡すとエラーになってしまう。