Received: by 2002:a05:6602:18e:0:0:0:0 with SMTP id m14csp200949ioo; Thu, 26 May 2022 01:27:00 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxNtSSQrcJ/lNDPML9fKETjF5DJ2LX1e3bI+HUDw0DkBvOJel3kP359duvCARMxRINNQYiI X-Received: by 2002:a63:64a:0:b0:3fa:2f02:601d with SMTP id 71-20020a63064a000000b003fa2f02601dmr18419003pgg.514.1653553619881; Thu, 26 May 2022 01:26:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1653553619; cv=none; d=google.com; s=arc-20160816; b=cV6jbRGSZ49rh02vN1mxV48Ft99J5u2lnJIlbEe0C1ZV5jjw+zkIPFuEEg+TfPtVZj cVmXV0ZESgZeZsHmas82cCOmY8eGnNCYqzM9OdUZI2hCGFzKsIFqyMLI6vQa+8DjR0il 2lKUpNwWBmtU/GMuEy/NF8QTR/3Uw6bZljfT9koMI6ELXZxrPKKvw4jHd8irGVkKATB/ OmXK3iwSjzyYg2LqXPVcToNmyAmMgq1HwslI7YI3sCmjnYq5op2rcIHlZYDzHwPkdEO5 k6f/f1KVhDuphrUIhOIp6i+Q34yBn+PKxG6m1Sp5/FzWX+FwkTkqkNmIUPuEi6fUOrHv Bh1w== 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:references:mime-version :message-id:in-reply-to:date:dkim-signature; bh=LVwK1TWS2ZAb7Kfk7FPrer/dNWd3IkmkzZFa2JkAqMQ=; b=Re4x6CJ/GRBvWIINZHwZeQ3M9h6BMC9N0DbvP/MrCp/ZSJSFl+agoMx2S3wQv76aWZ 15t0Lj6NfgfnCNYpCEB2MrH1cy8uTIxIarK3zl5DB7yxQWZh1xjLyS3iGzdDSsf4fEvn sxayVvyFOcwYhND7fvlxYkI8k/Lo+nG2daifOA8OytS1UiwK6wWVVfOZKcamKjccmHwV fSrWSYeG+dZIEW0bmf3/SYUkmyy8GP4jnd3pOaHUY/x73QF4FwOf2ddTrhoBJhBYekmn EvDdFAMGSkP7ub2UAVEogZDiMGgOxv16xt3AXJU7DyU8B+txIW1kv2j8LQvgO0nO4iST Gu6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=CuaSdqC5; 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 k15-20020aa788cf000000b0050e0a5aa240si1371442pff.6.2022.05.26.01.26.47; Thu, 26 May 2022 01:26:59 -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=CuaSdqC5; 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 S245209AbiEYPpS (ORCPT + 99 others); Wed, 25 May 2022 11:45:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245258AbiEYPpC (ORCPT ); Wed, 25 May 2022 11:45:02 -0400 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 472B78DDED for ; Wed, 25 May 2022 08:45:01 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id i204-20020a2522d5000000b006524ae5d7d7so4960065ybi.16 for ; Wed, 25 May 2022 08:45:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=LVwK1TWS2ZAb7Kfk7FPrer/dNWd3IkmkzZFa2JkAqMQ=; b=CuaSdqC5/5PGcYkkjh3I3OulmQD6xBIMr/i67/rl3Sr5cF5QK7OG8SNCHSejBCSiIk nYuKyrdDBQG9TzVOPyZnfHKbYR9ZLYhuVYNx+/hI9J/p96Pm4rG0hwKBSVm7JiSmDaAJ 8oQuniLZV712jAH7Hi5EUL00vQrXjmDGHht6C05HzTKBbO5uPqQGd9JMfZF364rkA4bo HRlCpE905u+xVUd3l+C00OV5QSoY7s3/GKn8e/BkktXg9ZZUceVASl/sjBPF3IbrbGss ff9PXEEjt9LgkVCED7YN2NL50v/EqNmcj0ywVqewWziWGuo7Mqm/EGeV0tujugQwnhBu Ebyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=LVwK1TWS2ZAb7Kfk7FPrer/dNWd3IkmkzZFa2JkAqMQ=; b=5gUvsYs8u3M0KYBBlOawYYf+0S+uYdFlhynT72Cppn//szlNb8ZYsCFEkXOk78vi8d CLqVDmJpxZAXlzLsA745EOZ1suJxv3fwRJI+pypeBFiIScHkPjZ9Sl60q5Swks1IGF02 q1aSE5q3FvZDDFZqUn6CP7t01UdxwmuosMInzxLNGPM89Wm6Z2HuVQQNFD+wmTq9FscH CE/oVXtSMRNETyk6UhxMeYPMnSoaZQ9ejGoX9XgqGAkts5c+/tyeSDeVl0sXytRfytDv K/Pvyq+tXAIsJQPkehthCMZ97EI10GLrfOpf4XRn/WvKsY+IOTyT34Lh1kIqchV1vCzs uEJw== X-Gm-Message-State: AOAM532dXDWn1cCL3axCeEU+bOWeH3Xv87KgT2G1AcrA6KOujQsFb9Fi zCEdHuiG5aB3B3CS83TeXJZzSo5d2/jHHw== X-Received: from dlatypov.svl.corp.google.com ([2620:15c:2cd:202:5bba:b161:2a8a:2ddd]) (user=dlatypov job=sendgmr) by 2002:a05:6902:143:b0:628:7cf1:f2a9 with SMTP id p3-20020a056902014300b006287cf1f2a9mr30129754ybh.51.1653493500535; Wed, 25 May 2022 08:45:00 -0700 (PDT) Date: Wed, 25 May 2022 08:44:40 -0700 In-Reply-To: <20220525154442.1438081-1-dlatypov@google.com> Message-Id: <20220525154442.1438081-3-dlatypov@google.com> Mime-Version: 1.0 References: <20220525154442.1438081-1-dlatypov@google.com> X-Mailer: git-send-email 2.36.1.124.g0e6072fb45-goog Subject: [RFC PATCH 2/4] rfc: kunit: rename base KUNIT_ASSERTION macro to _KUNIT_FAILED From: Daniel Latypov To: brendanhiggins@google.com, davidgow@google.com Cc: ojeda@kernel.org, linux-kernel@vger.kernel.org, kunit-dev@googlegroups.com, linux-kselftest@vger.kernel.org, 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,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 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 | 119 ++++++++++++++++++++++--------------------- 1 file changed, 61 insertions(+), 58 deletions(-) diff --git a/include/kunit/test.h b/include/kunit/test.h index 6730734a2216..4a7cb7e72660 100644 --- a/include/kunit/test.h +++ b/include/kunit/test.h @@ -512,30 +512,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. @@ -560,15 +557,18 @@ 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, \ @@ -618,16 +618,17 @@ 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, \ @@ -676,16 +677,18 @@ 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, \ @@ -696,15 +699,15 @@ 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 (likely(!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.36.1.124.g0e6072fb45-goog