| 20.2 |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (missing warn) |
— |
| 20.2.1 |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (missing warn) |
— |
| 20.2.2 |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (missing warn) |
— |
| 20.2.3 |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (missing warn) |
— |
| 20.2.4 |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (deps missing) |
AssertionError (missing warn) |
— |
| 20.3 |
pass |
pass |
pass |
pass |
pass |
AssertionError (older extra warn) |
AssertionError (older extra warn) |
pass |
pass |
pass |
— |
| 20.3.1 |
pass |
pass |
pass |
pass |
pass |
AssertionError (older extra warn) |
AssertionError (older extra warn) |
pass |
pass |
pass |
— |
| 20.3.2 |
pass |
pass |
pass |
pass |
pass |
AssertionError (older extra warn) |
AssertionError (older extra warn) |
pass |
pass |
pass |
— |
| 20.3.3 |
pass |
pass |
pass |
pass |
pass |
AssertionError (older extra warn) |
AssertionError (older extra warn) |
pass |
pass |
pass |
— |
| 20.3.4 |
pass |
pass |
pass |
pass |
pass |
AssertionError (older extra warn) |
AssertionError (older extra warn) |
pass |
pass |
pass |
— |
| 21.0 |
pass |
pass |
pass |
pass |
pass |
AssertionError (older extra warn) |
AssertionError (older extra warn) |
pass |
pass |
pass |
— |
| 21.0.1 |
pass |
pass |
pass |
pass |
pass |
AssertionError (older extra warn) |
AssertionError (older extra warn) |
pass |
pass |
pass |
— |
| 21.1 |
pass |
pass |
pass |
pass |
pass |
AssertionError (older extra warn) |
AssertionError (older extra warn) |
pass |
pass |
pass |
— |
| 21.1.1 |
pass |
pass |
pass |
pass |
pass |
AssertionError (older extra warn) |
AssertionError (older extra warn) |
pass |
pass |
pass |
— |
| 21.1.2 |
pass |
pass |
pass |
pass |
pass |
AssertionError (older extra warn) |
AssertionError (older extra warn) |
pass |
pass |
pass |
— |
| 21.1.3 |
pass |
pass |
pass |
pass |
pass |
AssertionError (older extra warn) |
AssertionError (older extra warn) |
pass |
pass |
pass |
— |
Context
After #14157, self-referential extras is now documented as an official feature (supported unofficially since v21.2), #14157 also introduced two simple test cases into
tests/functional/test_install_extras.py:test_install_self_referential_extras[separate-specifiers]test_install_self_referential_extras[combined-specifier]The test cases were quite simple - in fact they pass with
v20.3 - v21.1.3.Proposal
Add 9 more test cases to cover expected behaviour and prevent regression.
Should pass with 20.3+
pkg[a]with an unrelated third-party dep in the same extra.pkg[a]is already installed, installingpkg[all]with the same version adds only the missing deps.pkg[missing]) must raise a warning as usual.dep==1to requiringdep==2) must bumpdepto version 2.adepends on extraband vice versa) must resolve normally (pip install pkg[a]installs dependencies from both extras).Should pass with 21.2+
7 & 8. upgrade-different-extras (two scenarios: had-no-extra or had-different-extras) — with an older pkg already installed (with no extras defined or with different extras defined and installed), upgrading to a new version with an
allextra should: 1) pull new deps and 2) downgrade an existing dep.Should pass with 24.1+
"all": ["pkg[x-y]"]to install extra defined asx_yinpyproject.toml.Local Test Results
noxfile_self_ref_extras.py20.2 – 21.1.3 (before full support)
21.2 - 26.1.2