Hi David, On Wed, 17 Dec 2025 at 11:43, David Lechner <[email protected]> wrote: > > Set ubconfig to None and add a check in the show_timings() function of > test/py/test.py to ensure that the global ubconfig variable was actually > initialized before access attributes. > > If tests fail early, e.g. because --build failed, ubconfig may not have > been initialized yet and results in an exception in an atexit handler. > Adding this check avoids unnecessary noise in the output. > > Exception ignored in atexit callback: <function cleanup at 0x7de475ea6b60> > Traceback (most recent call last): > File "u-boot/test/py/conftest.py", line 669, in cleanup > show_timings() > File "u-boot/test/py/conftest.py", line 616, in show_timings > if ubconfig.timing: > ^^^^^^^^ > NameError: name 'ubconfig' is not defined > > Signed-off-by: David Lechner <[email protected]> > --- > v2 changes: > - Set to None and check for not None instead of using 'in globals()' > --- > test/py/conftest.py | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/test/py/conftest.py b/test/py/conftest.py > index 8ce680a92a0..5689fcd0349 100644 > --- a/test/py/conftest.py > +++ b/test/py/conftest.py > @@ -28,9 +28,10 @@ import sys > from spawn import BootFail, Timeout, Unexpected, handle_exception > import time > > -# Globals: The HTML log file, and the top-level fixture > +# Globals: The HTML log file, the top-level fixture and the config container > log = None > ubman_fix = None > +ubconfig = None > > TEST_PY_DIR = os.path.dirname(os.path.abspath(__file__)) > > @@ -613,7 +614,7 @@ def show_timings(): > if too_long: > show_bar(f'>{get_time_delta(max_dur)}', too_long_msecs, too_long) > log.info(buf.getvalue()) > - if ubconfig.timing: > + if ubconfig is not None and ubconfig.timing:
if ubconfig and ubconfig.timing > print(buf.getvalue(), end='') > > > > -- > 2.43.0 > Regards, SImon

