binman: Move capture_sys_output() to test_util

This function is useful in various tests. Move it into the common test
utility module.

Signed-off-by: Simon Glass <sjg@chromium.org>
lime2-spi
Simon Glass 6 years ago
parent ba765217ed
commit c3f9454103
  1. 22
      tools/binman/elf_test.py
  2. 2
      tools/binman/image_test.py
  3. 21
      tools/patman/test_util.py

@ -4,33 +4,15 @@
# #
# Test for the elf module # Test for the elf module
from contextlib import contextmanager
import os import os
import sys import sys
import unittest import unittest
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
import elf import elf
import test_util
binman_dir = os.path.dirname(os.path.realpath(sys.argv[0])) binman_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
# Use this to suppress stdout/stderr output:
# with capture_sys_output() as (stdout, stderr)
# ...do something...
@contextmanager
def capture_sys_output():
capture_out, capture_err = StringIO(), StringIO()
old_out, old_err = sys.stdout, sys.stderr
try:
sys.stdout, sys.stderr = capture_out, capture_err
yield capture_out, capture_err
finally:
sys.stdout, sys.stderr = old_out, old_err
class FakeEntry: class FakeEntry:
def __init__(self, contents_size): def __init__(self, contents_size):
@ -110,7 +92,7 @@ class TestElf(unittest.TestCase):
entry = FakeEntry(20) entry = FakeEntry(20)
section = FakeSection() section = FakeSection()
elf_fname = os.path.join(binman_dir, 'test', 'u_boot_binman_syms') elf_fname = os.path.join(binman_dir, 'test', 'u_boot_binman_syms')
with capture_sys_output() as (stdout, stderr): with test_util.capture_sys_output() as (stdout, stderr):
syms = elf.LookupAndWriteSymbols(elf_fname, entry, section) syms = elf.LookupAndWriteSymbols(elf_fname, entry, section)
elf.debug = False elf.debug = False
self.assertTrue(len(stdout.getvalue()) > 0) self.assertTrue(len(stdout.getvalue()) > 0)

@ -7,7 +7,7 @@
import unittest import unittest
from image import Image from image import Image
from elf_test import capture_sys_output from test_util import capture_sys_output
class TestImage(unittest.TestCase): class TestImage(unittest.TestCase):
def testInvalidFormat(self): def testInvalidFormat(self):

@ -3,12 +3,19 @@
# Copyright (c) 2016 Google, Inc # Copyright (c) 2016 Google, Inc
# #
from contextlib import contextmanager
import glob import glob
import os import os
import sys import sys
import command import command
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
def RunTestCoverage(prog, filter_fname, exclude_list, build_dir, required=None): def RunTestCoverage(prog, filter_fname, exclude_list, build_dir, required=None):
"""Run tests and check that we get 100% coverage """Run tests and check that we get 100% coverage
@ -62,3 +69,17 @@ def RunTestCoverage(prog, filter_fname, exclude_list, build_dir, required=None):
ok = False ok = False
if not ok: if not ok:
raise ValueError('Test coverage failure') raise ValueError('Test coverage failure')
# Use this to suppress stdout/stderr output:
# with capture_sys_output() as (stdout, stderr)
# ...do something...
@contextmanager
def capture_sys_output():
capture_out, capture_err = StringIO(), StringIO()
old_out, old_err = sys.stdout, sys.stderr
try:
sys.stdout, sys.stderr = capture_out, capture_err
yield capture_out, capture_err
finally:
sys.stdout, sys.stderr = old_out, old_err

Loading…
Cancel
Save