lkml.org 
[lkml]   [2020]   [Oct]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[RFC v2 03/12] kunit: test: add concept of post conditions
    From
    From: Brendan Higgins <brendanhiggins@google.com>

    Add a way to specify that certain conditions must be met at the end of a
    test case.

    Signed-off-by: Brendan Higgins <brendanhiggins@google.com>
    Signed-off-by: Daniel Latypov <dlatypov@google.com>
    ---
    include/kunit/test.h | 6 ++++++
    lib/kunit/test.c | 11 +++++++++++
    2 files changed, 17 insertions(+)

    diff --git a/include/kunit/test.h b/include/kunit/test.h
    index 687782fa44d9..0eb3abb00da4 100644
    --- a/include/kunit/test.h
    +++ b/include/kunit/test.h
    @@ -190,6 +190,11 @@ struct kunit_suite {
    char *log;
    };

    +struct kunit_post_condition {
    + struct list_head node;
    + void (*validate)(struct kunit_post_condition *condition);
    +};
    +
    /**
    * struct kunit - represents a running instance of a test.
    *
    @@ -223,6 +228,7 @@ struct kunit {
    * protect it with some type of lock.
    */
    struct list_head resources; /* Protected by lock. */
    + struct list_head post_conditions;
    };

    void kunit_init_test(struct kunit *test, const char *name, char *log);
    diff --git a/lib/kunit/test.c b/lib/kunit/test.c
    index 670d1cc9c105..4e8c74c89073 100644
    --- a/lib/kunit/test.c
    +++ b/lib/kunit/test.c
    @@ -228,6 +228,7 @@ void kunit_init_test(struct kunit *test, const char *name, char *log)
    {
    spin_lock_init(&test->lock);
    INIT_LIST_HEAD(&test->resources);
    + INIT_LIST_HEAD(&test->post_conditions);
    test->name = name;
    test->log = log;
    if (test->log)
    @@ -269,6 +270,16 @@ static void kunit_case_internal_cleanup(struct kunit *test)
    static void kunit_run_case_cleanup(struct kunit *test,
    struct kunit_suite *suite)
    {
    + struct kunit_post_condition *condition, *condition_safe;
    +
    + list_for_each_entry_safe(condition,
    + condition_safe,
    + &test->post_conditions,
    + node) {
    + condition->validate(condition);
    + list_del(&condition->node);
    + }
    +
    if (suite->exit)
    suite->exit(test);

    --
    2.28.0.1011.ga647a8990f-goog
    \
     
     \ /
      Last update: 2020-10-13 00:22    [W:4.893 / U:0.168 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site