diff options
author | Tim Fuller <tjfulle@sandia.gov> | 2019-04-02 18:47:57 -0600 |
---|---|---|
committer | Peter Scheibel <scheibel1@llnl.gov> | 2019-04-02 17:47:57 -0700 |
commit | a9ae507152c1f3bd9400e211ad11647310d9c286 (patch) | |
tree | b502a4c26af51a2110f9b471d0fa8d80595aa062 | |
parent | 3c641f47cda7129007f997d3f3237116f207df90 (diff) | |
download | spack-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.
-rw-r--r-- | lib/spack/spack/spec.py | 2 | ||||
-rw-r--r-- | lib/spack/spack/test/directory_layout.py | 7 |
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), |