summaryrefslogtreecommitdiffstats
path: root/test/units/ansible_test/_internal/test_util.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/units/ansible_test/_internal/test_util.py')
-rw-r--r--test/units/ansible_test/_internal/test_util.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/units/ansible_test/_internal/test_util.py b/test/units/ansible_test/_internal/test_util.py
new file mode 100644
index 0000000000..97e2f05dd7
--- /dev/null
+++ b/test/units/ansible_test/_internal/test_util.py
@@ -0,0 +1,36 @@
+from __future__ import annotations
+
+import pytest
+
+
+def test_failed_non_interactive_captured_command() -> None:
+ """Verify failed non-interactive captured commands raise a `SubprocessError` with `stdout` and `stderr` set."""
+ from ansible_test._internal.util import raw_command, SubprocessError
+
+ with pytest.raises(SubprocessError, match='Command "ls /dev/null /does/not/exist" returned exit status [0-9]+.\n>>> Standard Error\n') as error:
+ raw_command(['ls', '/dev/null', '/does/not/exist'], True)
+
+ assert '/dev/null' in error.value.stdout
+ assert '/does/not/exist' in error.value.stderr
+
+
+def test_failed_non_interactive_command() -> None:
+ """Verify failed non-interactive non-captured commands raise a `SubprocessError` with `stdout` and `stderr` set to an empty string."""
+ from ansible_test._internal.util import raw_command, SubprocessError
+
+ with pytest.raises(SubprocessError, match='Command "ls /dev/null /does/not/exist" returned exit status [0-9]+.') as error:
+ raw_command(['ls', '/dev/null', '/does/not/exist'], False)
+
+ assert error.value.stdout == ''
+ assert error.value.stderr == ''
+
+
+def test_failed_interactive_command() -> None:
+ """Verify failed interactive commands raise a `SubprocessError` with `stdout` and `stderr` set to `None`."""
+ from ansible_test._internal.util import raw_command, SubprocessError
+
+ with pytest.raises(SubprocessError, match='Command "ls /dev/null /does/not/exist" returned exit status [0-9]+.') as error:
+ raw_command(['ls', '/dev/null', '/does/not/exist'], False, interactive=True)
+
+ assert error.value.stdout is None
+ assert error.value.stderr is None