Received: by 2002:a05:7412:8d10:b0:f3:1519:9f41 with SMTP id bj16csp825791rdb; Wed, 6 Dec 2023 00:31:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IGlOqcP0qJ/wYw2YpevigE8cVy3tHfrCf3frX825h4V4HdsTd1YLpctK72Eu2UYGOvaTEIL X-Received: by 2002:a05:6a20:734d:b0:14c:c511:387d with SMTP id v13-20020a056a20734d00b0014cc511387dmr220591pzc.9.1701851465222; Wed, 06 Dec 2023 00:31:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701851465; cv=none; d=google.com; s=arc-20160816; b=EdI7+oxGsospvnqGAYS4QYNsOnyugJ82WkSdcuE6gvHutVOCjLRFYdRGRWX0wLkzQ3 WXdBCkR9oWTmg8ahO38G4sOFoQNrHqrKivAro1wnuLwxL6BoKEBCDlZSLJOaQWapZOK4 yXKXTf7yz/WtvFskySeE0krli+UrFAxTr5Aw6ExC6wHHRVdOW6EOszsa2F1jB3yD/yf8 NqGFSsT5CDMvAqVmDLZuVcDXK6ZfbRqZX90P1cvtwnC7sXxOC9q5Amk7EoCYnYm8USA6 Gfxs81jAOKQ2Cx6zcdjssRmflS9rdUUinaUUibabJL7gffW/vqpoLoaox2ej0hX6yJMW BlDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=alhvNYhYWR0WGhNwH0ytdzy7RoasVPPAjD8bjiLFl2Y=; fh=zBRqlo1sor4udcjFP+CW/IHK75Ov+FrdIyb4DbG5Gf4=; b=m60ravENAXErtH6CJ+mLnsNwfCY3Yk2tEa0J5GkhNtbYXg7pOYc7FoI8+6eBeSFUHa ZRVrC/43el2f2EMZclzGcxCwEi+k6T6nmlj2md06ISUaBSGNgknxvJZ48swpgDZ49CLe MRhpagBzrJBNsACVmVwMEBrciQRL51450cT/4JBDMVl+uHATxSWdCGKDmPHd77Y+x0hf 3O0WfGYj/k+G949w2AhqE+2l7IEtxJjJNfYH7VBwBTFka9PG115aZ7znd4mw9Siu3g51 z3pWG4aU86zJNTqArTnxNrOZdzbdexfTkU2ovB/UKPol0iS9WV7H/FMrDQN02HrGZQ/h Mtsg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=mKcBUBbs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from groat.vger.email (groat.vger.email. [2620:137:e000::3:5]) by mx.google.com with ESMTPS id b2-20020a170902b60200b001c20db25108si10712290pls.41.2023.12.06.00.31.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Dec 2023 00:31:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) client-ip=2620:137:e000::3:5; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=mKcBUBbs; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:5 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by groat.vger.email (Postfix) with ESMTP id D7AB4804430E; Wed, 6 Dec 2023 00:31:01 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at groat.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1377191AbjLFIac (ORCPT + 99 others); Wed, 6 Dec 2023 03:30:32 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40878 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1377195AbjLFIaa (ORCPT ); Wed, 6 Dec 2023 03:30:30 -0500 Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9DB68112 for ; Wed, 6 Dec 2023 00:30:36 -0800 (PST) Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-54c79cca895so8523a12.0 for ; Wed, 06 Dec 2023 00:30:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1701851435; x=1702456235; darn=vger.kernel.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=alhvNYhYWR0WGhNwH0ytdzy7RoasVPPAjD8bjiLFl2Y=; b=mKcBUBbsnZABcPj9KZb34X9qFJY1GTHBw6P95jZFqPgIXtvc3lHU4t2xa479cEVYYc 7N6xvphAIotI/iXYZp6QoW4GO8U9bWKFlr3hBvrmxUuWgM49Y988gbZJlIasS+iYQ4Am v8kPQVIQY5OstrQxn+e8G0ZPpY5OHMy9WH+1z7P4gs+JsJl8xX6DvaFdB73XggNS8wOl oc6BQ5V82BmCCcLVEAVbgfjf6eRJfQmUraq4NJXKGGkGCagRTZnULBaxwJgJnmpkBzkz gYMcxD8Fhx/moJTxuw/gaY7H8d71wXGC4KJb4DB37OjIwycQaJsI4fXK6B5KFVCAdAI6 zW5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701851435; x=1702456235; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=alhvNYhYWR0WGhNwH0ytdzy7RoasVPPAjD8bjiLFl2Y=; b=Rt02VKmHYW8BUcXEDVTNRudTgSpY6DJVAMupmTXq4htCpnMPHyo+DOX005og2MlSrz xedYMO6SKyrLtK0eXKiL33z8wtqHcUkewdoOAH2Glo7YmX1t1Ek9uUfOVI+qRrnppJX6 gAswrX2PEbnqMu5GHYH1kKmZeLMZ+XvN1Eu8l9R/iYWU5E5s5bxIE4ccwIEnOqiGNwVp BS/2lFYMc8vtBXPwMHPGBsLTqbxdqPjWJPT/V6SS3d7/BUHTtGdNWLI8oMSRf0BSe1FD BGs8yNIx0Ny7hRw4unokOe6aSt0kDZkHAj1z0E2nn+xFceBzriGi7k/PsMFd6W5nLfb3 pPbQ== X-Gm-Message-State: AOJu0Yxc4ipHWJFuIYco4A8w1pc8ypN7KS6f0ISk9qDH9xx6a0CJSkom XOOiGpGLLajIC5sTRgmQkBv4mX67gefm711Td4oLUg== X-Received: by 2002:a50:baae:0:b0:545:279:d075 with SMTP id x43-20020a50baae000000b005450279d075mr44501ede.1.1701851434822; Wed, 06 Dec 2023 00:30:34 -0800 (PST) MIME-Version: 1.0 References: <20231205203852.1700497-1-rmoar@google.com> In-Reply-To: <20231205203852.1700497-1-rmoar@google.com> From: David Gow Date: Wed, 6 Dec 2023 16:30:23 +0800 Message-ID: Subject: Re: [PATCH] kunit: tool: fix parsing of test attributes To: Rae Moar Cc: shuah@kernel.org, dlatypov@google.com, brendan.higgins@linux.dev, linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="0000000000004438ef060bd32af2" X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on groat.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (groat.vger.email [0.0.0.0]); Wed, 06 Dec 2023 00:31:02 -0800 (PST) --0000000000004438ef060bd32af2 Content-Type: text/plain; charset="UTF-8" On Wed, 6 Dec 2023 at 04:39, Rae Moar wrote: > > Add parsing of attributes as diagnostic data. Fixes issue with test plan > being parsed incorrectly as diagnostic data when located after > suite-level attributes. > > Note that if there does not exist a test plan line, the diagnostic lines > between the suite header and the first result will be saved in the suite > log rather than the first test case log. > > Signed-off-by: Rae Moar > --- This seems sensible to me, though I'd love to have a test to go along with it (or at least an example input which shows the problem). Indeed, none of the logs in tools/testing/kunit/test_output/ seem to have any KTAP metadata / attributes, so we probably should test that better. -- David > > Note this patch is a resend but I removed the second patch in the series > so now it is a standalone patch. > > tools/testing/kunit/kunit_parser.py | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/tools/testing/kunit/kunit_parser.py b/tools/testing/kunit/kunit_parser.py > index 79d8832c862a..ce34be15c929 100644 > --- a/tools/testing/kunit/kunit_parser.py > +++ b/tools/testing/kunit/kunit_parser.py > @@ -450,7 +450,7 @@ def parse_diagnostic(lines: LineStream) -> List[str]: > Log of diagnostic lines > """ > log = [] # type: List[str] > - non_diagnostic_lines = [TEST_RESULT, TEST_HEADER, KTAP_START, TAP_START] > + non_diagnostic_lines = [TEST_RESULT, TEST_HEADER, KTAP_START, TAP_START, TEST_PLAN] > while lines and not any(re.match(lines.peek()) > for re in non_diagnostic_lines): > log.append(lines.pop()) > @@ -726,6 +726,7 @@ def parse_test(lines: LineStream, expected_num: int, log: List[str], is_subtest: > # test plan > test.name = "main" > ktap_line = parse_ktap_header(lines, test) > + test.log.extend(parse_diagnostic(lines)) > parse_test_plan(lines, test) > parent_test = True > else: > @@ -737,6 +738,7 @@ def parse_test(lines: LineStream, expected_num: int, log: List[str], is_subtest: > if parent_test: > # If KTAP version line and/or subtest header is found, attempt > # to parse test plan and print test header > + test.log.extend(parse_diagnostic(lines)) > parse_test_plan(lines, test) > print_test_header(test) > expected_count = test.expected_count > > base-commit: b85ea95d086471afb4ad062012a4d73cd328fa86 > -- > 2.43.0.rc2.451.g8631bc7472-goog > --0000000000004438ef060bd32af2 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIIPnwYJKoZIhvcNAQcCoIIPkDCCD4wCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg ggz5MIIEtjCCA56gAwIBAgIQeAMYYHb81ngUVR0WyMTzqzANBgkqhkiG9w0BAQsFADBMMSAwHgYD VQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UE AxMKR2xvYmFsU2lnbjAeFw0yMDA3MjgwMDAwMDBaFw0yOTAzMTgwMDAwMDBaMFQxCzAJBgNVBAYT AkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSowKAYDVQQDEyFHbG9iYWxTaWduIEF0bGFz IFIzIFNNSU1FIENBIDIwMjAwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvLe9xPU9W dpiHLAvX7kFnaFZPuJLey7LYaMO8P/xSngB9IN73mVc7YiLov12Fekdtn5kL8PjmDBEvTYmWsuQS 6VBo3vdlqqXZ0M9eMkjcKqijrmDRleudEoPDzTumwQ18VB/3I+vbN039HIaRQ5x+NHGiPHVfk6Rx c6KAbYceyeqqfuJEcq23vhTdium/Bf5hHqYUhuJwnBQ+dAUcFndUKMJrth6lHeoifkbw2bv81zxJ I9cvIy516+oUekqiSFGfzAqByv41OrgLV4fLGCDH3yRh1tj7EtV3l2TngqtrDLUs5R+sWIItPa/4 AJXB1Q3nGNl2tNjVpcSn0uJ7aFPbAgMBAAGjggGKMIIBhjAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0l BBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFHzM CmjXouseLHIb0c1dlW+N+/JjMB8GA1UdIwQYMBaAFI/wS3+oLkUkrk1Q+mOai97i3Ru8MHsGCCsG AQUFBwEBBG8wbTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AyLmdsb2JhbHNpZ24uY29tL3Jvb3Ry MzA7BggrBgEFBQcwAoYvaHR0cDovL3NlY3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvcm9vdC1y My5jcnQwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9iYWxzaWduLmNvbS9yb290LXIz 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 ddIn9n5Jt6Z1o79zxraLMEwGA1UdIARFMEMwQQYJKwYBBAGgMgEoMDQwMgYIKwYBBQUHAgEWJmh0 dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMAwGA1UdEwEB/wQCMAAwgZoGCCsG AQUFBwEBBIGNMIGKMD4GCCsGAQUFBzABhjJodHRwOi8vb2NzcC5nbG9iYWxzaWduLmNvbS9jYS9n c2F0bGFzcjNzbWltZWNhMjAyMDBIBggrBgEFBQcwAoY8aHR0cDovL3NlY3VyZS5nbG9iYWxzaWdu LmNvbS9jYWNlcnQvZ3NhdGxhc3Izc21pbWVjYTIwMjAuY3J0MB8GA1UdIwQYMBaAFHzMCmjXouse LHIb0c1dlW+N+/JjMEYGA1UdHwQ/MD0wO6A5oDeGNWh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20v Y2EvZ3NhdGxhc3Izc21pbWVjYTIwMjAuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQBtHFwIgQZjer5K H+4Q+wns10k7qN+4wN2Uf+JsyOYjukaMEgdLErfA1wwtQ9uHkoYQZcWBuVVkQFa5hI+sqI2m1Weq riMCFSiU38s1tADdMX12IMfJRN60Nznhrw+nPyDRZqRhUTW24TwnHorkDnFPW8PHo7fAw4FrpI0n impZAng7ccvvK09K3ZuhwTIxJMsPXCZYsrXWORTw5sczRAP6XvKbPBJnsJoSTe5dFBPBHOQJOGhU qWfEfWnWMJPF3LxSGLpLFQXO3RwQqmxv08avwXfVPouh1xuB3FX7rpDabT8YDhu9JgIZkLEKko7L yQt6zWwng7k8YF/jGbiAta6VMYICajCCAmYCAQEwaDBUMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQ R2xvYmFsU2lnbiBudi1zYTEqMCgGA1UEAxMhR2xvYmFsU2lnbiBBdGxhcyBSMyBTTUlNRSBDQSAy MDIwAhABzgV+4+mJnUzG7XDy6d2uMA0GCWCGSAFlAwQCAQUAoIHUMC8GCSqGSIb3DQEJBDEiBCDv SBnMae45MTsl4oUsrcrdHe36sEfzE7zIuDSBwMk+wDAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcB MBwGCSqGSIb3DQEJBTEPFw0yMzEyMDYwODMwMzVaMGkGCSqGSIb3DQEJDzFcMFowCwYJYIZIAWUD BAEqMAsGCWCGSAFlAwQBFjALBglghkgBZQMEAQIwCgYIKoZIhvcNAwcwCwYJKoZIhvcNAQEKMAsG CSqGSIb3DQEBBzALBglghkgBZQMEAgEwDQYJKoZIhvcNAQEBBQAEggEAUxPjc0e0u3CJ9J5b+gqy 3G/JOx8SkjN2dlzP38LPzyqR4GHESHdWCHgu9ASMJsNJW3O7B4hdi3eE5AAAX4AUc4tRF1lCPmXt GvbjPjoDsEaEOc/2Z/LdK83ujEYBfiu3s/cVUUQ0GUpqXjUXA9iuMrkzVtxqt7fQDOC2kvpO7TRU R/LM5DZhQYNiIsJhvsj8c545g7vYdn9Twd4C+yKzy01u/zjWQ3YcWAcEo2DNgRN+0NE5wcL6amAG ejgxT/APJAdOJabQww8WKoEOUyVggPgbq9Qaev89l1TA5vHrhIgNn2KgKY37XGXTXcogZyotUDv4 0kuhagmjLzz9AWzxgw== --0000000000004438ef060bd32af2--