From patchwork Thu Nov 12 18:07:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 11900935 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 7E8EE139F for ; Thu, 12 Nov 2020 18:07:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6694322227 for ; Thu, 12 Nov 2020 18:07:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726181AbgKLSHi (ORCPT ); Thu, 12 Nov 2020 13:07:38 -0500 Received: from mga06.intel.com ([134.134.136.31]:20332 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726041AbgKLSHh (ORCPT ); Thu, 12 Nov 2020 13:07:37 -0500 IronPort-SDR: gRjVopDRjOU7lZ31rYyQ8ZU1huST6gYGZtrTRIyrusKurs+j5Iie6EeZ0M2zB5Da7/LQkB8LsQ XqT5Rt+FJDdA== X-IronPort-AV: E=McAfee;i="6000,8403,9803"; a="231973758" X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="231973758" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Nov 2020 10:07:36 -0800 IronPort-SDR: Dk7/kHYG/57BQA7UZ4IpiePPgDyoO6723TOWdUeiCbNZ0mvdoNMu9c3Vvhw0HyV/RXBIJcH1w4 xKhvu7A4EO0w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="366439608" Received: from black.fi.intel.com ([10.237.72.28]) by FMSMGA003.fm.intel.com with ESMTP; 12 Nov 2020 10:07:34 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id 84851D2; Thu, 12 Nov 2020 20:07:33 +0200 (EET) From: Andy Shevchenko To: linux-kselftest@vger.kernel.org, Andrew Morton , kunit-dev@googlegroups.com, Shuah Khan , Vitor Massaru Iha Cc: Mark Brown , Brendan Higgins , David Gow , Andy Shevchenko Subject: [PATCH v4 1/6] lib/list_kunit: Follow new file name convention for KUnit tests Date: Thu, 12 Nov 2020 20:07:27 +0200 Message-Id: <20201112180732.75589-1-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Follow new file name convention for the KUnit tests. Since we have lib/*test*.c in a few variations, use 'kunit' suffix to distinguish usual test cases with KUnit-based ones. Signed-off-by: Andy Shevchenko Reviewed-by: David Gow Acked-by: Brendan Higgins --- v4: added tag (Brendan) MAINTAINERS | 2 +- lib/Makefile | 2 +- lib/{list-test.c => list_kunit.c} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename lib/{list-test.c => list_kunit.c} (100%) diff --git a/MAINTAINERS b/MAINTAINERS index f1f088a29bc2..5901b817d0bc 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -10222,7 +10222,7 @@ M: David Gow L: linux-kselftest@vger.kernel.org L: kunit-dev@googlegroups.com S: Maintained -F: lib/list-test.c +F: lib/list_kunit.c LITEX PLATFORM M: Karol Gugala diff --git a/lib/Makefile b/lib/Makefile index ce45af50983a..9d78ef73d6ed 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -349,6 +349,6 @@ obj-$(CONFIG_PLDMFW) += pldmfw/ # KUnit tests obj-$(CONFIG_BITFIELD_KUNIT) += bitfield_kunit.o -obj-$(CONFIG_LIST_KUNIT_TEST) += list-test.o +obj-$(CONFIG_LIST_KUNIT_TEST) += list_kunit.o obj-$(CONFIG_LINEAR_RANGES_TEST) += test_linear_ranges.o obj-$(CONFIG_BITS_TEST) += test_bits.o diff --git a/lib/list-test.c b/lib/list_kunit.c similarity index 100% rename from lib/list-test.c rename to lib/list_kunit.c From patchwork Thu Nov 12 18:07:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 11900937 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id B1C0416C1 for ; Thu, 12 Nov 2020 18:07:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9A1E422247 for ; Thu, 12 Nov 2020 18:07:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726041AbgKLSHi (ORCPT ); Thu, 12 Nov 2020 13:07:38 -0500 Received: from mga14.intel.com ([192.55.52.115]:14029 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726056AbgKLSHh (ORCPT ); Thu, 12 Nov 2020 13:07:37 -0500 IronPort-SDR: r6XWrqZsRu0/bQOH3Oyf7hOcnvqi/Jic15qgKTs3AzqRSCUKJMlEl05bezQndbzCS5h3Sawf4l ziKn9iszETew== X-IronPort-AV: E=McAfee;i="6000,8403,9803"; a="169570596" X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="169570596" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Nov 2020 10:07:37 -0800 IronPort-SDR: 9/lV0UeTa8F/auMHg5+OZYXgUik4GXOThhUbAsxs0GP/OJclx+Rth6YIXWcnOlztyCHe71y5Mk Dnbk4abdFwBA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="339495514" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga002.jf.intel.com with ESMTP; 12 Nov 2020 10:07:34 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id 8DF9EA7; Thu, 12 Nov 2020 20:07:33 +0200 (EET) From: Andy Shevchenko To: linux-kselftest@vger.kernel.org, Andrew Morton , kunit-dev@googlegroups.com, Shuah Khan , Vitor Massaru Iha Cc: Mark Brown , Brendan Higgins , David Gow , Andy Shevchenko , Matti Vaittinen Subject: [PATCH v4 2/6] lib/linear_ranges_kunit: Follow new file name convention for KUnit tests Date: Thu, 12 Nov 2020 20:07:28 +0200 Message-Id: <20201112180732.75589-2-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201112180732.75589-1-andriy.shevchenko@linux.intel.com> References: <20201112180732.75589-1-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Follow new file name convention for the KUnit tests. Since we have lib/*test*.c in a few variations, use 'kunit' suffix to distinguish usual test cases with KUnit-based ones. Cc: Matti Vaittinen Signed-off-by: Andy Shevchenko Reviewed-by: David Gow Acked-by: Mark Brown --- v4: added tag (Mark) MAINTAINERS | 3 +-- lib/Makefile | 2 +- lib/{test_linear_ranges.c => linear_ranges_kunit.c} | 0 3 files changed, 2 insertions(+), 3 deletions(-) rename lib/{test_linear_ranges.c => linear_ranges_kunit.c} (100%) diff --git a/MAINTAINERS b/MAINTAINERS index 5901b817d0bc..9a314e618705 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -10103,8 +10103,7 @@ F: include/uapi/linux/lightnvm.h LINEAR RANGES HELPERS M: Mark Brown R: Matti Vaittinen -F: lib/linear_ranges.c -F: lib/test_linear_ranges.c +F: lib/linear_ranges*.c F: include/linux/linear_range.h LINUX FOR POWER MACINTOSH diff --git a/lib/Makefile b/lib/Makefile index 9d78ef73d6ed..ef25cd94f34d 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -349,6 +349,6 @@ obj-$(CONFIG_PLDMFW) += pldmfw/ # KUnit tests obj-$(CONFIG_BITFIELD_KUNIT) += bitfield_kunit.o +obj-$(CONFIG_LINEAR_RANGES_TEST) += linear_ranges_kunit.o obj-$(CONFIG_LIST_KUNIT_TEST) += list_kunit.o -obj-$(CONFIG_LINEAR_RANGES_TEST) += test_linear_ranges.o obj-$(CONFIG_BITS_TEST) += test_bits.o diff --git a/lib/test_linear_ranges.c b/lib/linear_ranges_kunit.c similarity index 100% rename from lib/test_linear_ranges.c rename to lib/linear_ranges_kunit.c From patchwork Thu Nov 12 18:07:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 11900939 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id F00C51746 for ; Thu, 12 Nov 2020 18:07:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D769C2222F for ; Thu, 12 Nov 2020 18:07:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726056AbgKLSHi (ORCPT ); Thu, 12 Nov 2020 13:07:38 -0500 Received: from mga06.intel.com ([134.134.136.31]:20332 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726147AbgKLSHi (ORCPT ); Thu, 12 Nov 2020 13:07:38 -0500 IronPort-SDR: ynKitZSUIHKbghyDEfZWGsE+h7/VTLt3FI4uWvm1nFc5EBLheZh1QnHWqitFEA1TjnMosCEyE5 qRyj/A/YbZ/A== X-IronPort-AV: E=McAfee;i="6000,8403,9803"; a="231973759" X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="231973759" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Nov 2020 10:07:36 -0800 IronPort-SDR: 8YRo+HwXeDHVswQLGl5iwYH16F2lPRymuDJv2jDz1T6I+ldu99F7hZRaFdkEWV5DgPf9oi+D0n K05GCZGcKuTw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="308919371" Received: from black.fi.intel.com ([10.237.72.28]) by fmsmga008.fm.intel.com with ESMTP; 12 Nov 2020 10:07:34 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id 9A0941C2; Thu, 12 Nov 2020 20:07:33 +0200 (EET) From: Andy Shevchenko To: linux-kselftest@vger.kernel.org, Andrew Morton , kunit-dev@googlegroups.com, Shuah Khan , Vitor Massaru Iha Cc: Mark Brown , Brendan Higgins , David Gow , Andy Shevchenko Subject: [PATCH v4 3/6] lib/bits_kunit: Follow new file name convention for KUnit tests Date: Thu, 12 Nov 2020 20:07:29 +0200 Message-Id: <20201112180732.75589-3-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201112180732.75589-1-andriy.shevchenko@linux.intel.com> References: <20201112180732.75589-1-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Follow new file name convention for the KUnit tests. Since we have lib/*test*.c in a few variations, use 'kunit' suffix to distinguish usual test cases with KUnit-based ones. Signed-off-by: Andy Shevchenko Reviewed-by: David Gow Acked-by: Brendan Higgins --- v4: added tag (Brendan) lib/Makefile | 2 +- lib/{test_bits.c => bits_kunit.c} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename lib/{test_bits.c => bits_kunit.c} (100%) diff --git a/lib/Makefile b/lib/Makefile index ef25cd94f34d..dc76e7d8a453 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -349,6 +349,6 @@ obj-$(CONFIG_PLDMFW) += pldmfw/ # KUnit tests obj-$(CONFIG_BITFIELD_KUNIT) += bitfield_kunit.o +obj-$(CONFIG_BITS_TEST) += bits_kunit.o obj-$(CONFIG_LINEAR_RANGES_TEST) += linear_ranges_kunit.o obj-$(CONFIG_LIST_KUNIT_TEST) += list_kunit.o -obj-$(CONFIG_BITS_TEST) += test_bits.o diff --git a/lib/test_bits.c b/lib/bits_kunit.c similarity index 100% rename from lib/test_bits.c rename to lib/bits_kunit.c From patchwork Thu Nov 12 18:07:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 11900941 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id D3B5B15E6 for ; Thu, 12 Nov 2020 18:07:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BBBC722227 for ; Thu, 12 Nov 2020 18:07:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726295AbgKLSHk (ORCPT ); Thu, 12 Nov 2020 13:07:40 -0500 Received: from mga09.intel.com ([134.134.136.24]:40522 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726147AbgKLSHj (ORCPT ); Thu, 12 Nov 2020 13:07:39 -0500 IronPort-SDR: IDZ96mduK2p0uBUEqXw4kfGvgKhsVoIUwOXMFrACNPUo5ENSFWrcM15oAKEU20qk7ecGanr69N Na9DX8gv/7YQ== X-IronPort-AV: E=McAfee;i="6000,8403,9803"; a="170524782" X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="170524782" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Nov 2020 10:07:37 -0800 IronPort-SDR: hMJ2a3+SFUZKl4pwv4qbrTIdtjX0/ebj5XUwS+Qocuz913GYuJR5xtiULbLvodmOZU31upRNgK VEYqj8TtkKDw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="530764292" Received: from black.fi.intel.com ([10.237.72.28]) by fmsmga006.fm.intel.com with ESMTP; 12 Nov 2020 10:07:34 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id A59AA1C8; Thu, 12 Nov 2020 20:07:33 +0200 (EET) From: Andy Shevchenko To: linux-kselftest@vger.kernel.org, Andrew Morton , kunit-dev@googlegroups.com, Shuah Khan , Vitor Massaru Iha Cc: Mark Brown , Brendan Higgins , David Gow , Andy Shevchenko Subject: [PATCH v4 4/6] lib/cmdline: Fix get_option() for strings starting with hyphen Date: Thu, 12 Nov 2020 20:07:30 +0200 Message-Id: <20201112180732.75589-4-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201112180732.75589-1-andriy.shevchenko@linux.intel.com> References: <20201112180732.75589-1-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org When string doesn't have an integer and starts from hyphen get_option() may return interesting results. Fix it to return 0. The simple_strtoull() is used due to absence of simple_strtoul() in a boot code on some architectures. Note, the Fixes tag below is rather for anthropological curiosity. Fixes: f68565831e72 ("Import 2.4.0-test2pre3") Signed-off-by: Andy Shevchenko --- v4: new patch lib/cmdline.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/cmdline.c b/lib/cmdline.c index fbb9981a04a4..ca89846ee0bb 100644 --- a/lib/cmdline.c +++ b/lib/cmdline.c @@ -45,6 +45,9 @@ static int get_range(char **str, int *pint, int n) * 1 - int found, no subsequent comma * 2 - int found including a subsequent comma * 3 - hyphen found to denote a range + * + * Leading hyphen without integer is no integer case, but we consume it + * for the sake of simplification. */ int get_option(char **str, int *pint) @@ -53,7 +56,10 @@ int get_option(char **str, int *pint) if (!cur || !(*cur)) return 0; - *pint = simple_strtol(cur, str, 0); + if (*cur == '-') + *pint = -simple_strtoull(++cur, str, 0); + else + *pint = simple_strtoull(cur, str, 0); if (cur == *str) return 0; if (**str == ',') { From patchwork Thu Nov 12 18:07:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 11900943 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1DD0716C1 for ; Thu, 12 Nov 2020 18:07:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 06D8922247 for ; Thu, 12 Nov 2020 18:07:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726147AbgKLSHk (ORCPT ); Thu, 12 Nov 2020 13:07:40 -0500 Received: from mga09.intel.com ([134.134.136.24]:40522 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726203AbgKLSHk (ORCPT ); Thu, 12 Nov 2020 13:07:40 -0500 IronPort-SDR: 3qd+5FI9bzlVs+uCZkiFFEyL35UZK2faTTJI8WIFc1Gp9lh5XNH/QGqIaj13meHPDMOjVKeW5j cYSbnMyeiXnA== X-IronPort-AV: E=McAfee;i="6000,8403,9803"; a="170524783" X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="170524783" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Nov 2020 10:07:37 -0800 IronPort-SDR: iFuFOn8H/stQv53GzlVyi/3O3vSdoPmWQoCI73P8XFSx2m+JNQaD9Vrp9Y7m06xEfw9nJTPVOh XxzdIuJURJZw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="542350031" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga005.jf.intel.com with ESMTP; 12 Nov 2020 10:07:34 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id B067E1CB; Thu, 12 Nov 2020 20:07:33 +0200 (EET) From: Andy Shevchenko To: linux-kselftest@vger.kernel.org, Andrew Morton , kunit-dev@googlegroups.com, Shuah Khan , Vitor Massaru Iha Cc: Mark Brown , Brendan Higgins , David Gow , Andy Shevchenko Subject: [PATCH v4 5/6] lib/cmdline: Allow NULL to be an output for get_option() Date: Thu, 12 Nov 2020 20:07:31 +0200 Message-Id: <20201112180732.75589-5-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201112180732.75589-1-andriy.shevchenko@linux.intel.com> References: <20201112180732.75589-1-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org In the future we would like to use get_option() to only validate the string and parse it separately. To achieve this, allow NULL to be an output for get_option(). Signed-off-by: Andy Shevchenko --- v4: new patch lib/cmdline.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/cmdline.c b/lib/cmdline.c index ca89846ee0bb..9e186234edc0 100644 --- a/lib/cmdline.c +++ b/lib/cmdline.c @@ -35,11 +35,14 @@ static int get_range(char **str, int *pint, int n) /** * get_option - Parse integer from an option string * @str: option string - * @pint: (output) integer value parsed from @str + * @pint: (optional output) integer value parsed from @str * * Read an int from an option string; if available accept a subsequent * comma as well. * + * When @pint is NULL the function can be used as a validator of + * the current option in the string. + * * Return values: * 0 - no int in string * 1 - int found, no subsequent comma @@ -53,13 +56,16 @@ static int get_range(char **str, int *pint, int n) int get_option(char **str, int *pint) { char *cur = *str; + int value; if (!cur || !(*cur)) return 0; if (*cur == '-') - *pint = -simple_strtoull(++cur, str, 0); + value = -simple_strtoull(++cur, str, 0); else - *pint = simple_strtoull(cur, str, 0); + value = simple_strtoull(cur, str, 0); + if (pint) + *pint = value; if (cur == *str) return 0; if (**str == ',') { From patchwork Thu Nov 12 18:07:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 11900945 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 2D11E139F for ; Thu, 12 Nov 2020 18:07:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 19E792222F for ; Thu, 12 Nov 2020 18:07:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726300AbgKLSHn (ORCPT ); Thu, 12 Nov 2020 13:07:43 -0500 Received: from mga09.intel.com ([134.134.136.24]:40522 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726203AbgKLSHn (ORCPT ); Thu, 12 Nov 2020 13:07:43 -0500 IronPort-SDR: XBc7Wl6YjEuwzyWv4BdgCF/lBTJb9B05YCzAMxrD1xXHL5kogCyBtwtcvYcJDP80eQ56E9yNB4 9jUZQT6bBD3g== X-IronPort-AV: E=McAfee;i="6000,8403,9803"; a="170524801" X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="170524801" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Nov 2020 10:07:41 -0800 IronPort-SDR: u+JcQyIcXV8QsAPOu6wkjD/w8gJIWsqCEOngdZIRbB9B9zeFFxdScBkLM1yl8kW/bDw4DKmG48 g9qXIUixVdYg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,472,1596524400"; d="scan'208";a="355275608" Received: from black.fi.intel.com ([10.237.72.28]) by orsmga008.jf.intel.com with ESMTP; 12 Nov 2020 10:07:38 -0800 Received: by black.fi.intel.com (Postfix, from userid 1003) id BBC1D2AB; Thu, 12 Nov 2020 20:07:33 +0200 (EET) From: Andy Shevchenko To: linux-kselftest@vger.kernel.org, Andrew Morton , kunit-dev@googlegroups.com, Shuah Khan , Vitor Massaru Iha Cc: Mark Brown , Brendan Higgins , David Gow , Andy Shevchenko Subject: [PATCH v4 6/6] lib/cmdline_kunit: Add a new test suite for cmdline API Date: Thu, 12 Nov 2020 20:07:32 +0200 Message-Id: <20201112180732.75589-6-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201112180732.75589-1-andriy.shevchenko@linux.intel.com> References: <20201112180732.75589-1-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kselftest@vger.kernel.org Test get_option() for a starter which is provided by cmdline.c. Signed-off-by: Andy Shevchenko --- v4: new patch lib/Kconfig.debug | 11 +++++ lib/Makefile | 1 + lib/cmdline_kunit.c | 98 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+) create mode 100644 lib/cmdline_kunit.c diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 6140413174be..b939740f93b7 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -2283,6 +2283,17 @@ config LINEAR_RANGES_TEST If unsure, say N. +config CMDLINE_KUNIT_TEST + tristate "KUnit test for cmdline API" + depends on KUNIT + help + This builds the cmdline API unit test. + Tests the logic of API provided by cmdline.c. + For more information on KUnit and unit tests in general please refer + to the KUnit documentation in Documentation/dev-tools/kunit/. + + If unsure, say N. + config BITS_TEST tristate "KUnit test for bits.h" depends on KUNIT diff --git a/lib/Makefile b/lib/Makefile index dc76e7d8a453..985c6a8909e0 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -350,5 +350,6 @@ obj-$(CONFIG_PLDMFW) += pldmfw/ # KUnit tests obj-$(CONFIG_BITFIELD_KUNIT) += bitfield_kunit.o obj-$(CONFIG_BITS_TEST) += bits_kunit.o +obj-$(CONFIG_CMDLINE_KUNIT_TEST) += cmdline_kunit.o obj-$(CONFIG_LINEAR_RANGES_TEST) += linear_ranges_kunit.o obj-$(CONFIG_LIST_KUNIT_TEST) += list_kunit.o diff --git a/lib/cmdline_kunit.c b/lib/cmdline_kunit.c new file mode 100644 index 000000000000..acad1386d54c --- /dev/null +++ b/lib/cmdline_kunit.c @@ -0,0 +1,98 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Test cases for API provided by cmdline.c + */ + +#include +#include +#include +#include + +static const char *cmdline_test_strings[] = { + "\"\"", "" , "=" , "\"-", "," , "-," , ",-" , "-" , + "+," , "--", ",,", "''" , "\"\",", "\",\"", "-\"\"", "\"", +}; + +static const char *cmdline_test_values[] = { + 1, 1, 1, 1, 2, 3, 2, 3, + 1, 3, 2, 1, 1, 1, 3, 1, +}; + +static void cmdline_do_one_test(struct kunit *test, char *in, int rc, int offset) +{ + const char *fmt = "Pattern: %s"; + char *out = in; + int dummy; + int ret; + + ret = get_option(&out, &dummy); + + KUNIT_EXPECT_EQ_MSG(test, ret, rc, fmt, in); + KUNIT_EXPECT_PTR_EQ_MSG(test, out, in + offset, fmt, in); +} + +static void cmdline_test_noint(struct kunit *test) +{ + unsigned int i = 0; + + do { + const char *str = cmdline_test_strings[i]; + int rc = 0; + int offset; + + /* Only first and leading '-' will advance the pointer */ + offset = !!(*str == '-'); + cmdline_do_one_test(test, str, rc, offset); + } while (++i < ARRAY_SIZE(cmdline_test_strings)); +} + +static void cmdline_test_lead_int(struct kunit *test) +{ + unsigned int i = 0; + char in[32]; + + do { + const char *str = cmdline_test_strings[i]; + int rc = cmdline_test_values[i]; + int offset; + + sprintf(in, "%u%s", get_random_int() % 256, str); + /* Only first '-' after the number will advance the pointer */ + offset = strlen(in) - strlen(str) + !!(rc == 2); + cmdline_do_one_test(test, in, rc, offset); + } while (++i < ARRAY_SIZE(cmdline_test_strings)); +} + +static void cmdline_test_tail_int(struct kunit *test) +{ + unsigned int i = 0; + char in[32]; + + do { + const char *str = cmdline_test_strings[i]; + /* When "" or "-" the result will be valid integer */ + int rc = strcmp(str, "") ? (strcmp(str, "-") ? 0 : 1) : 1; + int offset; + + sprintf(in, "%s%u", str, get_random_int() % 256); + /* + * Only first and leading '-' not followed by integer + * will advance the pointer. + */ + offset = rc ? strlen(in) : !!(*str == '-'); + cmdline_do_one_test(test, in, rc, offset); + } while (++i < ARRAY_SIZE(cmdline_test_strings)); +} + +static struct kunit_case cmdline_test_cases[] = { + KUNIT_CASE(cmdline_test_noint), + KUNIT_CASE(cmdline_test_lead_int), + KUNIT_CASE(cmdline_test_tail_int), + {} +}; + +static struct kunit_suite cmdline_test_suite = { + .name = "cmdline", + .test_cases = cmdline_test_cases, +}; +kunit_test_suite(cmdline_test_suite);