Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,7 @@
"namespace": [
"fictional_hw",
"fictional_tech"
],
"feature": {
"fictional_hw": [
"humor",
"compute_accuracy"
],
"fictional_tech": [
"quantum"
]
},
"property": {
"fictional_tech": {
"technology": [
"auto_chef"
]
}
}
]
},
"providers": {
"fictional_hw": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,7 @@
"namespace": [
"fictional_tech",
"fictional_hw"
],
"feature": {},
"property": {}
]
},
"providers": {
"fictional_hw": {
Expand Down
4 changes: 0 additions & 4 deletions tests/commands/test_update_pyproject_toml.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@
from variantlib.commands.main import main
from variantlib.constants import PYPROJECT_TOML_TOP_KEY
from variantlib.constants import VARIANT_INFO_DEFAULT_PRIO_KEY
from variantlib.constants import VARIANT_INFO_FEATURE_KEY
from variantlib.constants import VARIANT_INFO_NAMESPACE_KEY
from variantlib.constants import VARIANT_INFO_PROPERTY_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_DATA_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_ENABLE_IF_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_PLUGIN_API_KEY
Expand All @@ -32,8 +30,6 @@ def test_update_pyproject_toml(
"test_namespace",
"foo",
],
VARIANT_INFO_FEATURE_KEY: ["foo::bar"],
VARIANT_INFO_PROPERTY_KEY: ["foo::bar::baz"],
},
VARIANT_INFO_PROVIDER_DATA_KEY: {
"test_namespace": {
Expand Down
12 changes: 4 additions & 8 deletions tests/plugins/test_loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -566,22 +566,18 @@ def test_package_defined_properties(include_aot_plugins: bool) -> None:
"second_namespace",
"private",
],
static_properties={
"private": {
"baz": ["v5", "v6"],
},
},
providers={
"test_namespace": ProviderInfo(
requires=["variantlib"], plugin_api="tests.mocked_plugins:MockedPluginA"
),
"second_namespace": ProviderInfo(
requires=["variantlib"],
build_requires=["variantlib"],
plugin_api="tests.mocked_plugins:MockedPluginB",
install_time=False,
),
"private": ProviderInfo(
install_time=False,
static_properties={
"baz": ["v5", "v6"],
},
),
},
)
Expand Down
90 changes: 24 additions & 66 deletions tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,16 +25,15 @@
from variantlib.constants import VALIDATION_NAMESPACE_REGEX
from variantlib.constants import VALIDATION_VALUE_REGEX
from variantlib.constants import VARIANT_INFO_DEFAULT_PRIO_KEY
from variantlib.constants import VARIANT_INFO_FEATURE_KEY
from variantlib.constants import VARIANT_INFO_NAMESPACE_KEY
from variantlib.constants import VARIANT_INFO_PROPERTY_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_BUILD_REQUIRES_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_DATA_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_ENABLE_IF_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_INSTALL_TIME_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_FEATURE_ORDER_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_OPTIONAL_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_PLUGIN_API_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_REQUIRES_KEY
from variantlib.constants import VARIANT_INFO_STATIC_PROPERTIES_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_STATIC_PROPERTIES_KEY
from variantlib.constants import VARIANTS_JSON_SCHEMA_KEY
from variantlib.constants import VARIANTS_JSON_SCHEMA_URL
from variantlib.constants import VARIANTS_JSON_VARIANT_DATA_KEY
Expand All @@ -56,7 +55,6 @@
from variantlib.variants_json import VariantsJson

from tests.test_pyproject_toml import PYPROJECT_TOML
from tests.test_pyproject_toml import PYPROJECT_TOML_MINIMAL
from tests.utils import get_combinations

if TYPE_CHECKING:
Expand Down Expand Up @@ -300,23 +298,20 @@ def test_validate_variant(optional: bool) -> None:
optional=optional,
),
"second_namespace": ProviderInfo(
requires=["variantlib"],
build_requires=["variantlib"],
plugin_api="tests.mocked_plugins:MockedPluginB",
optional=optional,
install_time=False,
),
"incompatible_namespace": ProviderInfo(
requires=["variantlib"],
plugin_api="tests.mocked_plugins:MockedPluginC",
optional=optional,
),
"private": ProviderInfo(
plugin_api="donotuseme",
optional=optional,
install_time=False,
static_properties={"build_type": ["debug", "release"]},
),
},
static_properties={"private": {"build_type": ["debug", "release"]}},
)

expected = {
Expand Down Expand Up @@ -353,9 +348,7 @@ def test_validate_variant(optional: bool) -> None:
assert not res.is_valid()


@pytest.mark.parametrize(
"pyproject_toml", [None, PYPROJECT_TOML, PYPROJECT_TOML_MINIMAL]
)
@pytest.mark.parametrize("pyproject_toml", [None, PYPROJECT_TOML])
@pytest.mark.parametrize("label", ["foo", "xy1.2"])
def test_make_variant_dist_info(
pyproject_toml: VariantsJsonDict | None,
Expand Down Expand Up @@ -387,50 +380,27 @@ def test_make_variant_dist_info(
VARIANT_INFO_PROVIDER_PLUGIN_API_KEY: "ns1_provider.plugin:NS1Plugin", # noqa: E501
},
"ns2": {
VARIANT_INFO_PROVIDER_REQUIRES_KEY: [
VARIANT_INFO_PROVIDER_BUILD_REQUIRES_KEY: [
"ns2_provider; python_version >= '3.11'",
"old_ns2_provider; python_version < '3.11'",
],
VARIANT_INFO_PROVIDER_PLUGIN_API_KEY: "ns2_provider:Plugin",
VARIANT_INFO_PROVIDER_OPTIONAL_KEY: True,
VARIANT_INFO_PROVIDER_INSTALL_TIME_KEY: False,
},
"ns3": {
VARIANT_INFO_PROVIDER_INSTALL_TIME_KEY: False,
VARIANT_INFO_PROVIDER_STATIC_PROPERTIES_KEY: {
"f1": ["v1", "v2"],
"f2": ["v3", "v4"],
},
VARIANT_INFO_PROVIDER_FEATURE_ORDER_KEY: ["f2", "f1"],
},
}
)
expected[VARIANT_INFO_DEFAULT_PRIO_KEY].update(
{
VARIANT_INFO_NAMESPACE_KEY: ["ns1", "ns2", "ns3"],
VARIANT_INFO_FEATURE_KEY: {"ns3": ["f2", "f1"]},
},
)
expected[VARIANT_INFO_STATIC_PROPERTIES_KEY] = {
"ns3": {
"f1": ["v1", "v2"],
"f2": ["v3", "v4"],
},
}

if pyproject_toml is PYPROJECT_TOML:
expected[VARIANT_INFO_DEFAULT_PRIO_KEY].update(
{
VARIANT_INFO_FEATURE_KEY: {
"ns1": ["f2"],
"ns2": ["f1", "f2"],
"ns3": ["f2", "f1"],
},
VARIANT_INFO_PROPERTY_KEY: {
"ns1": {
"f2": ["p1"],
},
"ns2": {
"f1": ["p2"],
},
},
}
)

assert (
json.loads(
Expand Down Expand Up @@ -651,12 +621,9 @@ def test_get_variant_label() -> None:
)


@pytest.mark.parametrize(
("install_time", "requires"), [(False, False), (False, True), (True, True)]
)
@pytest.mark.parametrize("install_time", [True, False])
def test_make_variant_dist_info_expand_aot_plugin_properties(
install_time: bool,
requires: bool,
) -> None:
vdesc = VariantDescription(
[
Expand All @@ -669,10 +636,10 @@ def test_make_variant_dist_info_expand_aot_plugin_properties(
namespace_priorities=["aot_plugin"],
providers={
"aot_plugin": ProviderInfo(
install_time=install_time,
optional=True,
plugin_api=plugin_api,
requires=["variantlib"] if requires else [],
requires=["variantlib"] if install_time else [],
build_requires=["variantlib"] if not install_time else [],
)
},
)
Expand All @@ -698,20 +665,14 @@ def test_make_variant_dist_info_expand_aot_plugin_properties(
}

provider_data = expected[VARIANT_INFO_PROVIDER_DATA_KEY]["aot_plugin"]
if requires:
if install_time:
provider_data[VARIANT_INFO_PROVIDER_REQUIRES_KEY] = ["variantlib"]
if not install_time:
provider_data[VARIANT_INFO_PROVIDER_INSTALL_TIME_KEY] = False
if requires and not install_time:
expected[VARIANT_INFO_DEFAULT_PRIO_KEY][VARIANT_INFO_FEATURE_KEY] = {
"aot_plugin": ["name1", "name2"],
}
expected[VARIANT_INFO_STATIC_PROPERTIES_KEY] = {
"aot_plugin": {
"name1": ["val1a", "val1b"],
"name2": ["val2a", "val2b", "val2c"],
},
else:
provider_data[VARIANT_INFO_PROVIDER_STATIC_PROPERTIES_KEY] = {
"name1": ["val1a", "val1b"],
"name2": ["val2a", "val2b", "val2c"],
}
provider_data[VARIANT_INFO_PROVIDER_FEATURE_ORDER_KEY] = ["name1", "name2"]

assert (
json.loads(
Expand All @@ -738,10 +699,9 @@ def test_make_variant_dist_info_invalid_aot_plugin_property() -> None:
namespace_priorities=["aot_plugin"],
providers={
"aot_plugin": ProviderInfo(
requires=["variantlib"],
build_requires=["variantlib"],
plugin_api=plugin_api,
optional=True,
install_time=False,
)
},
)
Expand Down Expand Up @@ -770,10 +730,9 @@ def test_make_variant_dist_info_invalid_aot_plugin_multi_value() -> None:
namespace_priorities=["aot_plugin"],
providers={
"aot_plugin": ProviderInfo(
requires=["variantlib"],
build_requires=["variantlib"],
plugin_api=plugin_api,
optional=True,
install_time=False,
)
},
)
Expand Down Expand Up @@ -801,9 +760,8 @@ def test_make_variant_dist_info_really_invalid_build_plugin() -> None:
namespace_priorities=["second_namespace"],
providers={
"second_namespace": ProviderInfo(
requires=["variantlib"],
build_requires=["variantlib"],
plugin_api=plugin_api,
install_time=False,
)
},
)
Expand Down
Loading
Loading