Migrate shell-* tests to Python
This commit is contained in:
parent
b8dfbae730
commit
68246ba33e
1 changed files with 217 additions and 0 deletions
217
tests/test_shell.py
Normal file
217
tests/test_shell.py
Normal file
|
@ -0,0 +1,217 @@
|
|||
def test_shell_allow_stdout(capfd, dotfiles, run_dotbot):
|
||||
"""Verify shell command STDOUT works."""
|
||||
|
||||
dotfiles.write_config([{
|
||||
"shell": [{
|
||||
"command": "echo apple",
|
||||
"stdout": True,
|
||||
}],
|
||||
}])
|
||||
run_dotbot()
|
||||
|
||||
output = capfd.readouterr()
|
||||
assert any([line.startswith("apple") for line in output.out.splitlines()]), output
|
||||
|
||||
|
||||
def test_shell_cli_verbosity_overrides_1(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that '-vv' overrides the implicit default stdout=False."""
|
||||
|
||||
dotfiles.write_config([{"shell": [{"command": "echo apple"}]}])
|
||||
run_dotbot("-vv")
|
||||
|
||||
lines = capfd.readouterr().out.splitlines()
|
||||
assert any(line.startswith("apple") for line in lines)
|
||||
|
||||
|
||||
def test_shell_cli_verbosity_overrides_2(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that '-vv' overrides an explicit stdout=False."""
|
||||
|
||||
dotfiles.write_config([{"shell": [{"command": "echo apple", "stdout": False}]}])
|
||||
run_dotbot("-vv")
|
||||
|
||||
lines = capfd.readouterr().out.splitlines()
|
||||
assert any(line.startswith("apple") for line in lines)
|
||||
|
||||
|
||||
def test_shell_cli_verbosity_overrides_3(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that '-vv' overrides an explicit defaults:shell:stdout=False."""
|
||||
|
||||
dotfiles.write_config([
|
||||
{"defaults": {"shell": {"stdout": False}}},
|
||||
{"shell": [{"command": "echo apple"}]},
|
||||
])
|
||||
run_dotbot("-vv")
|
||||
|
||||
stdout = capfd.readouterr().out.splitlines()
|
||||
assert any(line.startswith("apple") for line in stdout)
|
||||
|
||||
|
||||
def test_shell_cli_verbosity_stderr(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that commands can output to STDERR."""
|
||||
|
||||
dotfiles.write_config([{"shell": [{"command": "echo apple >&2"}]}])
|
||||
run_dotbot("-vv")
|
||||
|
||||
stderr = capfd.readouterr().err.splitlines()
|
||||
assert any(line.startswith("apple") for line in stderr)
|
||||
|
||||
|
||||
def test_shell_cli_verbosity_stderr_with_explicit_stdout_off(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that commands can output to STDERR with STDOUT explicitly off."""
|
||||
|
||||
dotfiles.write_config([{
|
||||
"shell": [{
|
||||
"command": "echo apple >&2",
|
||||
"stdout": False,
|
||||
}],
|
||||
}])
|
||||
run_dotbot("-vv")
|
||||
|
||||
stderr = capfd.readouterr().err.splitlines()
|
||||
assert any(line.startswith("apple") for line in stderr)
|
||||
|
||||
|
||||
def test_shell_cli_verbosity_stderr_with_defaults_stdout_off(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that commands can output to STDERR with defaults:shell:stdout=False."""
|
||||
|
||||
dotfiles.write_config([
|
||||
{
|
||||
"defaults": {
|
||||
"shell": {
|
||||
"stdout": False,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"shell": [
|
||||
{"command": "echo apple >&2"},
|
||||
],
|
||||
},
|
||||
])
|
||||
run_dotbot("-vv")
|
||||
|
||||
stderr = capfd.readouterr().err.splitlines()
|
||||
assert any(line.startswith("apple") for line in stderr)
|
||||
|
||||
|
||||
def test_shell_single_v_verbosity_stdout(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that a single '-v' verbosity doesn't override stdout=False."""
|
||||
|
||||
dotfiles.write_config([{"shell": [{"command": "echo apple"}]}])
|
||||
run_dotbot("-v")
|
||||
|
||||
stdout = capfd.readouterr().out.splitlines()
|
||||
assert not any(line.startswith("apple") for line in stdout)
|
||||
|
||||
|
||||
def test_shell_single_v_verbosity_stderr(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that a single '-v' verbosity doesn't override stderr=False."""
|
||||
|
||||
dotfiles.write_config([{"shell": [{"command": "echo apple >&2"}]}])
|
||||
run_dotbot("-v")
|
||||
|
||||
stderr = capfd.readouterr().err.splitlines()
|
||||
assert not any(line.startswith("apple") for line in stderr)
|
||||
|
||||
|
||||
def test_shell_compact_stdout_1(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that shell command stdout works in compact form."""
|
||||
|
||||
dotfiles.write_config([
|
||||
{"defaults": {"shell": {"stdout": True}}},
|
||||
{"shell": ["echo apple"]},
|
||||
])
|
||||
run_dotbot()
|
||||
|
||||
stdout = capfd.readouterr().out.splitlines()
|
||||
assert any(line.startswith("apple") for line in stdout)
|
||||
|
||||
|
||||
def test_shell_compact_stdout_2(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that shell command stdout works in compact form."""
|
||||
|
||||
dotfiles.write_config([
|
||||
{"defaults": {"shell": {"stdout": True}}},
|
||||
{"shell": [["echo apple", "echoing message"]]},
|
||||
])
|
||||
run_dotbot()
|
||||
|
||||
stdout = capfd.readouterr().out.splitlines()
|
||||
assert any(line.startswith("apple") for line in stdout)
|
||||
assert any(line.startswith("echoing message") for line in stdout)
|
||||
|
||||
|
||||
def test_shell_stdout_disabled_by_default(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that the shell command disables stdout by default."""
|
||||
|
||||
dotfiles.write_config([{
|
||||
"shell": ["echo banana"],
|
||||
}])
|
||||
run_dotbot()
|
||||
|
||||
stdout = capfd.readouterr().out.splitlines()
|
||||
assert not any(line.startswith("banana") for line in stdout)
|
||||
|
||||
|
||||
def test_shell_can_override_defaults(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that the shell command can override defaults."""
|
||||
|
||||
dotfiles.write_config([
|
||||
{"defaults": {"shell": {"stdout": True}}},
|
||||
{"shell": [{"command": "echo apple", "stdout": False}]},
|
||||
])
|
||||
run_dotbot()
|
||||
|
||||
stdout = capfd.readouterr().out.splitlines()
|
||||
assert not any(line.startswith("apple") for line in stdout)
|
||||
|
||||
|
||||
def test_shell_quiet_default(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that quiet is off by default."""
|
||||
|
||||
dotfiles.write_config([{
|
||||
"shell": [{
|
||||
"command": "echo banana",
|
||||
"description": "echoing a thing...",
|
||||
}],
|
||||
}])
|
||||
run_dotbot()
|
||||
|
||||
stdout = capfd.readouterr().out.splitlines()
|
||||
assert not any(line.startswith("banana") for line in stdout)
|
||||
assert any("echo banana" in line for line in stdout)
|
||||
assert any(line.startswith("echoing a thing...") for line in stdout)
|
||||
|
||||
|
||||
def test_shell_quiet_enabled_with_description(capfd, dotfiles, run_dotbot):
|
||||
"""Verify that only the description is shown when quiet is enabled."""
|
||||
|
||||
dotfiles.write_config([{
|
||||
"shell": [{
|
||||
"command": "echo banana",
|
||||
"description": "echoing a thing...",
|
||||
"quiet": True,
|
||||
}],
|
||||
}])
|
||||
run_dotbot()
|
||||
|
||||
stdout = capfd.readouterr().out.splitlines()
|
||||
assert not any(line.startswith("banana") for line in stdout)
|
||||
assert not any("echo banana" in line for line in stdout)
|
||||
assert any(line.startswith("echoing a thing...") for line in stdout)
|
||||
|
||||
|
||||
def test_shell_quiet_enabled_without_description(capfd, dotfiles, run_dotbot):
|
||||
"""Verify the command is shown when quiet is enabled with no description."""
|
||||
|
||||
dotfiles.write_config([{
|
||||
"shell": [{
|
||||
"command": "echo banana",
|
||||
"quiet": True,
|
||||
}],
|
||||
}])
|
||||
run_dotbot()
|
||||
|
||||
stdout = capfd.readouterr().out.splitlines()
|
||||
assert not any(line.startswith("banana") for line in stdout)
|
||||
assert any(line.startswith("echo banana") for line in stdout)
|
Loading…
Reference in a new issue