summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMasen Furer <m_github@0x26.net>2023-01-28 17:33:42 -0800
committerGitHub <noreply@github.com>2023-01-28 17:33:42 -0800
commit3295838a51cda058326c7ab29b26d89b7e9e70ac (patch)
treeb6fc5326c6873b27575373c98af355ba8090a402 /tests
parentacadf36d08c5732e36e1547ba716d2c094c525e7 (diff)
downloadtox-git-3295838a51cda058326c7ab29b26d89b7e9e70ac.tar.gz
Support recursive extras defined in pyproject.toml (#2905)
* test_package_pyproject: recursive extras Add regression test for issue #2904 * test_package_pyproject: when project deps has a self-referential extra the project depends on an extra defined within itself * Support recursive extras defined in pyproject.toml Expand extras that reference an extra of the same package name to respect local changes to package metadata. Fix #2904
Diffstat (limited to 'tests')
-rw-r--r--tests/tox_env/python/virtual_env/package/test_package_pyproject.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/tox_env/python/virtual_env/package/test_package_pyproject.py b/tests/tox_env/python/virtual_env/package/test_package_pyproject.py
index a8f6c9ed..0d6160a5 100644
--- a/tests/tox_env/python/virtual_env/package/test_package_pyproject.py
+++ b/tests/tox_env/python/virtual_env/package/test_package_pyproject.py
@@ -1,6 +1,7 @@
from __future__ import annotations
from pathlib import Path
+from textwrap import dedent
import pytest
@@ -92,6 +93,57 @@ def test_package_root_via_testenv(tox_project: ToxProjectCreator, demo_pkg_inlin
["A"],
id="deps_with_dynamic_optional_no_extra",
),
+ pytest.param(
+ dedent(
+ """
+ [project]
+ name='foo'
+ dependencies=['foo[alpha]']
+ optional-dependencies.alpha=['A']""",
+ ),
+ "",
+ ["A"],
+ id="deps_reference_extra",
+ ),
+ pytest.param(
+ dedent(
+ """
+ [project]
+ name='foo'
+ dependencies=['A']
+ optional-dependencies.alpha=['B']
+ optional-dependencies.beta=['foo[alpha]']""",
+ ),
+ "beta",
+ ["A", "B"],
+ id="deps_with_recursive_extra",
+ ),
+ pytest.param(
+ dedent(
+ """
+ [project]
+ name='foo'
+ dependencies=['A']
+ optional-dependencies.alpha=['B']
+ optional-dependencies.beta=['foo[alpha]']
+ optional-dependencies.delta=['foo[beta]', 'D']""",
+ ),
+ "delta",
+ ["A", "B", "D"],
+ id="deps_with_two_recursive_extra",
+ ),
+ pytest.param(
+ dedent(
+ """
+ [project]
+ name='foo'
+ optional-dependencies.alpha=['foo[beta]', 'A']
+ optional-dependencies.beta=['foo[alpha]', 'B']""",
+ ),
+ "alpha",
+ ["A", "B"],
+ id="deps_with_circular_recursive_extra",
+ ),
],
)
def test_pyproject_deps_from_static(