X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/19ae770973482257117fe8ded5619c3018c4b60f..fe45b1b66c730f2546d78a7899375707c0816518:/sdk/python/tests/arvados_testutil.py diff --git a/sdk/python/tests/arvados_testutil.py b/sdk/python/tests/arvados_testutil.py index b2cf43652b..dae3dd3b7b 100644 --- a/sdk/python/tests/arvados_testutil.py +++ b/sdk/python/tests/arvados_testutil.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import arvados +import contextlib import errno import hashlib import httplib @@ -11,6 +12,7 @@ import os import pycurl import Queue import shutil +import sys import tempfile import unittest @@ -50,6 +52,17 @@ def mock_api_responses(api_client, body, codes, headers={}): def str_keep_locator(s): return '{}+{}'.format(hashlib.md5(s).hexdigest(), len(s)) +@contextlib.contextmanager +def redirected_streams(stdout=None, stderr=None): + orig_stdout, sys.stdout = sys.stdout, stdout or sys.stdout + orig_stderr, sys.stderr = sys.stderr, stderr or sys.stderr + try: + yield + finally: + sys.stdout = orig_stdout + sys.stderr = orig_stderr + + class FakeCurl: @classmethod def make(cls, code, body='', headers={}): @@ -85,7 +98,8 @@ class FakeCurl: self._headerfunction("HTTP/1.1 {} Status".format(self._resp_code)) for k, v in self._resp_headers.iteritems(): self._headerfunction(k + ': ' + str(v)) - self._writer(self._resp_body) + if type(self._resp_body) is not bool: + self._writer(self._resp_body) def close(self): pass