Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp83499rwb; Fri, 30 Sep 2022 17:50:36 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6NzCAaxgFCKWIHFmGDHIabU7IgPqlPXGnSHssGBNodHLnemYTfwdlyIs8mIGioLpmvqEAr X-Received: by 2002:a17:906:cc15:b0:788:4c5:808c with SMTP id ml21-20020a170906cc1500b0078804c5808cmr3893207ejb.699.1664585435814; Fri, 30 Sep 2022 17:50:35 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664585435; cv=none; d=google.com; s=arc-20160816; b=taj/QXSub3HdGCU9F4Rh0jX1S89t005AHboyhvx+nhMxkw43K9rc2fVv/X+QHCmicC arkbR4zDQ+p7PUmvJaL+hf3ZIRWbaVKUtm6i7iNEpRo+7mExQK9gCj/eqrjMLuC31sQl Jwt1JQpnWT6UT2OBMwD9uK3Uj8lIT+jTX94qABpe7p74fdGX9CkC9GGfsJjPYxGSTB4T MhE9JgR/wrf8FuHOSa9cCr1cvkE80t+lw4bSrijoqvf/ld99mc81NLayl0ScF79M7bEz 0FaRdoAm5DSkwKYkK8G+bm1nppLUl7I7FijMAMwfKjwjePFgwL48p21NTxCSMxkBDZYK sRnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:dkim-signature; bh=g7IKu7kh+TXflaUbseOlbPiX53qX2o5Vb+tfLsI4XGE=; b=OtlhbBwZwlKk7dnybIgl3TSagLGQZ6x2fjyLX/4U2ETrzOYB446/tOtICILUIdIXMZ Syw9aSkifKPyDXzuvmX/EM+FgBxQ2+XbnhOz+3hJdYI58SqX3C+a0RY2lgaEsRB7CWN4 eqS9zJWcYCiyJKp6nfvNwGSu+vZ2fdpsLaVIUgtdngnE03u69Hn/45R5UTSpjgGGo3cu LREAeldErclzwRdSWdDtbV0gXZu/kCd3NGjZdFsBQvuyvDhSh1byWekX3JBW43qmq/qb bBjEFvfvhBTQi3mjBzFEtNNZiYE0FkLG9zlc78Y9yEfdgJE6Kr+wuks7/RShPnpJZrdl OZGA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=TT8XyI1j; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l12-20020a170906794c00b00780636887fesi2854911ejo.797.2022.09.30.17.50.10; Fri, 30 Sep 2022 17:50:35 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=TT8XyI1j; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232383AbiJAA1g (ORCPT + 99 others); Fri, 30 Sep 2022 20:27:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33136 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232659AbiJAA1A (ORCPT ); Fri, 30 Sep 2022 20:27:00 -0400 Received: from mail-pj1-x104a.google.com (mail-pj1-x104a.google.com [IPv6:2607:f8b0:4864:20::104a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2CFB71397E3 for ; Fri, 30 Sep 2022 17:26:50 -0700 (PDT) Received: by mail-pj1-x104a.google.com with SMTP id 88-20020a17090a09e100b00208c35d9452so3036001pjo.6 for ; Fri, 30 Sep 2022 17:26:50 -0700 (PDT) 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; bh=g7IKu7kh+TXflaUbseOlbPiX53qX2o5Vb+tfLsI4XGE=; b=TT8XyI1j+MuboHcIEBy8S+9qTS/bL6xxy7o2ViUntEzgt3WGf883Lk7OvJyY7/Iz8w B+ZcRhFBcNQHlLbwX4dE/ZdFBJxLOoEfGJe1RNTSJ8WNP7W4IDkqlxG/7h26zv5slJsF CGbZuPy6QbD6vHxK0FXU28bRegwXt8oOh/qBLDGIeQSbXVwAGkLoFi6LvMtsudzHMLlX qGbe7IMI59y6lv+iA3H3VILoHPLGKJ5CBJHBcBQIJ65sIjfm5B8LIcKDhr24//taG87/ AwbtG4fj80zL+oepGgRJaM8K+8XQT3NoXVIU6FbpScI/g/w2UXrBF7igEnSZoRR/oBUq Pb2g== 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; bh=g7IKu7kh+TXflaUbseOlbPiX53qX2o5Vb+tfLsI4XGE=; b=C5uFxXF0aELWKStWUclOfDs1srrcgDAeLMtG4Fj1F63TVCNDw5qJgr0p2JcvI/Ja8F aB7TEiJInESFjqzd2KHwmoiOzUtRXFaNR9A0dV9Y/rlddwHxW70xR/lOUB232URJ23aB uRs/ouRmZJH0NxG6KEvTyTdb1GCbIuGuUwPGtIEx9u3SV/RgH7ygAhJCrN6dYdJuLNEN RbcNGnZ0sS92mVP1Y+TxexGrPWDEnLS9zfNzCVnE47Php9X+QZffgeF4z2ho4lp1P95l sQYImHF4tQRWwYfQz0yR8WAzrMbXTCY8akYo0SwZGSmlR3bUOJ479PDeKqSTNQ+YvgQ7 O2Ew== X-Gm-Message-State: ACrzQf2WbBHRA52ufbCqHxMpYIzIwoi18RoQNId5HtoVTbLz5dlrZIVw 33QywMeGbwZ68/O7P60NDxKPyNWSn8T3Pw== X-Received: from dlatypov-spec.c.googlers.com ([fda3:e722:ac3:cc00:24:72f4:c0a8:3f35]) (user=dlatypov job=sendgmr) by 2002:a17:90b:4a12:b0:203:3482:d39e with SMTP id kk18-20020a17090b4a1200b002033482d39emr877855pjb.145.1664584009747; Fri, 30 Sep 2022 17:26:49 -0700 (PDT) Date: Fri, 30 Sep 2022 17:26:36 -0700 In-Reply-To: <20221001002638.2881842-1-dlatypov@google.com> Mime-Version: 1.0 References: <20221001002638.2881842-1-dlatypov@google.com> X-Mailer: git-send-email 2.38.0.rc1.362.ged0d419d3c-goog Message-ID: <20221001002638.2881842-3-dlatypov@google.com> Subject: [PATCH 2/4] kunit: rename base KUNIT_ASSERTION macro to _KUNIT_FAILED From: Daniel Latypov To: brendanhiggins@google.com, davidgow@google.com Cc: linux-kernel@vger.kernel.org, kunit-dev@googlegroups.com, linux-kselftest@vger.kernel.org, skhan@linuxfoundation.org, miguel.ojeda.sandonis@gmail.com, Daniel Latypov Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Context: Currently this macro's name, KUNIT_ASSERTION conflicts with the name of an enum whose values are {KUNIT_EXPECTATION, KUNIT_ASSERTION}. It's hard to think of a better name for the enum, so rename this macro. It's also a bit strange that the macro might do nothing depending on the boolean argument `pass`. Why not have callers check themselves? This patch: Moves the pass/fail checking into the callers of KUNIT_ASSERTION, so now we only call it when the check has failed. Then we rename the macro the _KUNIT_FAILED() to reflect the new semantics. Signed-off-by: Daniel Latypov --- include/kunit/test.h | 123 +++++++++++++++++++++++-------------------- 1 file changed, 65 insertions(+), 58 deletions(-) diff --git a/include/kunit/test.h b/include/kunit/test.h index 3476549106f7..fec437c8a2b7 100644 --- a/include/kunit/test.h +++ b/include/kunit/test.h @@ -475,30 +475,27 @@ void kunit_do_failed_assertion(struct kunit *test, assert_format_t assert_format, const char *fmt, ...); -#define KUNIT_ASSERTION(test, assert_type, pass, assert_class, assert_format, INITIALIZER, fmt, ...) do { \ - if (unlikely(!(pass))) { \ - static const struct kunit_loc __loc = KUNIT_CURRENT_LOC; \ - struct assert_class __assertion = INITIALIZER; \ - kunit_do_failed_assertion(test, \ - &__loc, \ - assert_type, \ - &__assertion.assert, \ - assert_format, \ - fmt, \ - ##__VA_ARGS__); \ - } \ +#define _KUNIT_FAILED(test, assert_type, assert_class, assert_format, INITIALIZER, fmt, ...) do { \ + static const struct kunit_loc __loc = KUNIT_CURRENT_LOC; \ + struct assert_class __assertion = INITIALIZER; \ + kunit_do_failed_assertion(test, \ + &__loc, \ + assert_type, \ + &__assertion.assert, \ + assert_format, \ + fmt, \ + ##__VA_ARGS__); \ } while (0) #define KUNIT_FAIL_ASSERTION(test, assert_type, fmt, ...) \ - KUNIT_ASSERTION(test, \ - assert_type, \ - false, \ - kunit_fail_assert, \ - kunit_fail_assert_format, \ - {}, \ - fmt, \ - ##__VA_ARGS__) + _KUNIT_FAILED(test, \ + assert_type, \ + kunit_fail_assert, \ + kunit_fail_assert_format, \ + {}, \ + fmt, \ + ##__VA_ARGS__) /** * KUNIT_FAIL() - Always causes a test to fail when evaluated. @@ -523,15 +520,19 @@ void kunit_do_failed_assertion(struct kunit *test, expected_true, \ fmt, \ ...) \ - KUNIT_ASSERTION(test, \ - assert_type, \ - !!(condition) == !!expected_true, \ - kunit_unary_assert, \ - kunit_unary_assert_format, \ - KUNIT_INIT_UNARY_ASSERT_STRUCT(#condition, \ - expected_true), \ - fmt, \ - ##__VA_ARGS__) +do { \ + if (likely(!!(condition) == !!expected_true)) \ + break; \ + \ + _KUNIT_FAILED(test, \ + assert_type, \ + kunit_unary_assert, \ + kunit_unary_assert_format, \ + KUNIT_INIT_UNARY_ASSERT_STRUCT(#condition, \ + expected_true), \ + fmt, \ + ##__VA_ARGS__); \ +} while (0) #define KUNIT_TRUE_MSG_ASSERTION(test, assert_type, condition, fmt, ...) \ KUNIT_UNARY_ASSERTION(test, \ @@ -581,16 +582,18 @@ do { \ .right_text = #right, \ }; \ \ - KUNIT_ASSERTION(test, \ - assert_type, \ - __left op __right, \ - assert_class, \ - format_func, \ - KUNIT_INIT_BINARY_ASSERT_STRUCT(&__text, \ - __left, \ - __right), \ - fmt, \ - ##__VA_ARGS__); \ + if (likely(__left op __right)) \ + break; \ + \ + _KUNIT_FAILED(test, \ + assert_type, \ + assert_class, \ + format_func, \ + KUNIT_INIT_BINARY_ASSERT_STRUCT(&__text, \ + __left, \ + __right), \ + fmt, \ + ##__VA_ARGS__); \ } while (0) #define KUNIT_BINARY_INT_ASSERTION(test, \ @@ -639,16 +642,19 @@ do { \ .right_text = #right, \ }; \ \ - KUNIT_ASSERTION(test, \ - assert_type, \ - strcmp(__left, __right) op 0, \ - kunit_binary_str_assert, \ - kunit_binary_str_assert_format, \ - KUNIT_INIT_BINARY_ASSERT_STRUCT(&__text, \ - __left, \ - __right), \ - fmt, \ - ##__VA_ARGS__); \ + if (likely(strcmp(__left, __right) op 0)) \ + break; \ + \ + \ + _KUNIT_FAILED(test, \ + assert_type, \ + kunit_binary_str_assert, \ + kunit_binary_str_assert_format, \ + KUNIT_INIT_BINARY_ASSERT_STRUCT(&__text, \ + __left, \ + __right), \ + fmt, \ + ##__VA_ARGS__); \ } while (0) #define KUNIT_PTR_NOT_ERR_OR_NULL_MSG_ASSERTION(test, \ @@ -659,15 +665,16 @@ do { \ do { \ const typeof(ptr) __ptr = (ptr); \ \ - KUNIT_ASSERTION(test, \ - assert_type, \ - !IS_ERR_OR_NULL(__ptr), \ - kunit_ptr_not_err_assert, \ - kunit_ptr_not_err_assert_format, \ - KUNIT_INIT_PTR_NOT_ERR_STRUCT(#ptr, \ - __ptr), \ - fmt, \ - ##__VA_ARGS__); \ + if (!IS_ERR_OR_NULL(__ptr)) \ + break; \ + \ + _KUNIT_FAILED(test, \ + assert_type, \ + kunit_ptr_not_err_assert, \ + kunit_ptr_not_err_assert_format, \ + KUNIT_INIT_PTR_NOT_ERR_STRUCT(#ptr, __ptr), \ + fmt, \ + ##__VA_ARGS__); \ } while (0) /** -- 2.38.0.rc1.362.ged0d419d3c-goog