[U-Boot] [PATCH 07/13] binman: Support enabling debug in tests
Simon Glass
sjg at chromium.org
Tue Nov 14 01:55:00 UTC 2017
The elf module can provide some debugging information to assist with
figuring out what is going wrong. This is also useful in tests. Update the
-D option so that it is passed through to tests as well.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
tools/binman/binman.py | 6 ++++--
tools/binman/control.py | 3 +++
tools/binman/elf.py | 3 +++
tools/binman/ftest.py | 17 +++++++++++++----
4 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/tools/binman/binman.py b/tools/binman/binman.py
index 81a613ddc40..aa513962663 100755
--- a/tools/binman/binman.py
+++ b/tools/binman/binman.py
@@ -31,7 +31,7 @@ import cmdline
import command
import control
-def RunTests():
+def RunTests(debug):
"""Run the functional tests and any embedded doctests"""
import elf_test
import entry_test
@@ -46,6 +46,8 @@ def RunTests():
suite.run(result)
sys.argv = [sys.argv[0]]
+ if debug:
+ sys.argv.append('-D')
# Run the entry tests first ,since these need to be the first to import the
# 'entry' module.
@@ -111,7 +113,7 @@ def RunBinman(options, args):
sys.tracebacklimit = 0
if options.test:
- ret_code = RunTests()
+ ret_code = RunTests(options.debug)
elif options.test_coverage:
RunTestCoverage()
diff --git a/tools/binman/control.py b/tools/binman/control.py
index e9d48df0301..e175e8d41bd 100644
--- a/tools/binman/control.py
+++ b/tools/binman/control.py
@@ -12,6 +12,7 @@ import sys
import tools
import command
+import elf
import fdt
import fdt_util
from image import Image
@@ -89,6 +90,8 @@ def Binman(options, args):
try:
tout.Init(options.verbosity)
+ if options.debug:
+ elf.debug = True
try:
tools.SetInputDirs(options.indir)
tools.PrepareOutputDir(options.outdir, options.preserve)
diff --git a/tools/binman/elf.py b/tools/binman/elf.py
index 97208b17950..0fb5a4a8ed6 100644
--- a/tools/binman/elf.py
+++ b/tools/binman/elf.py
@@ -14,6 +14,9 @@ import struct
import tools
+# This is enabled from control.py
+debug = False
+
Symbol = namedtuple('Symbol', ['section', 'address', 'size', 'weak'])
# Used for tests which don't have an ELF file to read
diff --git a/tools/binman/ftest.py b/tools/binman/ftest.py
index 372b61fbb3b..2bee6a168f3 100644
--- a/tools/binman/ftest.py
+++ b/tools/binman/ftest.py
@@ -136,7 +136,10 @@ class TestFunctional(unittest.TestCase):
Returns:
Return value (0 for success)
"""
- (options, args) = cmdline.ParseArgs(list(args))
+ args = list(args)
+ if '-D' in sys.argv:
+ args = args + ['-D']
+ (options, args) = cmdline.ParseArgs(args)
options.pager = 'binman-invalid-pager'
options.build_dir = self._indir
@@ -144,14 +147,16 @@ class TestFunctional(unittest.TestCase):
# options.verbosity = tout.DEBUG
return control.Binman(options, args)
- def _DoTestFile(self, fname):
+ def _DoTestFile(self, fname, debug=False):
"""Run binman with a given test file
Args:
fname: Device tree source filename to use (e.g. 05_simple.dts)
"""
- return self._DoBinman('-p', '-I', self._indir,
- '-d', self.TestFile(fname))
+ args = ['-p', '-I', self._indir, '-d', self.TestFile(fname)]
+ if debug:
+ args.append('-D')
+ return self._DoBinman(*args)
def _SetupDtb(self, fname, outfile='u-boot.dtb'):
"""Set up a new test device-tree file
@@ -363,6 +368,10 @@ class TestFunctional(unittest.TestCase):
data = self._DoReadFile('05_simple.dts')
self.assertEqual(U_BOOT_DATA, data)
+ def testSimpleDebug(self):
+ """Test a simple binman run with debugging enabled"""
+ data = self._DoTestFile('05_simple.dts', debug=True)
+
def testDual(self):
"""Test that we can handle creating two images
--
2.15.0.448.gf294e3d99a-goog
More information about the U-Boot
mailing list