Просмотр исходного кода

test: cover cipy.runner.run when pipe=True

Sam Jaffe 3 недель назад
Родитель
Сommit
4efb084c61
2 измененных файлов с 17 добавлено и 5 удалено
  1. 1 1
      src/cipy/runner.py
  2. 16 4
      tests/runner_test.py

+ 1 - 1
src/cipy/runner.py

@@ -122,7 +122,7 @@ def run(self: Action, cmd: Sequence[str], *, pipe: bool = False):
 
         return status
 
-    return (status, proc.stdout, proc.stderr)
+    return (status, proc.stdout.decode("utf-8"), proc.stderr.decode("utf-8"))
 
 
 @contextmanager

+ 16 - 4
tests/runner_test.py

@@ -106,11 +106,12 @@ def test_ipc_logs_outputs(ci_logger) -> None:
     )
 
 
-def test_run_logs_when_pipe_is_false(ci_logger, mock_subprocess) -> None:
-    class NoOp(cipy.action.Action):
-        def run(self, context: cipy.Context) -> cipy.Status:
-            return cipy.Status.NOT_RUN
+class NoOp(cipy.action.Action):
+    def run(self, context: cipy.Context) -> cipy.Status:
+        return cipy.Status.NOT_RUN
+
 
+def test_run_logs_when_pipe_is_false(ci_logger, mock_subprocess) -> None:
     mock_subprocess.stdout = """
 This is a sentence
 Lorem Ipsum
@@ -125,3 +126,14 @@ Lorem Ipsum
             call(HasAttributes(levelno=logging.INFO, message="Lorem Ipsum")),
         ]
     )
+
+
+def test_run_returns_when_pipe_is_true(mock_subprocess) -> None:
+    mock_subprocess.stdout = "Lorem Ipsum"
+    mock_subprocess.stderr = "Ooga Booga!"
+
+    action = NoOp(name="Test")
+    _, stdout, stderr = cipy.runner.run(action, [], pipe=True)
+
+    assert stdout == "Lorem Ipsum"
+    assert stderr == "Ooga Booga!"