diff options
-rw-r--r-- | dotbot/plugins/clean.py | 4 | ||||
-rw-r--r-- | test/tests/clean-default.bash | 19 |
2 files changed, 21 insertions, 2 deletions
diff --git a/dotbot/plugins/clean.py b/dotbot/plugins/clean.py index 22c975e..89251b9 100644 --- a/dotbot/plugins/clean.py +++ b/dotbot/plugins/clean.py @@ -18,9 +18,9 @@ class Clean(dotbot.Plugin): def _process_clean(self, targets): success = True defaults = self._context.defaults().get(self._directive, {}) - force = defaults.get('force', False) for target in targets: - if isinstance(targets, dict): + force = defaults.get('force', False) + if isinstance(targets, dict) and isinstance(targets[target], dict): force = targets[target].get('force', force) success &= self._clean(target, force) if success: diff --git a/test/tests/clean-default.bash b/test/tests/clean-default.bash new file mode 100644 index 0000000..8bb405d --- /dev/null +++ b/test/tests/clean-default.bash @@ -0,0 +1,19 @@ +test_description='clean uses default unless overridden' +. '../test-lib.bash' + +test_expect_success 'setup' ' +ln -s /nowhere ~/.g +' + +test_expect_success 'run' ' +run_dotbot <<EOF +- clean: + ~/nonexistent: + force: true + ~/: +EOF +' + +test_expect_success 'test' ' +test -h ~/.g +' |