From f27eb55f2984d9bb44dec9f51f6fc2ff34522bba Mon Sep 17 00:00:00 2001 From: Gregory Becker Date: Wed, 14 May 2025 12:31:17 -0700 Subject: [PATCH] add test for toolchains Signed-off-by: Gregory Becker --- lib/spack/spack/test/spec_syntax.py | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/lib/spack/spack/test/spec_syntax.py b/lib/spack/spack/test/spec_syntax.py index 2fa106be50c..7253eb6615c 100644 --- a/lib/spack/spack/test/spec_syntax.py +++ b/lib/spack/spack/test/spec_syntax.py @@ -11,6 +11,7 @@ import spack.binary_distribution import spack.cmd import spack.concretize +import spack.config import spack.platforms.test import spack.repo import spack.solver.asp @@ -894,6 +895,39 @@ def test_cli_spec_roundtrip(args, expected): assert expected == output_string +@pytest.mark.parametrize( + "spec_str,toolchain,expected_roundtrip", + [ + ( + "foo%my_toolchain", + {"my_toolchain": "%[when='%c' virtuals=c]gcc"}, + "foo ^[when='%c' virtuals=c] gcc", + ), + ( + "foo%my_toolchain2", + {"my_toolchain2": "%[when='%c' virtuals=c]gcc ^[when='+mpi' virtuals=mpi]mpich"}, + "foo %[when='%c' virtuals=c] gcc ^[when='+mpi' virtuals=mpi] mpich", + ), + ( + "foo%my_toolchain bar%my_toolchain2", + { + "my_toolchain": "%[when='%c' virtuals=c]gcc", + "my_toolchain2": "%[when='%c' virtuals=c]gcc ^[when='+mpi' virtuals=mpi]mpich", + }, + [ + "foo ^[when='%c' virtuals=c] gcc", + "bar %[when='%c' virtuals=c] gcc ^[when='+mpi' virtuals=mpi] mpich", + ], + ), + ], +) +def test_parse_toolchain(spec_str, toolchain, expected_roundtrip, mutable_config): + spack.config.CONFIG.set("toolchains", toolchain) + parser = SpecParser(spec_str) + for expected in expected_roundtrip: + assert expected_roundtrip == str(parser.next_spec()) + + @pytest.mark.parametrize( "text,expected_in_error", [