Add unit test for execute_cmd in repo2docker.utils
MODIFY
repo2docker/utils.py
repo2docker/utils.py
@@ -10,7 +10,9 @@ from traitlets import Integer, TraitError
def execute_cmd(cmd, capture=False, **kwargs):
"""
- Call given command, yielding output line by line if capture=True
+ Call given command, yielding output line by line if capture=True.
+
+ Must be yielded from.
"""
if capture:
kwargs['stdout'] = subprocess.PIPE

ADD
tests/test_utils.py
+"""
+Tests for repo2docker/utils.py
+"""
+from repo2docker import utils
+import pytest
+import subprocess
+
+
+def test_capture_cmd_no_capture_success():
+ # This should succeed
+ for line in utils.execute_cmd([
+ '/bin/bash', '-c', 'echo test'
+ ]):
+ pass
+
+def test_capture_cmd_no_capture_fail():
+ with pytest.raises(subprocess.CalledProcessError):
+ for line in utils.execute_cmd([
+ '/bin/bash', '-c', 'e '
+ ]):
+ pass
+
+
+def test_capture_cmd_capture_success():
+ # This should succeed
+ for line in utils.execute_cmd([
+ '/bin/bash', '-c', 'echo test'
+ ], capture=True):
+ assert line == 'test\n'
+
+
+def test_capture_cmd_capture_fail():
+ with pytest.raises(subprocess.CalledProcessError):
+ for line in utils.execute_cmd([
+ '/bin/bash', '-c', 'echo test; exit 1 '
+ ], capture=True):
+ assert line == 'test\n'
\ No newline at end of file

Add unit test for execute_cmd in repo2docker.utils