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

Cdist fails silently when there's a directory in __type/parameter/default
remotes/origin/random_dot_cdist
Nico Schottelius 10 years ago
commit f2b1c24ec3
  1. 10
      cdist/core/cdist_type.py
  2. 7
      cdist/test/cdist_type/__init__.py
  3. 0
      cdist/test/cdist_type/fixtures/__directory_in_default/parameter/default/a/.gitkeep
  4. 0
      cdist/test/cdist_type/fixtures/__directory_in_default/parameter/default/bar
  5. 0
      cdist/test/cdist_type/fixtures/__directory_in_default/parameter/default/foo
  6. 2
      cdist/test/cdist_type/fixtures/__directory_in_default/parameter/optional

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

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

Loading…
Cancel
Save