First new unit test passes

This commit is contained in:
Philip Sakievich 2025-03-25 22:28:30 -06:00 committed by psakiev
parent 5a2182af3f
commit c0e4d2e3cf
3 changed files with 11 additions and 6 deletions

View File

@ -2901,14 +2901,17 @@ def virtual_providers(self):
def define_version_constraints(self):
"""Define what version_satisfies(...) means in ASP logic."""
# TODO(psakiev)
for pkg_name, versions in sorted(self.possible_versions.items()):
for v in versions:
if v in self.git_commit_versions[pkg_name]:
self.gen.fact(fn.pkg_fact(pkg_name, fn.version_needs_commit(v)))
self.gen.newline()
for pkg_name, versions in sorted(self.version_constraints):
# generate facts for each package constraint and the version
# that satisfies it
for v in sorted(v for v in self.possible_versions[pkg_name] if v.satisfies(versions)):
self.gen.fact(fn.pkg_fact(pkg_name, fn.version_satisfies(versions, v)))
if v in self.git_commit_versions[pkg_name]:
self.gen.fact(fn.pkg_fact(pkg_name, fn.version_needs_commit(v)))
self.gen.newline()
def collect_virtual_constraints(self):

View File

@ -336,6 +336,7 @@ attr("node_version_satisfies", node(ID, Package), Constraint)
pkg_fact(Package, version_satisfies(Constraint, Version)).
% Specs with a commit variant can't use versions that don't need commits
error(10, "Cannot use commit variant with '{0}@{1}'", Package, Version)
:- attr("version", node(ID, Package), Version),
not pkg_fact(Package, version_needs_commit(Version)),
attr("variant_value", node(ID, Package), "commit", _).

View File

@ -2730,11 +2730,12 @@ def test_correct_external_is_selected_from_packages_yaml(self, mutable_config):
def test_phil_add_git_based_version_must_exist_to_use_ref(self):
s = spack.concretize.concretize_one(f"git-ref-package commit={'a' * 40}")
assert s.satisifes("@main")
assert s.satisfies("@main")
#gmake should fail, only has sha256
with pytest.raises(AssertionError):
s = spack.concretize.concretize_one(f"gmake={'a' * 40}")
with pytest.raises(spack.error.UnsatisfiableSpecError) as e:
s = spack.concretize.concretize_one(f"gmake commit={'a' * 40}")
assert "Cannot use commit variant with" in e.value.message
@pytest.mark.usefixtures("mutable_config", "mock_packages", "do_not_check_runtimes_on_reuse")