From f1e829725506813276c0dff21f6e6bfff9873444 Mon Sep 17 00:00:00 2001 From: Anish Athalye Date: Tue, 27 Jun 2017 21:20:37 -0700 Subject: [PATCH] Fix bug with shell defaults --- plugins/shell.py | 18 ++++++++++++------ test/tests/shell-compact-stdout.bash | 22 ++++++++++++++++++++++ test/tests/shell-override-default.bash | 14 ++++++++++++++ 3 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 test/tests/shell-compact-stdout.bash create mode 100644 test/tests/shell-override-default.bash 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") <