Ideas for facts that will close the loop

This commit is contained in:
Philip Sakievich 2025-04-03 22:44:08 -06:00 committed by psakiev
parent 9dc57d2864
commit f85329e792
6 changed files with 22 additions and 6 deletions

View File

@ -3125,7 +3125,6 @@ def setup(
version = max(versions.keys()) version = max(versions.keys())
spec.versions = spack.version.VersionList([version]) spec.versions = spack.version.VersionList([version])
self.gen = ProblemInstanceBuilder() self.gen = ProblemInstanceBuilder()
compiler_parser = CompilerParser(configuration=spack.config.CONFIG).with_input_specs(specs) compiler_parser = CompilerParser(configuration=spack.config.CONFIG).with_input_specs(specs)
@ -3203,6 +3202,10 @@ def setup(
allow_deprecated=allow_deprecated, require_checksum=checksummed allow_deprecated=allow_deprecated, require_checksum=checksummed
) )
self.gen.h1("Infinity Versions")
for i, v in enumerate(spack.version.infinity_versions):
self.gen.fact(fn.infinity_version(v, i))
self.gen.h1("Package Constraints") self.gen.h1("Package Constraints")
for pkg in sorted(self.pkgs): for pkg in sorted(self.pkgs):
self.gen.h2("Package rules: %s" % pkg) self.gen.h2("Package rules: %s" % pkg)

View File

@ -356,6 +356,10 @@ error(10, "Commit '{0}' must match package.py value '{1}' for '{2}@={3}'", Vsha,
Vsha == Psha, Vsha == Psha,
VersionA != VersionB. VersionA != VersionB.
% rule that says if a spec has a commit choose the max version that can accept a commit
% rule that says if a constraint is on a commit and a version matches that commit then the constraint is on the version
#defined version_satisfies/3. #defined version_satisfies/3.
#defined deprecated_versions_not_allowed/0. #defined deprecated_versions_not_allowed/0.
#defined deprecated_version/2. #defined deprecated_version/2.

View File

@ -617,7 +617,7 @@ def _nresults(_qresult):
@pytest.mark.usefixtures("install_mockery", "mock_fetch", "mutable_mock_env_path") @pytest.mark.usefixtures("install_mockery", "mock_fetch", "mutable_mock_env_path")
def test_find_based_on_commit_sha(mock_git_version_info, monkeypatch): def test_phil_find_based_on_commit_sha(mock_git_version_info, monkeypatch):
repo_path, filename, commits = mock_git_version_info repo_path, filename, commits = mock_git_version_info
file_url = pathlib.Path(repo_path).as_uri() file_url = pathlib.Path(repo_path).as_uri()

View File

@ -2729,13 +2729,13 @@ def test_correct_external_is_selected_from_packages_yaml(self, mutable_config):
assert s.satisfies("%clang") assert s.satisfies("%clang")
assert s.prefix == "/tmp/prefix2" assert s.prefix == "/tmp/prefix2"
def test_git_based_version_must_exist_to_use_ref(self): def test_phil_git_based_version_must_exist_to_use_ref(self):
# gmake should fail, only has sha256 # gmake should fail, only has sha256
with pytest.raises(spack.error.UnsatisfiableSpecError) as e: with pytest.raises(spack.error.UnsatisfiableSpecError) as e:
spack.concretize.concretize_one(f"gmake commit={'a' * 40}") spack.concretize.concretize_one(f"gmake commit={'a' * 40}")
assert "Cannot use commit variant with" in e.value.message assert "Cannot use commit variant with" in e.value.message
def test_commit_variant_in_absence_of_version_selects_max_infinity_version(self): def test_phil_commit_variant_in_absence_of_version_selects_max_infinity_version(self):
spec = spack.concretize.concretize_one(f"git-ref-package commit={'a' * 40}") spec = spack.concretize.concretize_one(f"git-ref-package commit={'a' * 40}")
assert spec.satisfies("@develop") assert spec.satisfies("@develop")
@ -3315,7 +3315,7 @@ def test_phil_spec_with_commit_interacts_with_lookup(mock_git_version_info, monk
@pytest.mark.usefixtures("mutable_config", "mock_packages", "do_not_check_runtimes_on_reuse") @pytest.mark.usefixtures("mutable_config", "mock_packages", "do_not_check_runtimes_on_reuse")
@pytest.mark.parametrize("version_str", [f"git.{'a' * 40}=main", "git.2.1.5=main"]) @pytest.mark.parametrize("version_str", [f"git.{'a' * 40}=main", "git.2.1.5=main"])
def test_relationship_git_versions_and_commit_variant(version_str): def test_phil_relationship_git_versions_and_commit_variant(version_str):
""" """
Confirm that GitVersions auto assign and poopulate the commit variant correctly Confirm that GitVersions auto assign and poopulate the commit variant correctly
""" """

View File

@ -348,6 +348,15 @@ def test_phil_package_condtional_variants_may_depend_on_commit(mock_packages, co
assert conditional_variant assert conditional_variant
assert conditional_variant.value assert conditional_variant.value
"""
Issues:
- version has commit Version("foo", commit=<sha>)
- version needs commit Version("master", branch=<branch>)
- cli default
- contraints/overridding current selection
- constraints/changing current selection
"""
def test_phil_commit_variant_finds_matches_for_commit_versions(mock_packages, config): def test_phil_commit_variant_finds_matches_for_commit_versions(mock_packages, config):
""" """

View File

@ -815,7 +815,7 @@ def test_version_list_with_range_and_concrete_version_is_not_concrete():
"git_ref, std_version", "git_ref, std_version",
(("foo", "develop"), ("a" * 40, "develop"), ("a" * 40, None), ("v1.2.0", "1.2.0")), (("foo", "develop"), ("a" * 40, "develop"), ("a" * 40, None), ("v1.2.0", "1.2.0")),
) )
def test_git_versions_store_ref_requests(git_ref, std_version): def test_phil_git_versions_store_ref_requests(git_ref, std_version):
""" """
User requested ref's should be known on creation User requested ref's should be known on creation
Commit and standard version may not be known until concretization Commit and standard version may not be known until concretization