diff options
author | Guido Günther <agx@sigxcpu.org> | 2017-08-02 15:27:28 -0300 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2017-08-02 15:27:28 -0300 |
commit | 30dfe954af678219a84d228f08a41eddd8908adb (patch) | |
tree | 1584a43becfe4d812627b2b0f651cd98e289f20a /tests/testutils | |
parent | 6d8f386e24be6410152856774b647e1d46834441 (diff) |
tests: move patch_popen to testutils
Diffstat (limited to 'tests/testutils')
-rw-r--r-- | tests/testutils/__init__.py | 4 | ||||
-rw-r--r-- | tests/testutils/popen.py | 18 |
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 |