From 7f093d129b5729f029612cb7c0b0656cbea0f42a Mon Sep 17 00:00:00 2001 From: Massimiliano Culpo Date: Tue, 12 Nov 2024 17:35:44 +0100 Subject: [PATCH] unit-test: make Spec.compiler behavior stricter Now the adaptor will raise if the Spec has no C, C++, or Fortran compiler. --- lib/spack/spack/test/package_class.py | 1 - lib/spack/spack/test/spec_semantics.py | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/test/package_class.py b/lib/spack/spack/test/package_class.py index 7cfdf8ac107..acc43aba978 100644 --- a/lib/spack/spack/test/package_class.py +++ b/lib/spack/spack/test/package_class.py @@ -306,7 +306,6 @@ def test_package_test_no_compilers(mock_packages, monkeypatch, capfd): pkg.do_test() error = capfd.readouterr()[1] assert "Skipping tests for package" in error - assert "test requires missing compiler" in error def test_package_subscript(default_mock_concretization): diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index 1c771a0e887..2c8258d7772 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -2044,3 +2044,22 @@ def test_satisfies_and_subscript_with_compilers(default_mock_concretization): # We need to pass through "pkg-a" to get "gmake" with [] notation assert s["pkg-a"].dependencies(name="gmake")[0] == s["pkg-a"]["gmake"] + + +@pytest.mark.parametrize( + "spec_str,spec_fmt,expected", + [ + # Depends on C + ("mpileaks", "{name}-{compiler.name}", "mpileaks-gcc"), + ("mpileaks", "{name}-{compiler.name}-{compiler.version}", "mpileaks-gcc-10.2.1"), + # No compiler + ("pkg-c", "{name}-{compiler.name}", "pkg-c-none"), + ("pkg-c", "{name}-{compiler.name}-{compiler.version}", "pkg-c-none-none"), + ], +) +def test_spec_format_with_compiler_adaptors( + spec_str, spec_fmt, expected, default_mock_concretization +): + """Tests the output of spec format, when involving `Spec.compiler` adaptors""" + s = default_mock_concretization(spec_str) + assert s.format(spec_fmt) == expected