Ensure tox_extend_envs
list can be read twice
#3598
Merged
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.
Previously (PR #3591) a new hook point was added. The tests checked that it works well with the
tox config
andtox list
commands. However,tox run
turned out to have a problem — it would complain that there's no such env, when invoked:Turned out, this was because the config object is being interated twice in some subcommands. This in turn iterates over the discovered additional ephemeral environments list object. The implementation passes an iterator into it and so when it's first accessed, it's exhausted and the second attempt does not give the same envs, causing inconsistency.
The patch solves this by using
itertools.tee()
, making sure that the underlying iterable is always cached and it's possible to repeat iteration as many times as possible without loosing the data in the process.tox -e fix
)docs/changelog
folder