summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnish Athalye <me@anishathalye.com>2017-06-27 21:20:37 -0700
committerAnish Athalye <me@anishathalye.com>2017-06-27 21:27:50 -0700
commitf1e829725506813276c0dff21f6e6bfff9873444 (patch)
treedc0d5ae442d484177d5467c5a132793cf4a2cc21
parent0b01d56d81c33f8b665487f5a64f2d69b2a645f0 (diff)
Fix bug with shell defaults
-rw-r--r--plugins/shell.py18
-rw-r--r--test/tests/shell-compact-stdout.bash22
-rw-r--r--test/tests/shell-override-default.bash14
3 files changed, 48 insertions, 6 deletions
diff --git a/plugins/shell.py b/plugins/shell.py
index 2931dc2..b6f5184 100644
--- a/plugins/shell.py
+++ b/plugins/shell.py
@@ -22,15 +22,21 @@ class Shell(dotbot.Plugin):
with open(os.devnull, 'w') as devnull:
for item in data:
stdin = stdout = stderr = devnull
+ if defaults.get('stdin', False) == True:
+ stdin = None
+ if defaults.get('stdout', False) == True:
+ stdout = None
+ if defaults.get('stderr', False) == True:
+ stderr = None
if isinstance(item, dict):
cmd = item['command']
msg = item.get('description', None)
- if item.get('stdin', defaults.get('stdin', False)) is True:
- stdin = None
- if item.get('stdout', defaults.get('stdout', False)) is True:
- stdout = None
- if item.get('stderr', defaults.get('stderr', False)) is True:
- stderr = None
+ if 'stdin' in item:
+ stdin = None if item['stdin'] == True else devnull
+ if 'stdout' in item:
+ stdout = None if item['stdout'] == True else devnull
+ if 'stderr' in item:
+ stderr = None if item['stderr'] == True else devnull
elif isinstance(item, list):
cmd = item[0]
msg = item[1] if len(item) > 1 else None
diff --git a/test/tests/shell-compact-stdout.bash b/test/tests/shell-compact-stdout.bash
new file mode 100644
index 0000000..dc55d52
--- /dev/null
+++ b/test/tests/shell-compact-stdout.bash
@@ -0,0 +1,22 @@
+test_description='shell command stdout works in compact form'
+. '../test-lib.bash'
+
+test_expect_success 'run' '
+(run_dotbot | grep "^apple") <<EOF
+- defaults:
+ shell:
+ stdout: true
+- shell:
+ - echo apple
+EOF
+'
+
+test_expect_success 'run 2' '
+(run_dotbot | grep "^apple") <<EOF
+- defaults:
+ shell:
+ stdout: true
+- shell:
+ - [echo apple, "echoing message"]
+EOF
+'
diff --git a/test/tests/shell-override-default.bash b/test/tests/shell-override-default.bash
new file mode 100644
index 0000000..8ca6264
--- /dev/null
+++ b/test/tests/shell-override-default.bash
@@ -0,0 +1,14 @@
+test_description='shell command can override default'
+. '../test-lib.bash'
+
+test_expect_success 'run' '
+(run_dotbot | (! grep "^apple")) <<EOF
+- defaults:
+ shell:
+ stdout: true
+- shell:
+ -
+ command: echo apple
+ stdout: false
+EOF
+'