Merge pull request #382 from acatton/fix-dir-in-default

Cdist fails silently when there's a directory in __type/parameter/default
This commit is contained in:
Nico Schottelius 2015-01-09 11:30:25 +01:00
commit f2b1c24ec3
6 changed files with 15 additions and 4 deletions

View file

@ -204,11 +204,13 @@ class CdistType(object):
try:
defaults_dir = os.path.join(self.absolute_path, "parameter", "default")
for name in os.listdir(defaults_dir):
with open(os.path.join(defaults_dir, name)) as fd:
defaults[name] = fd.read().strip()
try:
with open(os.path.join(defaults_dir, name)) as fd:
defaults[name] = fd.read().strip()
except EnvironmentError:
pass # Swallow errors raised by open() or read()
except EnvironmentError:
# error ignored
pass
pass # Swallow error raised by os.listdir()
finally:
self.__parameter_defaults = defaults
return self.__parameter_defaults

View file

@ -153,3 +153,10 @@ class TypeTestCase(test.CdistTestCase):
self.assertFalse('optional2' in cdist_type.parameter_defaults)
self.assertEqual(cdist_type.parameter_defaults['optional1'], 'value1')
def test_directory_in_default(self):
base_path = fixtures
cdist_type = core.CdistType(base_path, '__directory_in_default')
self.assertEqual(
list(sorted(cdist_type.parameter_defaults.keys())),
['bar', 'foo']
)

View file

@ -0,0 +1,2 @@
foo
bar