test/variant.py: fix broken test (#49879)

This commit is contained in:
Harmen Stoppels 2025-04-04 11:13:50 +02:00 committed by GitHub
parent 65ec330af5
commit 522fa9dc62
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 19 deletions

View File

@ -757,7 +757,7 @@ def test_concretize_variant_default_with_multiple_defs(
@pytest.mark.parametrize(
"spec,variant_name,after",
"spec,variant_name,narrowed_type",
[
# dev_path is a special case
("foo dev_path=/path/to/source", "dev_path", SingleValuedVariant),
@ -767,26 +767,20 @@ def test_concretize_variant_default_with_multiple_defs(
("variant-values@1.0 v=foo", "v", SingleValuedVariant),
# simple, but with bool valued variant
("pkg-a bvv=true", "bvv", BoolValuedVariant),
# variant doesn't exist at version
("variant-values@4.0 v=bar", "v", spack.spec.InvalidVariantForSpecError),
# multiple definitions, so not yet knowable
("variant-values@2.0 v=bar", "v", VariantBase),
# takes the second definition, which overrides the single-valued one
("variant-values@2.0 v=bar", "v", MultiValuedVariant),
],
)
def test_substitute_abstract_variants(mock_packages, spec, variant_name, after):
def test_substitute_abstract_variants_narrowing(mock_packages, spec, variant_name, narrowed_type):
spec = Spec(spec)
spack.spec.substitute_abstract_variants(spec)
assert type(spec.variants[variant_name]) is narrowed_type
# all variants start out as VariantBase
assert isinstance(spec.variants[variant_name], VariantBase)
if issubclass(after, Exception):
# if we're checking for an error, use pytest.raises
with pytest.raises(after):
spack.spec.substitute_abstract_variants(spec)
else:
# ensure that the type of the variant on the spec has been narrowed (or not)
spack.spec.substitute_abstract_variants(spec)
assert isinstance(spec.variants[variant_name], after)
def test_substitute_abstract_variants_failure(mock_packages):
with pytest.raises(spack.spec.InvalidVariantForSpecError):
# variant doesn't exist at version
spack.spec.substitute_abstract_variants(Spec("variant-values@4.0 v=bar"))
def test_abstract_variant_satisfies_abstract_abstract():

View File

@ -14,9 +14,9 @@ class VariantValues(Package):
version("2.0", md5="b2472aae70f542116d616e634cb3ff35")
version("3.0", md5="d616e634cb3ff35b2472aae70f542116")
variant("v", default="foo", values=["foo"], when="@1.0")
variant("v", default="foo", values=["foo"], multi=False, when="@1.0")
variant("v", default="foo", values=["foo", "bar"], when="@2.0")
variant("v", default="foo", values=["foo", "bar"], multi=False, when="@2.0")
# this overrides the prior definition entirely
variant("v", default="bar", values=["foo", "bar"], when="@2.0:3.0")
variant("v", default="bar", values=["foo", "bar"], multi=True, when="@2.0:3.0")