cucumber-attic / cucumber-engine

Shared go binary that can be used by all language implementations
MIT License
6 stars 0 forks source link

support retry #6

Open charlierudolph opened 6 years ago

charlierudolph commented 6 years ago

Support retry (which in Cucumber-Ruby is implemented in the filter pipeline)

@brasmusson @mattwynne can you please give more detail or tag someone who can?

mattwynne commented 6 years ago

The retry feature in cucumber-ruby uses two extension points. Filters (which I described in #5) and events.

Here's the filter for retry: https://github.com/cucumber/cucumber-ruby/blob/master/lib/cucumber/filters/retry.rb

The filter (which sits on the chain between the compiler and the runner) listens for the test_case_finished event and, if the test case failed, pumps it down the chain and into the runner again.

Bear in mind that everything is synchronous / single-threaded in cucumber-ruby, which is why this works.

It makes some of the old formatters, which weren't written with this in mind, go pretty crazy!