summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dotbot/plugins/clean.py4
-rw-r--r--test/tests/clean-default.bash19
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
+'