Skip to content
Snippets Groups Projects
Unverified Commit eb286bb8 authored by Massimiliano Culpo's avatar Massimiliano Culpo Committed by Todd Gamblin
Browse files

Specs with quoted flags containing spaces are parsed correctly (#13521)

parent 1cc69e1c
Branches
Tags
No related merge requests found
......@@ -24,6 +24,7 @@
import spack.spec
import spack.store
import spack.util.spack_json as sjson
import spack.util.string
from spack.error import SpackError
......@@ -134,7 +135,9 @@ def parse_specs(args, **kwargs):
tests = kwargs.get('tests', False)
try:
sargs = args if isinstance(args, six.string_types) else ' '.join(args)
sargs = args
if not isinstance(args, six.string_types):
sargs = ' '.join(spack.util.string.quote(args))
specs = spack.spec.parse(sargs)
for spec in specs:
if concretize:
......
......@@ -9,6 +9,7 @@
import pytest
import spack.cmd
import spack.cmd.common.arguments as arguments
import spack.config
......@@ -62,3 +63,20 @@ def test_negative_integers_not_allowed_for_parallel_jobs(parser):
parser.parse_args(['-j', '-2'])
assert 'expected a positive integer' in str(exc_info.value)
@pytest.mark.parametrize('specs,expected_variants,unexpected_variants', [
(['coreutils', 'cflags=-O3 -g'], [], ['g']),
(['coreutils', 'cflags=-O3', '-g'], ['g'], []),
])
@pytest.mark.regression('12951')
def test_parse_spec_flags_with_spaces(
specs, expected_variants, unexpected_variants
):
spec_list = spack.cmd.parse_specs(specs)
assert len(spec_list) == 1
s = spec_list.pop()
assert all(x not in s.variants for x in unexpected_variants)
assert all(x in s.variants for x in expected_variants)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment