Source code for aiida.cmdline.tests.common

# -*- coding: utf-8 -*-
###########################################################################
# Copyright (c), The AiiDA team. All rights reserved.                     #
# This file is part of the AiiDA code.                                    #
#                                                                         #
# The code is hosted on GitHub at https://github.com/aiidateam/aiida_core #
# For further information on the license, see the LICENSE.txt file        #
# For further information please visit http://www.aiida.net               #
###########################################################################
"""Common code to be used in cli testing"""
import sys
from contextlib import contextmanager
from StringIO import StringIO


[docs]@contextmanager def captured_output(): """ Utility to capture stdout and sterr to two StringIOs that are returned by the context manager, and replacing them back once out of the context manager """ new_out, new_err = StringIO(), StringIO() old_out, old_err = sys.stdout, sys.stderr try: sys.stdout, sys.stderr = new_out, new_err yield sys.stdout, sys.stderr finally: sys.stdout, sys.stderr = old_out, old_err