binman: Allow a single test to be executed

Provide an easy way to execute a single binman test by specifying it on
the command line.

Signed-off-by: Simon Glass <sjg@chromium.org>
lime2-spi
Simon Glass 6 years ago
parent 258fb0e677
commit 084059a31f
  1. 21
      tools/binman/binman.py

@ -27,8 +27,14 @@ import cmdline
import command
import control
def RunTests(debug):
"""Run the functional tests and any embedded doctests"""
def RunTests(debug, args):
"""Run the functional tests and any embedded doctests
Args:
debug: True to enable debugging, which shows a full stack trace on error
args: List of positional args provided to binman. This can hold a test
name to execute (as in 'binman -t testSections', for example)
"""
import elf_test
import entry_test
import fdt_test
@ -50,9 +56,16 @@ def RunTests(debug):
# 'entry' module.
suite = unittest.TestLoader().loadTestsFromTestCase(entry_test.TestEntry)
suite.run(result)
test_name = args and args[0] or None
for module in (ftest.TestFunctional, fdt_test.TestFdt, elf_test.TestElf,
image_test.TestImage):
suite = unittest.TestLoader().loadTestsFromTestCase(module)
if test_name:
try:
suite = unittest.TestLoader().loadTestsFromName(args[0], module)
except AttributeError:
continue
else:
suite = unittest.TestLoader().loadTestsFromTestCase(module)
suite.run(result)
print result
@ -111,7 +124,7 @@ def RunBinman(options, args):
sys.tracebacklimit = 0
if options.test:
ret_code = RunTests(options.debug)
ret_code = RunTests(options.debug, args[1:])
elif options.test_coverage:
RunTestCoverage()

Loading…
Cancel
Save