Trait cucumber::writer::NonTransforming

source ·
pub trait NonTransforming { }
Expand description

Marker indicating that a Writer doesn’t transform or rearrange events.

It’s used to ensure that a Writers pipeline is built in the right order, avoiding situations like an event transformation isn’t done before it’s Repeated.

§Example

If you want to pipeline FailOnSkipped, Summarize and Repeat Writers, the code won’t compile because of the wrong pipelining order.

MyWorld::cucumber()
    .with_writer(
        // `Writer`s pipeline is constructed in a reversed order.
        writer::Basic::stdout()
            .fail_on_skipped() // Fails as `Repeat` will re-output skipped
            .repeat_failed()   // steps instead of failed ones.
            .summarized()
    )
    .run_and_exit("tests/features/readme")
    .await;
MyWorld::cucumber()
    .with_writer(
        // `Writer`s pipeline is constructed in a reversed order.
        writer::Basic::stdout()
            .repeat_failed()
            .fail_on_skipped() // Fails as `Summarize` will count skipped
            .summarized()      // steps instead of `failed` ones.
    )
    .run_and_exit("tests/features/readme")
    .await;
MyWorld::cucumber()
    .with_writer(
        // `Writer`s pipeline is constructed in a reversed order.
        writer::Basic::stdout() // And, finally, print them.
            .repeat_failed()    // Then, repeat failed ones once again.
            .summarized()       // Only then, count summary for them.
            .fail_on_skipped(), // First, transform skipped steps to failed.
    )
    .run_and_exit("tests/features/readme")
    .await;

Implementors§

source§

impl<L, R> NonTransforming for Tee<L, R>

source§

impl<L, R, F> NonTransforming for Or<L, R, F>

source§

impl<O: Write> NonTransforming for Basic<O>

source§

impl<O: Write> NonTransforming for Json<O>

Available on crate feature output-json only.
source§

impl<W, O: Write> NonTransforming for JUnit<W, O>

Available on crate feature output-junit only.
source§

impl<W, O: Write> NonTransforming for Libtest<W, O>

Available on crate feature libtest only.
source§

impl<W, Wr: NonTransforming> NonTransforming for Normalize<W, Wr>

source§

impl<Wr: NonTransforming> NonTransforming for Arbitrary<Wr>

source§

impl<Wr: NonTransforming> NonTransforming for Stats<Wr>

source§

impl<Wr: NonTransforming> NonTransforming for AssertNormalized<Wr>

source§

impl<Wr: NonTransforming> NonTransforming for Summarize<Wr>