Do not allow Fallback Mode when the CI node was retried to avoid running the wrong set of tests #100
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
You run tests in Queue Mode with flag
KNAPSACK_PRO_FIXED_TEST_SUITE_SPLIT=trueor Regular Mode with the flagKNAPSACK_PRO_FIXED_TEST_SUITE_SPLIT=true(default).How to reproduce race condition:
Solution
knapsack_pro should not allow running tests in Fallback Mode in the case when CI node was retried.
Some of CI providers expose ENV variable that knapsack_pro can read so it will know that Fallback Mode is not allowed.
This PR adds support for Buildkite CI env var
BUILDKITE_RETRY_COUNTthat has value1when CI node was retried.How to fix your CI config
KNAPSACK_PRO_CI_NODE_RETRY_COUNT=1when failed CI node is restarted.If you can't do it then please don't use retrying single failed CI node. Instead, you should retry the whole CI build to be sure that the whole test suite is passing green. In the case of Fallback Mode starting on any parallel CI nodes the knapsack_pro ensures each test file is executed at least once so you can be sure the whole test suite is green (passing).
If you really need to use retry failed CI node then you can disable fallback mode completely
KNAPSACK_PRO_FALLBACK_MODE_ENABLED=false. Thanks to that tests won't run when a connection with Knapsack Pro API is lost. Instead, exception will be raised.