From patchwork Tue Jan 31 22:03:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rae Moar X-Patchwork-Id: 649464 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2F3CDC38142 for ; Tue, 31 Jan 2023 22:04:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230325AbjAaWEI (ORCPT ); Tue, 31 Jan 2023 17:04:08 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230430AbjAaWEH (ORCPT ); Tue, 31 Jan 2023 17:04:07 -0500 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EF87B5A379 for ; Tue, 31 Jan 2023 14:04:05 -0800 (PST) Received: by mail-yb1-xb49.google.com with SMTP id h14-20020a258a8e000000b00827819f87e5so5767215ybl.0 for ; Tue, 31 Jan 2023 14:04:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=meTLPB0S8isCGh32fDdvuybRpGWXcZkpfQ+uXtFdMFQ=; b=Xsd5tBjM1lfSWnku+1fCrRq6TpFyYgHrqqrStFmgQulM46YKhzw95lcbuLT+XV4I+L U5GynEi8XZ09sJSsFe9ObfcmT/c5gP1dSMxk7kq6VRjy+1NhCXDwg6SQjgEvQgHxAGCL wKSpMUrcj2u5LhBLq2V22IlUES1INRe4k9mrwlPm0i1JrJQf5mJ2IRfDoLNL7XzEG+Nm dpe6o4t5d7wMKnrEFcQXbQGntxUQfkx+XVJOmDgVrggrcImZEe8zMyMTFM7ogLMqifb7 dEiGmsBxVZ31z6MR1l3GMLxN2JaNGdQdh+1Qr7MaNUd7DRjbnDoKXMwT0PVGXn27v97N cUMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=meTLPB0S8isCGh32fDdvuybRpGWXcZkpfQ+uXtFdMFQ=; b=5rD0wqthyeGF7ssaYatMUkGiJugVj/VoiQ0LCsHOfZ/LsTlUA5RIEa3ZsarbhO2WPo AAa2T80fknqFDZ73VNNoROZsI4BToAPKZHJ1YlcIMmfGDgd/9vh5R/Pe7lgKHb7XEZqA ho+d3J8futu6PcBS5D7MDMKTsmOZig9FqE/cC0lRn8i5M1gCxpJkXk/+Pbzh8NbZx9Mv eQcVN27oxk17imgzViMtwhZILuezxUaJkx0FjS2CWbttDx6RleUQXWqoVmnPPR28CVhF iKfxUNkSYBJHcobPOubJz8NCZA4xa9qx4kUJO2kbJN/nQ8BVrCO+YjZwMD7Pvcz4Ef6l cvMg== X-Gm-Message-State: AO0yUKV6ZKtjNxWhCqCeGfUTWpoycXu1YES1vN5sIWmHvo49WrHzRZGA N/5h+BdjOkOYsP2eZ7uy6jZVabOYzA== X-Google-Smtp-Source: AK7set/yIQ12Tx3gPAoLAVorLzQGTHrglMdq1znMSPN4wPY7NgV4wmheJ69TN2voxlj7HKoSPI4EbF9DIQ== X-Received: from rmoar-specialist.c.googlers.com ([fda3:e722:ac3:cc00:2b:7d90:c0a8:45d3]) (user=rmoar job=sendgmr) by 2002:a81:1109:0:b0:506:3b2d:da68 with SMTP id 9-20020a811109000000b005063b2dda68mr3173122ywr.94.1675202645233; Tue, 31 Jan 2023 14:04:05 -0800 (PST) Date: Tue, 31 Jan 2023 22:03:53 +0000 In-Reply-To: <20230131220355.1603527-1-rmoar@google.com> Mime-Version: 1.0 References: <20230131220355.1603527-1-rmoar@google.com> X-Mailer: git-send-email 2.39.1.456.gfc5497dd1b-goog Message-ID: <20230131220355.1603527-2-rmoar@google.com> Subject: [PATCH v1 1/3] kunit: fix bug in debugfs logs of parameterized tests From: Rae Moar To: brendanhiggins@google.com, davidgow@google.com, dlatypov@google.com Cc: skhan@linuxfoundation.org, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Rae Moar Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Fix bug in debugfs logs that causes parameterized results to not appear in the log because the log is reintialized (cleared) when each parameter is run. Ensure these results appear in the debugfs logs and increase log size to allow for the size of parameterized results. Signed-off-by: Rae Moar Reviewed-by: David Gow --- include/kunit/test.h | 2 +- lib/kunit/test.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/kunit/test.h b/include/kunit/test.h index 87ea90576b50..0a077a4c067c 100644 --- a/include/kunit/test.h +++ b/include/kunit/test.h @@ -34,7 +34,7 @@ DECLARE_STATIC_KEY_FALSE(kunit_running); struct kunit; /* Size of log associated with test. */ -#define KUNIT_LOG_SIZE 512 +#define KUNIT_LOG_SIZE 1500 /* Maximum size of parameter description string. */ #define KUNIT_PARAM_DESC_SIZE 128 diff --git a/lib/kunit/test.c b/lib/kunit/test.c index 51cae59d8aae..66ba93b8222c 100644 --- a/lib/kunit/test.c +++ b/lib/kunit/test.c @@ -437,7 +437,6 @@ static void kunit_run_case_catch_errors(struct kunit_suite *suite, struct kunit_try_catch_context context; struct kunit_try_catch *try_catch; - kunit_init_test(test, test_case->name, test_case->log); try_catch = &test->try_catch; kunit_try_catch_init(try_catch, @@ -533,6 +532,8 @@ int kunit_run_tests(struct kunit_suite *suite) struct kunit_result_stats param_stats = { 0 }; test_case->status = KUNIT_SKIPPED; + kunit_init_test(&test, test_case->name, test_case->log); + if (!test_case->generate_params) { /* Non-parameterised test. */ kunit_run_case_catch_errors(suite, test_case, &test); From patchwork Tue Jan 31 22:03:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rae Moar X-Patchwork-Id: 649049 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9CC16C636CC for ; Tue, 31 Jan 2023 22:04:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231575AbjAaWER (ORCPT ); Tue, 31 Jan 2023 17:04:17 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231302AbjAaWEP (ORCPT ); Tue, 31 Jan 2023 17:04:15 -0500 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4D5A95AA6D for ; Tue, 31 Jan 2023 14:04:11 -0800 (PST) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-51ccd655ed8so29948227b3.18 for ; Tue, 31 Jan 2023 14:04:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=moADQALSg0tb19IAK6VFXnHmoG36e7OfUG93vqCxfyc=; b=ogWowkUFyiShxyTJKM1sRMy0WMSVn9B6vJ/j9Q1ZU9IBIJHls038PG7jyled6Xu8e8 yn6idyvDB1l1avNxwbYlYNfJmkYAzlvnAANQB3dwXB2qhj73opiaDUkrx1w2Z+IglkGi uWUCUVd5QykzNEhJahoLrLihjwTwQsIOyQPn3rYEYa1vwuTkWiFqmTvWcSWMWPHDzCPj z+umS6DMaXCJ04fcogS2vWHa6Mau0fcnyNuj0fZCZSahC0BscGxWPz67iG+U3L6VuZSp e9pFUSSxgQkDH0/oweIMI89A6i93+W7Yhx/H/IxbfFeI/YaP/gojn1aqq0o34TSlnQ9f izUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=moADQALSg0tb19IAK6VFXnHmoG36e7OfUG93vqCxfyc=; b=PoHuGJAJtSeDALfV10wV0Fpveg3lcxZZHmQB/h6Bzt4AHx3DXFxWbiF1F9JADceOrc ZyLT12PbRSIzrtnQxCGI5FVEqoB1JRZYHCMsmiAqiBFnMwUphsobCUj8/hRnqacFXQJk 1l2AeovPaB7Ex6P0oP38TwSJ0hj2CnzODzBUb6V5DddlXdUgQ+E3V8FzUyvDIDVE29yV NYcALDYtCjtmNlNbTMYSO2xYIU5mY4YWuXxab1HEtHmxVA7V7IyPLyvjPWOfwL6iXY5e zHzCF89tBU62JDa1qKPzr+CkpLZWI93sYfdLpQtigxmqjq6kyktcMcCWer5KTp8ByW0k HYuw== X-Gm-Message-State: AO0yUKVCikDi4dV8XDxEwhxpM3GqzjYzieGQWZ0wnQH1CAEZh8l3hebf 2tGtjC20X9n+oP3D90rmXsjQ0oPoAg== X-Google-Smtp-Source: AK7set9Dy3KTgirTMtUUw+IeaYDLfCtmGVkArC89tinayABqHTuJ6pYnAC8nBVevxDWu1TmKNkfwQsudlw== X-Received: from rmoar-specialist.c.googlers.com ([fda3:e722:ac3:cc00:2b:7d90:c0a8:45d3]) (user=rmoar job=sendgmr) by 2002:a05:690c:d1b:b0:506:6e1a:9b0 with SMTP id cn27-20020a05690c0d1b00b005066e1a09b0mr3288384ywb.277.1675202650592; Tue, 31 Jan 2023 14:04:10 -0800 (PST) Date: Tue, 31 Jan 2023 22:03:54 +0000 In-Reply-To: <20230131220355.1603527-1-rmoar@google.com> Mime-Version: 1.0 References: <20230131220355.1603527-1-rmoar@google.com> X-Mailer: git-send-email 2.39.1.456.gfc5497dd1b-goog Message-ID: <20230131220355.1603527-3-rmoar@google.com> Subject: [PATCH v1 2/3] kunit: fix bug in the order of lines in debugfs logs From: Rae Moar To: brendanhiggins@google.com, davidgow@google.com, dlatypov@google.com Cc: skhan@linuxfoundation.org, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Rae Moar Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Fix bug in debugfs logs that causes an incorrect order of lines in the debugfs log. Currently, any suite diagnostic lines, including the test counts lines that show the number of tests passed, failed, and skipped, appear prior to the individual results, which is a bug. Ensure the order of printing for the debugfs log is correct. Signed-off-by: Rae Moar --- lib/kunit/debugfs.c | 13 ++++++++----- lib/kunit/test.c | 24 ++++++++++++------------ 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/lib/kunit/debugfs.c b/lib/kunit/debugfs.c index de0ee2e03ed6..fbc645590701 100644 --- a/lib/kunit/debugfs.c +++ b/lib/kunit/debugfs.c @@ -52,19 +52,22 @@ static void debugfs_print_result(struct seq_file *seq, static int debugfs_print_results(struct seq_file *seq, void *v) { struct kunit_suite *suite = (struct kunit_suite *)seq->private; - enum kunit_status success = kunit_suite_has_succeeded(suite); struct kunit_case *test_case; - if (!suite || !suite->log) + if (!suite) return 0; - seq_printf(seq, "%s", suite->log); + /* Print suite header because it is not stored in the test logs. */ + seq_puts(seq, KUNIT_SUBTEST_INDENT "KTAP version 1\n"); + seq_printf(seq, KUNIT_SUBTEST_INDENT "# Subtest: %s\n", suite->name); + seq_printf(seq, KUNIT_SUBTEST_INDENT "1..%zd\n", kunit_suite_num_test_cases(suite)); kunit_suite_for_each_test_case(suite, test_case) debugfs_print_result(seq, suite, test_case); - seq_printf(seq, "%s %d %s\n", - kunit_status_to_ok_not_ok(success), 1, suite->name); + if (suite->log) + seq_printf(seq, "%s", suite->log); + return 0; } diff --git a/lib/kunit/test.c b/lib/kunit/test.c index 66ba93b8222c..27763f0b420c 100644 --- a/lib/kunit/test.c +++ b/lib/kunit/test.c @@ -147,10 +147,18 @@ EXPORT_SYMBOL_GPL(kunit_suite_num_test_cases); static void kunit_print_suite_start(struct kunit_suite *suite) { - kunit_log(KERN_INFO, suite, KUNIT_SUBTEST_INDENT "KTAP version 1\n"); - kunit_log(KERN_INFO, suite, KUNIT_SUBTEST_INDENT "# Subtest: %s", + /* + * We do not log the test suite header as doing so would + * mean debugfs display would consist of the test suite + * header prior to individual test results. + * Hence directly printk the suite status, and we will + * separately seq_printf() the suite header for the debugfs + * representation. + */ + pr_info(KUNIT_SUBTEST_INDENT "KTAP version 1\n"); + pr_info(KUNIT_SUBTEST_INDENT "# Subtest: %s", suite->name); - kunit_log(KERN_INFO, suite, KUNIT_SUBTEST_INDENT "1..%zd", + pr_info(KUNIT_SUBTEST_INDENT "1..%zd", kunit_suite_num_test_cases(suite)); } @@ -165,16 +173,8 @@ static void kunit_print_ok_not_ok(void *test_or_suite, struct kunit *test = is_test ? test_or_suite : NULL; const char *directive_header = (status == KUNIT_SKIPPED) ? " # SKIP " : ""; - /* - * We do not log the test suite results as doing so would - * mean debugfs display would consist of the test suite - * description and status prior to individual test results. - * Hence directly printk the suite status, and we will - * separately seq_printf() the suite status for the debugfs - * representation. - */ if (suite) - pr_info("%s %zd %s%s%s\n", + kunit_log(KERN_INFO, suite, "%s %zd %s%s%s\n", kunit_status_to_ok_not_ok(status), test_number, description, directive_header, (status == KUNIT_SKIPPED) ? directive : ""); From patchwork Tue Jan 31 22:03:55 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rae Moar X-Patchwork-Id: 649463 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B7631C38142 for ; Tue, 31 Jan 2023 22:04:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231469AbjAaWET (ORCPT ); Tue, 31 Jan 2023 17:04:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36992 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231524AbjAaWER (ORCPT ); Tue, 31 Jan 2023 17:04:17 -0500 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9FBE45AA58 for ; Tue, 31 Jan 2023 14:04:13 -0800 (PST) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-4b34cf67fb6so179815137b3.6 for ; Tue, 31 Jan 2023 14:04:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=hHgl236BVfwTQ35JpXHYmzAIuFKEayd+GMozQ/eghgw=; b=WHNYPmOZxbemeT8b9FCEYZ1Qk92ha/CQ3JaHq+PEp8YFNo+q0ryoC3x6C3RO2obfFf arga+6jOQiWZe2eq5q7W0JqwBa/tXV8gzF+FqHfNkRPUWgKyC3kbmOTMb70iCmplrKrd 4p3xWmmED654qRwqbZZLuaiuQ5ddiNTUmNdkg/qK+fvks3FjpbxhXv1FLl0L3iiaAgAr IViSsOU9UjT/igSxTXCqD6EPaneT/+6K8wZLopolBvt4t2XFK6VcvbTX+QAF2p9463Sj AbVwCtT2FdBDj8tsEWzyayJRYiqNOoyptBF90EM5g0DHPZ0Y1C5OUOqO9UdZsVxuNLNO XZRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=hHgl236BVfwTQ35JpXHYmzAIuFKEayd+GMozQ/eghgw=; b=55G9V6rQ8KbxvWkHnZFjHSaTiVXmcZ7WNF4dDdegxZtIc/GyfAz+Hxg7WX3B/a7f97 6efmBT7yriWITqF/W1bhMQWTUa7c4sC9i5Qh6WeOrQkb2H19mL9r2y2w95kePdmvzPVC z+WbNTTQoIu4PzsqGEDsW2qzGiS+2xD7ayvyHo2LPOPZloj8fsv/FRHiPTaA2h1grfsw jHu9JhRPyma65+Pez5/6ERsdrbyu2+kMk2YDEYVwNbSi4yBgtJGgE9Xdj6YKyRPT6ggC jndTDexBe+mJhG4R0N5Qg6p3EhlqRzmxIIm4wRZY4VKNb6kMWjfPXW6iMsDx41cssk6J Lb1g== X-Gm-Message-State: AO0yUKVA/PrAQlACvjygWsgLymeaM7nMIECZPifY1AtimAHp3tTuqGLV UFXlzJtyPt6um2zomMjHzljL61Qltw== X-Google-Smtp-Source: AK7set/PIoxhNAc5wXsGxC3/QETHrKPQYKB+AF7xsrfyy+VIa80p5cv9hVnpjZcts7iJsrytDX9J/wkayA== X-Received: from rmoar-specialist.c.googlers.com ([fda3:e722:ac3:cc00:2b:7d90:c0a8:45d3]) (user=rmoar job=sendgmr) by 2002:a81:6946:0:b0:506:527a:5146 with SMTP id e67-20020a816946000000b00506527a5146mr2725476ywc.178.1675202652837; Tue, 31 Jan 2023 14:04:12 -0800 (PST) Date: Tue, 31 Jan 2023 22:03:55 +0000 In-Reply-To: <20230131220355.1603527-1-rmoar@google.com> Mime-Version: 1.0 References: <20230131220355.1603527-1-rmoar@google.com> X-Mailer: git-send-email 2.39.1.456.gfc5497dd1b-goog Message-ID: <20230131220355.1603527-4-rmoar@google.com> Subject: [PATCH v1 3/3] kunit: fix bug of extra newline characters in debugfs logs From: Rae Moar To: brendanhiggins@google.com, davidgow@google.com, dlatypov@google.com Cc: skhan@linuxfoundation.org, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Rae Moar Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Fix bug of the extra newline characters in debugfs logs. When a line is added to debugfs with a newline character at the end, an extra line appears in the debugfs log. Remove these extra lines. Add kunit_log_newline_test to provide test coverage for this issue. (Also, move kunit_log_test above suite definition to remove the unnecessary declaration prior to the suite definition) Signed-off-by: Rae Moar --- lib/kunit/kunit-test.c | 36 ++++++++++++++++++++++++------------ lib/kunit/test.c | 9 ++++++++- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/lib/kunit/kunit-test.c b/lib/kunit/kunit-test.c index 4df0335d0d06..e9114a466f1e 100644 --- a/lib/kunit/kunit-test.c +++ b/lib/kunit/kunit-test.c @@ -443,18 +443,6 @@ static struct kunit_suite kunit_resource_test_suite = { .test_cases = kunit_resource_test_cases, }; -static void kunit_log_test(struct kunit *test); - -static struct kunit_case kunit_log_test_cases[] = { - KUNIT_CASE(kunit_log_test), - {} -}; - -static struct kunit_suite kunit_log_test_suite = { - .name = "kunit-log-test", - .test_cases = kunit_log_test_cases, -}; - static void kunit_log_test(struct kunit *test) { struct kunit_suite suite; @@ -481,6 +469,30 @@ static void kunit_log_test(struct kunit *test) #endif } +static void kunit_log_newline_test(struct kunit *test) +{ +#ifdef CONFIG_KUNIT_DEBUGFS + kunit_info(test, "extra newline\n"); + + KUNIT_ASSERT_NOT_NULL_MSG(test, strstr(test->log, "extra newline\n"), + "Missing log line, full log:\n%s", test->log); + KUNIT_EXPECT_NULL(test, strstr(test->log, "extra newline\n\n")); +#else + kunit_skip(test, "only useful when debugfs is enabled"); +#endif +} + +static struct kunit_case kunit_log_test_cases[] = { + KUNIT_CASE(kunit_log_test), + KUNIT_CASE(kunit_log_newline_test), + {} +}; + +static struct kunit_suite kunit_log_test_suite = { + .name = "kunit-log-test", + .test_cases = kunit_log_test_cases, +}; + static void kunit_status_set_failure_test(struct kunit *test) { struct kunit fake; diff --git a/lib/kunit/test.c b/lib/kunit/test.c index 27763f0b420c..76d9c31943bf 100644 --- a/lib/kunit/test.c +++ b/lib/kunit/test.c @@ -117,6 +117,7 @@ void kunit_log_append(char *log, const char *fmt, ...) char line[KUNIT_LOG_SIZE]; va_list args; int len_left; + int line_len; if (!log) return; @@ -125,10 +126,16 @@ void kunit_log_append(char *log, const char *fmt, ...) if (len_left <= 0) return; + // Evaluate the length of the line with arguments va_start(args, fmt); - vsnprintf(line, sizeof(line), fmt, args); + line_len = vsnprintf(line, sizeof(line), fmt, args); va_end(args); + // If line has two newline characters, do not print + // second newline character + if (fmt[strlen(fmt) - 2] == '\n') + line[line_len - 1] = '\0'; + strncat(log, line, len_left); } EXPORT_SYMBOL_GPL(kunit_log_append);