Fix directory layout using namespace (#11076)

Directory layouts using ${NAMESPACE} were broken. This addresses that
and adds a test to prevent regression.
This commit is contained in:
Tim Fuller 2019-04-02 18:47:57 -06:00 committed by Peter Scheibel
parent 3c641f47cd
commit a9ae507152
2 changed files with 8 additions and 1 deletions

View File

@ -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]

View File

@ -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),