From a9ae507152c1f3bd9400e211ad11647310d9c286 Mon Sep 17 00:00:00 2001 From: Tim Fuller Date: Tue, 2 Apr 2019 18:47:57 -0600 Subject: [PATCH] Fix directory layout using namespace (#11076) Directory layouts using ${NAMESPACE} were broken. This addresses that and adds a test to prevent regression. --- lib/spack/spack/spec.py | 2 +- lib/spack/spack/test/directory_layout.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index ce5a536c6ec..b202d34473c 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -3237,7 +3237,7 @@ def write(s, c=None): hashlen = None out.write(fmt % (self.dag_hash(hashlen))) elif named_str == 'NAMESPACE': - out.write(fmt % transform(self.namespace)) + out.write(fmt % transform(self, self.namespace)) elif named_str.startswith('DEP:'): _, dep_name, dep_option = named_str.lower().split(':', 2) dep_spec = self[dep_name] diff --git a/lib/spack/spack/test/directory_layout.py b/lib/spack/spack/test/directory_layout.py index f0c3ad6ff9e..7e8cda611f8 100644 --- a/lib/spack/spack/test/directory_layout.py +++ b/lib/spack/spack/test/directory_layout.py @@ -70,6 +70,13 @@ def test_yaml_directory_layout_parameters( arch_path_package = layout_arch_package.relative_path_for_spec(spec) assert(arch_path_package == spec.format(arch_scheme_package)) + # Test separation of namespace + ns_scheme_package = "${ARCHITECTURE}/${NAMESPACE}/${PACKAGE}-${VERSION}-${HASH:7}" # NOQA: ignore=E501 + layout_ns_package = YamlDirectoryLayout(str(tmpdir), + path_scheme=ns_scheme_package) + ns_path_package = layout_ns_package.relative_path_for_spec(spec) + assert(ns_path_package == spec.format(ns_scheme_package)) + # Ensure conflicting parameters caught with pytest.raises(InvalidDirectoryLayoutParametersError): YamlDirectoryLayout(str(tmpdir),