summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTim Fuller <tjfulle@sandia.gov>2019-04-02 18:47:57 -0600
committerPeter Scheibel <scheibel1@llnl.gov>2019-04-02 17:47:57 -0700
commita9ae507152c1f3bd9400e211ad11647310d9c286 (patch)
treeb502a4c26af51a2110f9b471d0fa8d80595aa062 /lib
parent3c641f47cda7129007f997d3f3237116f207df90 (diff)
downloadspack-a9ae507152c1f3bd9400e211ad11647310d9c286.tar.gz
spack-a9ae507152c1f3bd9400e211ad11647310d9c286.tar.bz2
spack-a9ae507152c1f3bd9400e211ad11647310d9c286.tar.xz
spack-a9ae507152c1f3bd9400e211ad11647310d9c286.zip
Fix directory layout using namespace (#11076)
Directory layouts using ${NAMESPACE} were broken. This addresses that and adds a test to prevent regression.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/spec.py2
-rw-r--r--lib/spack/spack/test/directory_layout.py7
2 files changed, 8 insertions, 1 deletions
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
index ce5a536c6e..b202d34473 100644
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -3237,7 +3237,7 @@ class Spec(object):
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 f0c3ad6ff9..7e8cda611f 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),