Skip to content

Feature request: add flag to stop repetitions at first failure. #72

Description

@unidual

Rationale: when tracking flaky tests, --repeat is useful, but may be wasteful (especially in continuous integration). In most cases, it would be enough to stop at first failure.

May we add a flag to have this behavior, e.g. --stop-repeat-after-failure?

Activity

  1. pbos commented on Dec 17, 2019

    @pbos
    Contributor

    The resource waste of --repeat without stopping would only be high if the flaky tests use significantly more resources than the passing ones (especially since the passing ones would always have to repeat N times). Hopefully this isn't the case for your test suite in general.

    Would the semantics for --gtest_break_on_failure be sufficient for your intended use case (stop running gtest-parallel when any test fails)? I'm a bit hesitant to add flags that don't have a corresponding --gtest ones. I can see --gtest_break_on_failure being useful locally as you can start looking into the first detected failure without having to ctrl+c to abort execution.

  2. unidual commented on Dec 20, 2019

    @unidual
    Author

    Context: running a handful of tests a lot of time. If one of the test if flaky at 3%, first failure will appear on average at 33th try. With 1000 iterations, that's 967 more than needed!

    --gtest_break_on_failure is not an ideal fit, since we still want to detect all tests failing at least once.

    I agree this is not specific to gtest-parallel. Opened google/googletest#2645

  3. pbos commented on Dec 20, 2019

    @pbos
    Contributor

    Thanks, do let me know what the outcome of that is as I'm more inclined to consider upstream flags. I was more thinking if you run 100 tests 100 times and only one of them is flaky, that 33th time only lowers the total number of iterations from 10000 to 9967, at which point the savings are less than 1%.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions