From bddd41aa263139e1935b587d7ab46a5bc69d8a62 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 c5baf9f96d6..2a2a8a35bb1 100644 --- a/lib/spack/spack/test/package_class.py +++ b/lib/spack/spack/test/package_class.py @@ -295,7 +295,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 6b20b004e4e..2da15116e41 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -2007,3 +2007,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