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

Reply via email to