lkml.org 
[lkml]   [2020]   [Apr]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH net-next v6 3/5] kselftest: run tests by fixture
    Date
    Now that all tests have a fixture object move from a global
    list of tests to a list of tests per fixture.

    Order of tests may change as we will now group and run test
    fixture by fixture, rather than in declaration order.

    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Acked-by: Kees Cook <keescook@chromium.org>
    ---
    v5 (Kees):
    - move a comment;
    - remove temporary variable.
    ---
    tools/testing/selftests/kselftest_harness.h | 23 +++++++++++++--------
    1 file changed, 14 insertions(+), 9 deletions(-)

    diff --git a/tools/testing/selftests/kselftest_harness.h b/tools/testing/selftests/kselftest_harness.h
    index de283fd6fc4d..fa7185e45472 100644
    --- a/tools/testing/selftests/kselftest_harness.h
    +++ b/tools/testing/selftests/kselftest_harness.h
    @@ -659,9 +659,12 @@
    } \
    }

    +struct __test_metadata;
    +
    /* Contains all the information about a fixture. */
    struct __fixture_metadata {
    const char *name;
    + struct __test_metadata *tests;
    struct __fixture_metadata *prev, *next;
    } _fixture_global __attribute__((unused)) = {
    .name = "global",
    @@ -698,7 +701,6 @@ struct __test_metadata {
    };

    /* Storage for the (global) tests to be run. */
    -static struct __test_metadata *__test_list;
    static unsigned int __test_count;

    /*
    @@ -713,7 +715,7 @@ static unsigned int __test_count;
    static inline void __register_test(struct __test_metadata *t)
    {
    __test_count++;
    - __LIST_APPEND(__test_list, t);
    + __LIST_APPEND(t->fixture->tests, t);
    }

    static inline int __bail(int for_realz, bool no_print, __u8 step)
    @@ -843,6 +845,7 @@ void __run_test(struct __fixture_metadata *f,
    static int test_harness_run(int __attribute__((unused)) argc,
    char __attribute__((unused)) **argv)
    {
    + struct __fixture_metadata *f;
    struct __test_metadata *t;
    int ret = 0;
    unsigned int count = 0;
    @@ -851,13 +854,15 @@ static int test_harness_run(int __attribute__((unused)) argc,
    /* TODO(wad) add optional arguments similar to gtest. */
    printf("[==========] Running %u tests from %u test cases.\n",
    __test_count, __fixture_count + 1);
    - for (t = __test_list; t; t = t->next) {
    - count++;
    - __run_test(t->fixture, t);
    - if (t->passed)
    - pass_count++;
    - else
    - ret = 1;
    + for (f = __fixture_list; f; f = f->next) {
    + for (t = f->tests; t; t = t->next) {
    + count++;
    + __run_test(f, t);
    + if (t->passed)
    + pass_count++;
    + else
    + ret = 1;
    + }
    }
    printf("[==========] %u / %u tests passed.\n", pass_count, count);
    printf("[ %s ]\n", (ret ? "FAILED" : "PASSED"));
    --
    2.25.4
    \
     
     \ /
      Last update: 2020-04-28 03:05    [W:4.381 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site