32 lines
826 B
Python
32 lines
826 B
Python
|
import subprocess
|
||
|
|
||
|
import pytest
|
||
|
|
||
|
from afancontrol.exec import exec_shell_command
|
||
|
|
||
|
|
||
|
def test_exec_shell_command_successful():
|
||
|
assert "42\n" == exec_shell_command("echo 42")
|
||
|
|
||
|
|
||
|
def test_exec_shell_command_ignores_stderr():
|
||
|
assert "42\n" == exec_shell_command("echo 111 >&2; echo 42")
|
||
|
|
||
|
|
||
|
def test_exec_shell_command_erroneous():
|
||
|
with pytest.raises(subprocess.SubprocessError):
|
||
|
exec_shell_command("echo 42 && false")
|
||
|
|
||
|
|
||
|
def test_exec_shell_command_raises_for_unicode():
|
||
|
with pytest.raises(ValueError):
|
||
|
exec_shell_command("echo привет")
|
||
|
|
||
|
|
||
|
def test_exec_shell_command_expands_glob(temp_path):
|
||
|
(temp_path / "sda").write_text("")
|
||
|
(temp_path / "sdb").write_text("")
|
||
|
|
||
|
expected = "{0}/sda {0}/sdb\n".format(temp_path)
|
||
|
assert expected == exec_shell_command('echo "%s/sd"?' % temp_path)
|