aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/testutils
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2017-08-02 15:27:28 -0300
committerGuido Günther <agx@sigxcpu.org>2017-08-02 15:27:28 -0300
commit30dfe954af678219a84d228f08a41eddd8908adb (patch)
tree1584a43becfe4d812627b2b0f651cd98e289f20a /tests/testutils
parent6d8f386e24be6410152856774b647e1d46834441 (diff)
tests: move patch_popen to testutils
Diffstat (limited to 'tests/testutils')
-rw-r--r--tests/testutils/__init__.py4
-rw-r--r--tests/testutils/popen.py18
2 files changed, 21 insertions, 1 deletions
diff --git a/tests/testutils/__init__.py b/tests/testutils/__init__.py
index 27f9e9cc..febd9e2b 100644
--- a/tests/testutils/__init__.py
+++ b/tests/testutils/__init__.py
@@ -16,11 +16,13 @@ from gbp.deb.changelog import ChangeLog
from . gbplogtester import GbpLogTester
from . debiangittestrepo import DebianGitTestRepo
from . capture import capture_stdout, capture_stderr
+from . popen import patch_popen
__all__ = ['GbpLogTester', 'DebianGitTestRepo', 'OsReleaseFile',
'MockedChangeLog', 'get_dch_default_urgency',
'capture_stderr', 'capture_stdout',
- 'ls_dir', 'ls_tar', 'ls_zip']
+ 'ls_dir', 'ls_tar', 'ls_zip',
+ 'patch_popen']
class OsReleaseFile(object):
diff --git a/tests/testutils/popen.py b/tests/testutils/popen.py
new file mode 100644
index 00000000..725e1f77
--- /dev/null
+++ b/tests/testutils/popen.py
@@ -0,0 +1,18 @@
+# vim: set fileencoding=utf-8 :
+
+import functools
+import mock
+
+
+def patch_popen(stdout=b'', stderr=b'', returncode=1):
+ """Decorator to easily set the return value of popen.communicate()"""
+ def patch_popen_decorator(func):
+ @functools.wraps(func)
+ def wrap(self):
+ with mock.patch('subprocess.Popen') as create_mock:
+ popen_mock = mock.Mock(**{'returncode': returncode,
+ 'communicate.return_value': (stdout, stderr)})
+ create_mock.return_value = popen_mock
+ return func(self, create_mock)
+ return wrap
+ return patch_popen_decorator