1#
2# Copyright (C) 2017 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17
18from cStringIO import StringIO
19import sys
20
21
22class CaptureStdout(list):
23    '''Capture system stdout as a list of string.
24
25    Usage example:
26        with CaptureStdout() as output:
27            print 'something'
28
29        print 'Got output list: %s' % output
30    '''
31
32    def __enter__(self):
33        self.sys_stdout = sys.stdout
34        sys.stdout = StringIO()
35        return self
36
37    def __exit__(self, *args):
38        self.extend(sys.stdout.getvalue().splitlines())
39        sys.stdout = self.sys_stdout