From nobody Sat Sep 13 19:06:09 2025 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 6090BC636D4 for ; Tue, 31 Jan 2023 22:04:21 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230364AbjAaWET (ORCPT ); Tue, 31 Jan 2023 17:04:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36980 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231237AbjAaWEP (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 4AC975A371 for ; Tue, 31 Jan 2023 14:04:11 -0800 (PST) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-5063c0b909eso178888647b3.7 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=O/OczTS5fYarNjByJgJWNYAlFEjIIQV1xSrwNW+b5iWLqGmr7qqZwB+uE5O3KXE7u9 xlhxmnsTSlXb4E4kK9O5nTIzCzWBr8mC28sBKgpS3bKrsdrHQxXlXRr4z0wAzKAKJBSy MHB4+VHALrTZ2WAK9j9jME9oJ/dnMVHvdz1895gpJmItXjlbFLtD2rA2DqIYporIPPco GYjgIU7Je8GIB0nF2slRgzbD4Nye5soGb8fisU6yHLMpT7zhAmBc0MKB2ezkg2x4oYQE PfXIpZ8BFXzrIBLApo4HPYxCCSTIFr33eZe5ggocVQoen944fDytjrJwS9BF/GfkNVfU Lb/w== X-Gm-Message-State: AO0yUKWf7OrbglMoKKAkxf2lyAIiltQXehmVn6/HNhiC2q4CKM4aT/D+ B+7Ccj8NicW+kqTlNQs51OjMnsxVnA== 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-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 =3D (struct kunit_suite *)seq->private; - enum kunit_status success =3D kunit_suite_has_succeeded(suite); struct kunit_case *test_case; =20 - if (!suite || !suite->log) + if (!suite) return 0; =20 - 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_cas= es(suite)); =20 kunit_suite_for_each_test_case(suite, test_case) debugfs_print_result(seq, suite, test_case); =20 - 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; } =20 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); =20 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)); } =20 @@ -165,16 +173,8 @@ static void kunit_print_ok_not_ok(void *test_or_suite, struct kunit *test =3D is_test ? test_or_suite : NULL; const char *directive_header =3D (status =3D=3D KUNIT_SKIPPED) ? " # SKIP= " : ""; =20 - /* - * 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 =3D=3D KUNIT_SKIPPED) ? directive : ""); --=20 2.39.1.456.gfc5497dd1b-goog