]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
test: Avoid failing skipped tests
authorSimon Glass <sjg@chromium.org>
Thu, 10 Oct 2024 00:28:59 +0000 (18:28 -0600)
committerTom Rini <trini@konsulko.com>
Tue, 15 Oct 2024 16:24:27 +0000 (10:24 -0600)
When a test returns -EAGAIN this should not be considered a failure.
Fix what seems to be a problem case, where the pytests see a failure
when a test has merely been skipped.

We cannot squash the -EAGAIN error in ut_run_test() since the failure
count is incremented by its caller, ut_run_test_live_flat()

The specific example here is on snow, where a test is compiled into the
image but cannot run, so returns -EAGAIN to skip:

    test/py/tests/test_ut.py sssnow # ut bdinfo bdinfo_test_eth
    Test: bdinfo_test_eth: bdinfo.c
    Skipping: Console recording disabled
    test/test-main.c:486, ut_run_test_live_flat(): 0 == ut_run_test(uts,
    test, test->name): Expected 0x0 (0), got 0xfffffff5 (-11)
    Test bdinfo_test_eth failed 1 times
    Skipped: 1, Failures: 1
    snow # F+u-boot-test-reset snow snow

The fix is simply to respect the return code from ut_run_test(), so do
that.

Signed-off-by: Simon Glass <sjg@chromium.org>
test/test-main.c

index 479dbb33b724ba0923d13633c81b45c33f4c0139..4daca81111da2aceaf8d8d26c1a66417b1f5f7ec 100644 (file)
@@ -486,7 +486,7 @@ static int ut_run_test(struct unit_test_state *uts, struct unit_test *test,
 static int ut_run_test_live_flat(struct unit_test_state *uts,
                                 struct unit_test *test)
 {
-       int runs;
+       int runs, ret;
 
        if ((test->flags & UTF_OTHER_FDT) && !IS_ENABLED(CONFIG_SANDBOX))
                return skip_test(uts);
@@ -496,8 +496,11 @@ static int ut_run_test_live_flat(struct unit_test_state *uts,
        if (CONFIG_IS_ENABLED(OF_LIVE)) {
                if (!(test->flags & UTF_FLAT_TREE)) {
                        uts->of_live = true;
-                       ut_assertok(ut_run_test(uts, test, test->name));
-                       runs++;
+                       ret = ut_run_test(uts, test, test->name);
+                       if (ret != -EAGAIN) {
+                               ut_assertok(ret);
+                               runs++;
+                       }
                }
        }
 
@@ -521,8 +524,11 @@ static int ut_run_test_live_flat(struct unit_test_state *uts,
            (!runs || ut_test_run_on_flattree(test)) &&
            !(gd->flags & GD_FLG_FDT_CHANGED)) {
                uts->of_live = false;
-               ut_assertok(ut_run_test(uts, test, test->name));
-               runs++;
+               ret = ut_run_test(uts, test, test->name);
+               if (ret != -EAGAIN) {
+                       ut_assertok(ret);
+                       runs++;
+               }
        }
 
        return 0;