From patchwork Tue Jul 18 22:00:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 122277 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2043116vqt; Tue, 18 Jul 2023 15:18:15 -0700 (PDT) X-Google-Smtp-Source: APBJJlHu4pq9X2KWeH3/AVVlePeQyiEoCdjej9bBGFty8sCHIkSNJTFG1D25Vn+uAI2j6MatD1jR X-Received: by 2002:a17:906:6a07:b0:988:e365:6231 with SMTP id qw7-20020a1709066a0700b00988e3656231mr1130122ejc.41.1689718694729; Tue, 18 Jul 2023 15:18:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689718694; cv=none; d=google.com; s=arc-20160816; b=DfiyajMU1Mcoxi3h39RefvGCx+WNhzcCW9YIKK95eeL9W277TeNy0bouuzaLnhyYPy VXdyZb0JVrBZEOmrBVN5rh2Q9APrQp4vuP1YByj3eAym2Kx5EWU9EAJHWpt1ZfHa4MTH muO63Tc2irvZ7mzzrYgoqhceNSqmnPFfot+tSIEwoT45sKrgyLgH40ANDdEqY0oYu7sh IQBYGegOo4u6pqNeBtze3zLy+/H6UYLv21+rSHeI+kHEZA0H2vV2ZDyhw8KzdkWa1mr3 +yzhcUoneKFokWbt8kdnsDtlhEQH0HshvaF6DT/Esum3a2zHliYKI/1cjBWU5L4Wruh0 pTEA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=HAAzXp0+M1aKh6Z/sgAp7fo9UiNGRNtuM1dXeeGBY3E=; fh=0DdKI3uRySxQzlTRy49d6VQh77umZfyWRaD7hOgQCS0=; b=d90X969mQQ6e1i345ky4SjkubohAWGTXYmHtqzfB2TEjPCmSZspI2Htf6qAjlUWn6S 4l/Psqo6vUf2+A8OdQdIn6Mx4qHJ7DXtUVF8AFVIUJS0rqsFot/E8+fxB5IhTDCYeDke 1hOaAOZmaavyoj8HQjJYKrvhVaMwDBYzTxkXcO62eHs4so8i0X0L1GWpeeXxLM4NqPTI AA+D278U+XF9gl4CHsDWnjE4lQ1ZTKDE8nS2LoWu/rrJ9x7h7RLmyGDAUmFnbrkvsRkW iarysZ2QNoRryJD03tLiA+/Tw7CuEOj0FfilguKMr9syx60WPTb+B1B3Ai6G8TWwj+Zl yTmQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=UJzTeD3O; 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qx3-20020a170906fcc300b00997bd26a560si1831265ejb.938.2023.07.18.15.17.50; Tue, 18 Jul 2023 15:18:14 -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=@weissschuh.net header.s=mail header.b=UJzTeD3O; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229722AbjGRWFq (ORCPT + 99 others); Tue, 18 Jul 2023 18:05:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36092 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229681AbjGRWFk (ORCPT ); Tue, 18 Jul 2023 18:05:40 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C706E19AD; Tue, 18 Jul 2023 15:05:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1689717869; bh=Ep1Rg7y74qHacqZZsLEFQcfo3UPaVM/TmmdadAIahJk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=UJzTeD3OsequcHeWcbggbUKDuNcPttt8OuZ3CwItIwHPs71doCPcqOIaUTIfC6Yoq LL2JpWcIRfuoazUISOFJ9W8tI1iwWWKY1gSXZ/GqQNdQx4GYmEIMqNMelPkRKR3l6Z fK82Q7OE/yMklMUbDI4tgi86NofiTwS60YGLZ8qc= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Wed, 19 Jul 2023 00:00:39 +0200 Subject: [PATCH RFC 1/7] selftests/nolibc: statically calculate number of testsuites MIME-Version: 1.0 Message-Id: <20230719-nolibc-ktap-tmp-v1-1-930bd0c52ff1@weissschuh.net> References: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> In-Reply-To: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> To: Willy Tarreau Cc: Zhangjin Wu , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1689717869; l=1791; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=Ep1Rg7y74qHacqZZsLEFQcfo3UPaVM/TmmdadAIahJk=; b=79r3iwydv7BrzBJ8xeBIw44ZpL3k0y40bdLfhfvYVY+oBgQRzCaqFx3T1ppjjEgqqGDlwwn8x dSJ99c4HJvQBBm/b+h0QAYqtQeAAm1qZAvGu+olghIfWsyCDiAuaIW/ X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771798469910438535 X-GMAIL-MSGID: 1771798469910438535 This makes it slightly nicer to report the number of suites. Signed-off-by: Thomas Weißschuh --- tools/testing/selftests/nolibc/nolibc-test.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index 03b1d30f5507..698af242d3e4 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -45,6 +45,8 @@ #define SINT_MAX_OF_TYPE(type) (((type)1 << (sizeof(type) * 8 - 2)) - (type)1 + ((type)1 << (sizeof(type) * 8 - 2))) #define SINT_MIN_OF_TYPE(type) (-SINT_MAX_OF_TYPE(type) - 1) +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) + /* will be used to test initialization of environ */ static char **test_envp; @@ -1184,7 +1186,6 @@ static const struct test test_names[] = { { .name = "stdlib", .func = run_stdlib }, { .name = "vfprintf", .func = run_vfprintf }, { .name = "protection", .func = run_protection }, - { 0 } }; int is_setting_valid(char *test) @@ -1259,7 +1260,7 @@ int main(int argc, char **argv, char **envp) if (colon) *(colon++) = '\0'; - for (idx = 0; test_names[idx].name; idx++) { + for (idx = 0; idx < ARRAY_SIZE(test_names); idx++) { if (strcmp(test, test_names[idx].name) == 0) break; } @@ -1305,7 +1306,7 @@ int main(int argc, char **argv, char **envp) } while (test && *test); } else { /* no test mentioned, run everything */ - for (idx = 0; test_names[idx].name; idx++) { + for (idx = 0; idx < ARRAY_SIZE(test_names); idx++) { printf("Running test '%s'\n", test_names[idx].name); err = test_names[idx].func(min, max); ret += err; From patchwork Tue Jul 18 22:00:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 122275 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2042729vqt; Tue, 18 Jul 2023 15:17:31 -0700 (PDT) X-Google-Smtp-Source: APBJJlE69yYyvQWuOYEG2u7A2knOpaqm6q1Dqot4lVD7iGDeTIl+FvJ/ZK1d8FRrDl7TbU3YLzki X-Received: by 2002:aa7:cb16:0:b0:51e:1093:3a9f with SMTP id s22-20020aa7cb16000000b0051e10933a9fmr996975edt.11.1689718651651; Tue, 18 Jul 2023 15:17:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689718651; cv=none; d=google.com; s=arc-20160816; b=A+XOwsEQOg7CZDjgfwQCZrxWblv4fYN+mip5OH0hx7LjiDJlLfWFCf7gEEl9nBaBo/ HhyKEB9BLvdaUHOh/NU3jIQsO6SIHCjIZVE3va0zoV0HQqMPL9U3LqaSByTpYA8q0Mb8 eDJysEcPFAdzWEwdyEbRAoVQagIkPVgOsPYG56GLzWFmt9LqVsTKgMmyV84nuKqqJmyu f0qVEm3WOBwjrPG2BdC5VQeinZYvbY6qHQepohdcQfOpOsqH/qN/n/A/5pHJsta7/uu9 zhHynkFAdb41oMUiGON3TZq23+GnSpNTKhms2QgnP/ddtcLYvpF6GMTE/crfOoL+CAex 8RkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=urLHLcnAzWu86wQgeU3w8Q24ijbc/urmqfcWk4xTveI=; fh=0DdKI3uRySxQzlTRy49d6VQh77umZfyWRaD7hOgQCS0=; b=xzZrMKU4xPJDUQZ7DZ/ry++aUWTdBUez/LXQm6U3kgYSLnLre25yxqW6AdPGqdb1ok SNq38UPKZi3M1ffGi+ooMVFaZR2zSQvaLUyT+EXW0acMH5bG9LQLT8aV7VG0sG8cYq5+ SNg99Whqscjs1RjSMvIP8Hi5JVYOHkv5uVrs6v05FkJFzVBRvZ4skNB5BM9olNVoAuiN e99GO3Sn2H1LmSfIGuKyBXqqcRTJ6RJbJXDJrYQ9bYjjh1TJSJKDqe/UYTeQZWb3RNJN P+QPXk+79v01MAjRk600W1PRw/gQ87k5bQVJXHrXQs/TmR+43p5AOzqJWHbgINpGP0iA bj3w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b="Bepf/DTq"; 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m3-20020a056402050300b0051dece5afcesi1830605edv.225.2023.07.18.15.17.07; Tue, 18 Jul 2023 15:17:31 -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=@weissschuh.net header.s=mail header.b="Bepf/DTq"; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231442AbjGRWFs (ORCPT + 99 others); Tue, 18 Jul 2023 18:05:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36200 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230468AbjGRWFk (ORCPT ); Tue, 18 Jul 2023 18:05:40 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 844EF1BCD; Tue, 18 Jul 2023 15:05:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1689717869; bh=kF605graM0o+JyxoXxBa0/owm9OEnH5LILzEVA9RPjE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=Bepf/DTqe6xA4OOkGtCWzuKntBtMJbF2cW1JQ8cJtbGWI8o1xtGQfJMsV+/Hy49tL HKaura92v9iXxSxU2L17hdOvMjuYI/JyyryD0EoQvNYb9DiJ+zppiE4Xu66Tmzg5zq f+NJUtTszxSpaNC9v/xVBGX8rSpSfOSzs1sPp2Hk= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Wed, 19 Jul 2023 00:00:40 +0200 Subject: [PATCH RFC 2/7] selftests/nolibc: use unsigned indices for testcases MIME-Version: 1.0 Message-Id: <20230719-nolibc-ktap-tmp-v1-2-930bd0c52ff1@weissschuh.net> References: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> In-Reply-To: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> To: Willy Tarreau Cc: Zhangjin Wu , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1689717869; l=2050; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=kF605graM0o+JyxoXxBa0/owm9OEnH5LILzEVA9RPjE=; b=MYxbOcmYGkZfCi/TwDUHZJZAbPsTxgMczMwDMD83xNXDoUu01R67udQhf3NOLApmXd2XnB+Nq vYhFfGkJEGHAEPSthqSQOPBCLSsdOF+HGEJ69dbA6+vhjeRa9CHkX38 X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771798424882176017 X-GMAIL-MSGID: 1771798424882176017 They should never be negative. Signed-off-by: Thomas Weißschuh --- tools/testing/selftests/nolibc/nolibc-test.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index 698af242d3e4..1bd99e0fab4d 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -62,7 +62,7 @@ static const char *argv0; /* definition of a series of tests */ struct test { const char *name; /* test name */ - int (*func)(int min, int max); /* handler */ + int (*func)(unsigned int min, unsigned int max); /* handler */ }; #ifndef _NOLIBC_STDLIB_H @@ -570,7 +570,7 @@ static int expect_strne(const char *expr, int llen, const char *cmp) #define CASE_TEST(name) \ case __LINE__: llen += printf("%d %s", test, #name); -int run_startup(int min, int max) +int run_startup(unsigned int min, unsigned int max) { int test; int ret = 0; @@ -773,7 +773,7 @@ int test_mmap_munmap(void) /* Run syscall tests between IDs and . * Return 0 on success, non-zero on failure. */ -int run_syscall(int min, int max) +int run_syscall(unsigned int min, unsigned int max) { struct timeval tv; struct timezone tz; @@ -884,7 +884,7 @@ int run_syscall(int min, int max) return ret; } -int run_stdlib(int min, int max) +int run_stdlib(unsigned int min, unsigned int max) { int test; int tmp; @@ -1027,7 +1027,7 @@ static int expect_vfprintf(int llen, size_t c, const char *expected, const char return ret; } -static int run_vfprintf(int min, int max) +static int run_vfprintf(unsigned int min, unsigned int max) { int test; int tmp; @@ -1070,7 +1070,7 @@ static int smash_stack(void) return 1; } -static int run_protection(int min, int max) +static int run_protection(unsigned int min, unsigned int max) { pid_t pid; int llen = 0, status; From patchwork Tue Jul 18 22:00:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 122279 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2044655vqt; Tue, 18 Jul 2023 15:21:17 -0700 (PDT) X-Google-Smtp-Source: APBJJlEYUqonQx64ILSXTsvAiihqVo8S/CUptXCgRbpLx7gxK7fQpJQVH+QXopd8WjpWcpPWeUb7 X-Received: by 2002:ac2:5f7a:0:b0:4fb:9e1a:e592 with SMTP id c26-20020ac25f7a000000b004fb9e1ae592mr522165lfc.4.1689718876792; Tue, 18 Jul 2023 15:21:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689718876; cv=none; d=google.com; s=arc-20160816; b=Z0VF4Y7tu9C8i2/Fss7+ZgC4gfKh1s2QfBykZjptOJbqomI7C67asck19i+yCq4VDi 8c+KwCSGR5gt0TG7fuoDtOlY3x4Ixw2nmIDlOuFTln+adELdEyDaF6IaViIe6GE2v/D1 XGA0Ffr90kJybIs73XQPok4RJVjS9ysIv17u3NznqjGn2kPkyPJ4dAEVKuZnBvzM+6YL vPNhjqUbSh9qtVTVtWpr8+r7QYkzVZe/ZPDnnB2mmzHvohwoh5/8WpYCByyxQkwJHtQH XcPCbmlG2UvRH5YRpaT2ej08oOwZch0+1Z0meLidZPiDHtb4ebEbzl2UMeFg66ghBLoy 3J1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=DqHCfHX19g6bwAca0ESjulckI8vZ/MX9L+wFkBo9FA8=; fh=0DdKI3uRySxQzlTRy49d6VQh77umZfyWRaD7hOgQCS0=; b=H9FSJ8+Mt7fFM0EB6SDTRh82QNOcWVmr3KL9YOThOK6qbS1m6NCav/dkqNsJfqiWQ5 OhvioWhWBpKICcbz052Cs7BjdUAfITtuebCk9VGE6ir9M7PrVPYO22LQ/Z9brFI3UAD7 UOu1Pkz3LToyMEosupr1k02rEEKmk9lt2rwbUflkUaLqzGI1EBaqNmRKgOrodWU9jjX2 PEb2UDcbNiQ6rZXh2Mpug0W4s69yAUBeEHMYQhHPuE3sMv4JCXu0x6vlWG095FCjJGVi GLZwI5ai9iCw2Fqh0n4ML8eaopDYjknoZfBu19t52p54MhjDP70ir/nME71bcQxKQkhm 3xpA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=m5c+BWv6; 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y6-20020a50e606000000b0051dd2c19606si1852926edm.465.2023.07.18.15.20.52; Tue, 18 Jul 2023 15:21:16 -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=@weissschuh.net header.s=mail header.b=m5c+BWv6; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231483AbjGRWFv (ORCPT + 99 others); Tue, 18 Jul 2023 18:05:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36142 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231223AbjGRWFk (ORCPT ); Tue, 18 Jul 2023 18:05:40 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5FF851BD6; Tue, 18 Jul 2023 15:05:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1689717870; bh=9tYgx+WfYrn6xP3FZVHJby6ysrS/sMHOehZR3Xlpc/s=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=m5c+BWv6YKn4k+FgdJJMmiddQmYfpNXcxuVbDpi8jhkDyAlc/DyxeHZXm1f5KkEuO OnDjnRscwIQSNqrjq/clk1HBRYvK9B7cNZojEqiYtMWs8nMRfGq5fVWw1whtY/rG3r IbvQG2M3m/aJPVxi1zomUFbDs2Alhvogt03IZ2k8= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Wed, 19 Jul 2023 00:00:41 +0200 Subject: [PATCH RFC 3/7] selftests/nolibc: replace repetitive test structure with macro MIME-Version: 1.0 Message-Id: <20230719-nolibc-ktap-tmp-v1-3-930bd0c52ff1@weissschuh.net> References: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> In-Reply-To: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> To: Willy Tarreau Cc: Zhangjin Wu , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1689717869; l=4783; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=9tYgx+WfYrn6xP3FZVHJby6ysrS/sMHOehZR3Xlpc/s=; b=QLADuxLfv/AYcoLNp9wB3i7VX2qqJEnF3qajtEePwoSYWiURCPvR1LwGEnA9HOXfedRfOYdML kScKc5X/uILAf4qMGy5RmainVcrSVU449j/L4QuH/QdY44R02w0rcqf X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771798661183510777 X-GMAIL-MSGID: 1771798661183510777 A future patch will change these, so prepare for that. Signed-off-by: Thomas Weißschuh --- tools/testing/selftests/nolibc/nolibc-test.c | 35 ++++++++++++---------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index 1bd99e0fab4d..76bd6a0a8132 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -570,6 +570,13 @@ static int expect_strne(const char *expr, int llen, const char *cmp) #define CASE_TEST(name) \ case __LINE__: llen += printf("%d %s", test, #name); +#define SWITCH_TEST \ + switch (test + __LINE__ + 1) { + +#define SWITCH_TEST_END \ + case __LINE__: return ret; } + + int run_startup(unsigned int min, unsigned int max) { int test; @@ -591,7 +598,7 @@ int run_startup(unsigned int min, unsigned int max) /* avoid leaving empty lines below, this will insert holes into * test numbers. */ - switch (test + __LINE__ + 1) { + SWITCH_TEST CASE_TEST(argc); EXPECT_GE(1, test_argc, 1); break; CASE_TEST(argv_addr); EXPECT_PTRGT(1, test_argv, brk); break; CASE_TEST(argv_environ); EXPECT_PTRLT(1, test_argv, environ); break; @@ -607,10 +614,7 @@ int run_startup(unsigned int min, unsigned int max) CASE_TEST(auxv_addr); EXPECT_PTRGT(test_auxv != (void *)-1, test_auxv, brk); break; CASE_TEST(auxv_AT_UID); EXPECT_EQ(1, getauxval(AT_UID), getuid()); break; CASE_TEST(auxv_AT_PAGESZ); EXPECT_GE(1, getauxval(AT_PAGESZ), 4096); break; - case __LINE__: - return ret; /* must be last */ - /* note: do not set any defaults so as to permit holes above */ - } + SWITCH_TEST_END } return ret; } @@ -803,7 +807,7 @@ int run_syscall(unsigned int min, unsigned int max) /* avoid leaving empty lines below, this will insert holes into * test numbers. */ - switch (test + __LINE__ + 1) { + SWITCH_TEST CASE_TEST(getpid); EXPECT_SYSNE(1, getpid(), -1); break; CASE_TEST(getppid); EXPECT_SYSNE(1, getppid(), -1); break; CASE_TEST(gettid); EXPECT_SYSNE(has_gettid, gettid(), -1); break; @@ -876,10 +880,7 @@ int run_syscall(unsigned int min, unsigned int max) CASE_TEST(write_zero); EXPECT_SYSZR(1, write(1, &tmp, 0)); break; CASE_TEST(syscall_noargs); EXPECT_SYSEQ(1, syscall(__NR_getpid), getpid()); break; CASE_TEST(syscall_args); EXPECT_SYSER(1, syscall(__NR_statx, 0, NULL, 0, 0, NULL), -1, EFAULT); break; - case __LINE__: - return ret; /* must be last */ - /* note: do not set any defaults so as to permit holes above */ - } + SWITCH_TEST_END } return ret; } @@ -897,7 +898,7 @@ int run_stdlib(unsigned int min, unsigned int max) /* avoid leaving empty lines below, this will insert holes into * test numbers. */ - switch (test + __LINE__ + 1) { + SWITCH_TEST CASE_TEST(getenv_TERM); EXPECT_STRNZ(1, getenv("TERM")); break; CASE_TEST(getenv_blah); EXPECT_STRZR(1, getenv("blah")); break; CASE_TEST(setcmp_blah_blah); EXPECT_EQ(1, strcmp("blah", "blah"), 0); break; @@ -966,10 +967,7 @@ int run_stdlib(unsigned int min, unsigned int max) CASE_TEST(limit_ptrdiff_min_32); EXPECT_EQ(sizeof(long) == 4, PTRDIFF_MIN, (ptrdiff_t) 0x80000000); break; CASE_TEST(limit_ptrdiff_max_32); EXPECT_EQ(sizeof(long) == 4, PTRDIFF_MAX, (ptrdiff_t) 0x7fffffff); break; CASE_TEST(limit_size_max_32); EXPECT_EQ(sizeof(long) == 4, SIZE_MAX, (size_t) 0xffffffffU); break; - case __LINE__: - return ret; /* must be last */ - /* note: do not set any defaults so as to permit holes above */ - } + SWITCH_TEST_END } return ret; } @@ -1040,7 +1038,7 @@ static int run_vfprintf(unsigned int min, unsigned int max) /* avoid leaving empty lines below, this will insert holes into * test numbers. */ - switch (test + __LINE__ + 1) { + SWITCH_TEST CASE_TEST(empty); EXPECT_VFPRINTF(0, "", ""); break; CASE_TEST(simple); EXPECT_VFPRINTF(3, "foo", "foo"); break; CASE_TEST(string); EXPECT_VFPRINTF(3, "foo", "%s", "foo"); break; @@ -1050,10 +1048,7 @@ static int run_vfprintf(unsigned int min, unsigned int max) CASE_TEST(char); EXPECT_VFPRINTF(1, "c", "%c", 'c'); break; CASE_TEST(hex); EXPECT_VFPRINTF(1, "f", "%x", 0xf); break; CASE_TEST(pointer); EXPECT_VFPRINTF(3, "0x1", "%p", (void *) 0x1); break; - case __LINE__: - return ret; /* must be last */ - /* note: do not set any defaults so as to permit holes above */ - } + SWITCH_TEST_END } return ret; } From patchwork Tue Jul 18 22:00:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 122273 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2037525vqt; Tue, 18 Jul 2023 15:07:34 -0700 (PDT) X-Google-Smtp-Source: APBJJlEjlw0pFfXCPMO5sul3C5JZN5JPd2QSCkCkyPyRXbAs55HGVkvCe5h9fprQzOcn6LGzgqwq X-Received: by 2002:a05:6a00:398f:b0:682:5a68:5645 with SMTP id fi15-20020a056a00398f00b006825a685645mr406291pfb.11.1689718054489; Tue, 18 Jul 2023 15:07:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689718054; cv=none; d=google.com; s=arc-20160816; b=jpOUwA1jxvLu05FdhCEOFJVrNHZXphFDQ0Ozl5GuaAGDdLDG/OXse/GUOvz9k0h7l5 mBfMDMtmzNVXKx8+H+VckdddEyES2367OxS2P5AtzJ46AdFstgK/mAlRsjM6RCeo6cwy QprX7bj/wt4VS1shTv7+YPDzkl9tretonOMQ2dub7b9cRhvRAyWr4L2GJclgfcG7G8eu mKKglAT75P8IPpOokxABoi73+H0ersw1KH3m4jChxrmJ1+IZBVJvrYCJipkiN+LuPZKa kjau7zGYVzwxoDVD8E8cqM91HI0IepjCY9koSr/N8OLcDj7cbRE6ZupttMbdIgc8Wspo 2Icw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=/BN/HBHQMu30vEOKXfFPDNd2cfzeR+k8JwT0MTMlLfM=; fh=0DdKI3uRySxQzlTRy49d6VQh77umZfyWRaD7hOgQCS0=; b=C4j7k8HRQ/PIvT1ptLsgA/r9LX5nGbztBT9rWe7SWf39tlNvT5l7vK4dQJmV+WUzfC FU086sMg6QUMB5yh9uiPp6quuFLDxqdLY2T6Yvf0Rchp2Wt4B+fwAm6Y4G5o0lWY45tv hKK+L7SDN9I4Xiubm/KiwgKhGbbVz20FXNY5nunrLUofbweTLiKe6AYo/daGLtPZ9AGF HNocSjXirV2o6uMukVMVClPib1WAB6bf6MESHQUPYDIawg/isRung5majuhD9//9VQlk h4UlExEotF9iKFj0psBBPFTiqPhjQGYM9kGt/ChSUu/pC+ZovytLeguGzdDaX9DeSV+N z2oA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=eRcA8RmH; 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g193-20020a636bca000000b0056334973c45si2170416pgc.826.2023.07.18.15.07.20; Tue, 18 Jul 2023 15:07:34 -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=@weissschuh.net header.s=mail header.b=eRcA8RmH; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230520AbjGRWFc (ORCPT + 99 others); Tue, 18 Jul 2023 18:05:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35924 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229681AbjGRWFa (ORCPT ); Tue, 18 Jul 2023 18:05:30 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [IPv6:2a01:4f8:c010:41de::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7230D1FDF; Tue, 18 Jul 2023 15:05:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1689717869; bh=m5aG2jsE/sgyJ2tqwTkKOysF3r7AOBHTMjAwg4kbc1g=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=eRcA8RmHcS61tw1UzwYA05Tv5Kkw2ND09r6+RbnVucax+MJIVCssxlKCIB1lYmhT9 aVi7nAJ8fNzPR42fUhN+bPFGWTJ/h+TmCVjiHxEOzPcWQWaIrUMvGJrmmNkB7aGQsr u0odUd3EuICoRsC6nRZQq1z21HdHuI3kdD3OfcIw= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Wed, 19 Jul 2023 00:00:42 +0200 Subject: [PATCH RFC 4/7] selftests/nolibc: count subtests MIME-Version: 1.0 Message-Id: <20230719-nolibc-ktap-tmp-v1-4-930bd0c52ff1@weissschuh.net> References: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> In-Reply-To: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> To: Willy Tarreau Cc: Zhangjin Wu , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1689717869; l=4038; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=m5aG2jsE/sgyJ2tqwTkKOysF3r7AOBHTMjAwg4kbc1g=; b=fJ2NOu2wG+DLyHL32lAYwKlvELVRJsD01KjN7sfi/PiA2+k3UNDobW0TTr/7jSZPdiTHPQu2t HAWcOWx0qwMA48xC01ns+/GgrZXn+10kbj4H4KWTwCRaomgoElyjVYo X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771797799008255026 X-GMAIL-MSGID: 1771797799008255026 This will be needed for KTAP output. Signed-off-by: Thomas Weißschuh --- tools/testing/selftests/nolibc/nolibc-test.c | 30 +++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index 76bd6a0a8132..03f64ce1dda6 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -65,6 +65,13 @@ struct test { int (*func)(unsigned int min, unsigned int max); /* handler */ }; +#define COUNT_SUBTESTS (-1) + +static unsigned int count_subtests(const struct test *test) +{ + return test->func(COUNT_SUBTESTS, COUNT_SUBTESTS); +} + #ifndef _NOLIBC_STDLIB_H char *itoa(int i) { @@ -571,10 +578,10 @@ static int expect_strne(const char *expr, int llen, const char *cmp) case __LINE__: llen += printf("%d %s", test, #name); #define SWITCH_TEST \ - switch (test + __LINE__ + 1) { + int _tests_start = __LINE__; switch (test + __LINE__ + 1) { #define SWITCH_TEST_END \ - case __LINE__: return ret; } + case __LINE__: return ret; default: return __LINE__ - _tests_start - 1; } int run_startup(unsigned int min, unsigned int max) @@ -592,7 +599,7 @@ int run_startup(unsigned int min, unsigned int max) test_auxv = _auxv; #endif - for (test = min; test >= 0 && test <= max; test++) { + for (test = min; test == COUNT_SUBTESTS || (test >= 0 && test <= max); test++) { int llen = 0; /* line length */ /* avoid leaving empty lines below, this will insert holes into @@ -801,7 +808,7 @@ int run_syscall(unsigned int min, unsigned int max) has_gettid = __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 30); #endif - for (test = min; test >= 0 && test <= max; test++) { + for (test = min; test == COUNT_SUBTESTS || (test >= 0 && test <= max); test++) { int llen = 0; /* line length */ /* avoid leaving empty lines below, this will insert holes into @@ -892,7 +899,7 @@ int run_stdlib(unsigned int min, unsigned int max) int ret = 0; void *p1, *p2; - for (test = min; test >= 0 && test <= max; test++) { + for (test = min; test == COUNT_SUBTESTS || (test >= 0 && test <= max); test++) { int llen = 0; /* line length */ /* avoid leaving empty lines below, this will insert holes into @@ -1032,7 +1039,7 @@ static int run_vfprintf(unsigned int min, unsigned int max) int ret = 0; void *p1, *p2; - for (test = min; test >= 0 && test <= max; test++) { + for (test = min; test == COUNT_SUBTESTS || (test >= 0 && test <= max); test++) { int llen = 0; /* line length */ /* avoid leaving empty lines below, this will insert holes into @@ -1070,6 +1077,9 @@ static int run_protection(unsigned int min, unsigned int max) pid_t pid; int llen = 0, status; + if (min == COUNT_SUBTESTS) + return 1; + llen += printf("0 -fstackprotector "); #if !defined(_NOLIBC_STACKPROTECTOR) @@ -1219,6 +1229,7 @@ int main(int argc, char **argv, char **envp) int ret = 0; int err; int idx; + unsigned int subtests; char *test; argv0 = argv[0]; @@ -1265,6 +1276,8 @@ int main(int argc, char **argv, char **envp) * once. We may have an optional range at * here, which defaults to the full range. */ + + subtests = count_subtests(&test_names[idx]); do { min = 0; max = INT_MAX; value = colon; @@ -1285,11 +1298,14 @@ int main(int argc, char **argv, char **envp) else if (*dash) max = atoi(dash); + if (max > subtests) + max = subtests; + value = colon; } /* now's time to call the test */ - printf("Running test '%s'\n", test_names[idx].name); + printf("Running test '%s' (%d-%d of %d)\n", test_names[idx].name, min, max, subtests); err = test_names[idx].func(min, max); ret += err; printf("Errors during this test: %d\n\n", err); From patchwork Tue Jul 18 22:00:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 122274 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2038172vqt; Tue, 18 Jul 2023 15:08:43 -0700 (PDT) X-Google-Smtp-Source: APBJJlFDHSgBcWDoOdlAtcJN+KswZrKbhwmiMmcqW37TnUW0Kjfdl3BFUC8aGJ2I1OW8vXTGhOMZ X-Received: by 2002:a05:6358:5e17:b0:135:4003:784a with SMTP id q23-20020a0563585e1700b001354003784amr4711727rwn.19.1689718123221; Tue, 18 Jul 2023 15:08:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689718123; cv=none; d=google.com; s=arc-20160816; b=YmHdu+CYXWV5OJtMOZaOi37QsMu+4VZJEWTQqQ13TS/uj+4ziaOa2MeePwQWsvhENY KUFR5rod97mAeYFvx55IjPNk20oAOGxdfFFiH8Ldxm/9KX2qOp05Z1Bo11B/PhqrSjJh O3b58rDDmk2Cdq/MS9ZVjavh0LqshrSLZ34eOGi9J2j4k+0vCpTlDEt3vWfrbvXJc6Si oCCI0pTl/DgLwPd87+uCBbMEqyxTrRQuf1zl/1GGglVw9GetFw66Yht7h1E8g3cMGegk 4Cegtt3+geNmEP+NL2Gl4T9z0P8yUy94rBOArny6DhRGoiKom+UsBLlavvS19iPLA8eS JycQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=4rZWj7vCNfEqV98IpZSZVzv3dU0VorCeF1Ad6UZOXl8=; fh=0DdKI3uRySxQzlTRy49d6VQh77umZfyWRaD7hOgQCS0=; b=0bimVjHnGsFEBkhLeiOvUMsu0KWLxvWM/iuwUl9plUYuWr4k16AUWJPGr1k6T7vHxJ je+nNbm8TYjh7cBoehYMBHHHl4tok477Y9bDLYcSnKSO2WpvOCZ739asaNzn2DRdObw9 /g3ynAxW1TjWDkStyqnG7RclnwllGLwNvu/6Ga2439exYANVC0VJb+GNdwLPHrH+O1kP emeHOx+LkzuLzOfp6lYKC6JFFPqnf4uo+yy0dXImWV47ScMBQxFBHo+e+xfVvzRGBQfc M5AduB2A06/6R1KbiByvMs2OdfezwurAj85dQ8rGpCIpgYtvW2QlOtsHn7JEDgGxfqMG Os+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b="NPeS/3iY"; 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id q28-20020a638c5c000000b005348b4f79f1si2181862pgn.345.2023.07.18.15.08.29; Tue, 18 Jul 2023 15:08:43 -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=@weissschuh.net header.s=mail header.b="NPeS/3iY"; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230468AbjGRWGG (ORCPT + 99 others); Tue, 18 Jul 2023 18:06:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36740 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229772AbjGRWGE (ORCPT ); Tue, 18 Jul 2023 18:06:04 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [IPv6:2a01:4f8:c010:41de::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8EB871998; Tue, 18 Jul 2023 15:05:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1689717870; bh=YqZjg8FJSrMkBkCofVYWpCEZm+a1T8K7Shk7yEsIFhk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=NPeS/3iYy+jey15HonR2ocm81ly6VV/WH7+0MM9aTdPSvy8ZAw8kLsM8dB1tVi+Es AgaTQbFkkhLx4pGOh5iAbGKOjIYD0k+/mWw7frw30Oiuuwt3ZPbXyivjlq+dRKIu62 Pr9nDVliPXk0gkyousMuoJ5nqH8hAAKRXN18XXL0= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Wed, 19 Jul 2023 00:00:43 +0200 Subject: [PATCH RFC 5/7] kselftest: support KTAP format MIME-Version: 1.0 Message-Id: <20230719-nolibc-ktap-tmp-v1-5-930bd0c52ff1@weissschuh.net> References: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> In-Reply-To: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> To: Willy Tarreau Cc: Zhangjin Wu , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1689717869; l=831; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=YqZjg8FJSrMkBkCofVYWpCEZm+a1T8K7Shk7yEsIFhk=; b=hB2BE0mFLdkCFJKShYDy6EPP2LB0tt6wHpWoT2KvdNGGKgEDYRpl305L7NC3YXuiwwbLs68cB crzHnhCEyrSD1sh+t1ly7VPJJMRPm6i9IGP72eVLTCb3GzCgWQgxLni X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771797871000337664 X-GMAIL-MSGID: 1771797871000337664 KTAP supports nested suites which we want to use for nolibc tests. The TAP parser at tools/testing/kunit/kunit.py requires the header "KTAP version 1" to parse nested suites. Signed-off-by: Thomas Weißschuh --- tools/testing/selftests/kselftest.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 829be379545a..811d720d50dd 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -117,6 +117,11 @@ static inline void ksft_print_header(void) printf("TAP version 13\n"); } +static inline void ksft_print_header_ktap(void) +{ + printf("KTAP version 1\n"); +} + static inline void ksft_set_plan(unsigned int plan) { ksft_plan = plan; From patchwork Tue Jul 18 22:00:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 122276 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2042825vqt; Tue, 18 Jul 2023 15:17:42 -0700 (PDT) X-Google-Smtp-Source: APBJJlGIP3YfuM3mT/stJwXb16+3UpGn7KS8JlLYPOJ78RSOtYcpHbKi80LlpX48kVrVonYdQyp2 X-Received: by 2002:a17:906:209d:b0:977:ecff:3367 with SMTP id 29-20020a170906209d00b00977ecff3367mr839854ejq.40.1689718662195; Tue, 18 Jul 2023 15:17:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689718662; cv=none; d=google.com; s=arc-20160816; b=aNcuD9ZllT3N8IY+cXw2XcD3ny8a1xpHc+kxiaMUD/s2B+CM9Dzl6jvV2LiZve3Y7j ilQ9nVHMzu3Wwktpw9HfTh5olEmR+4GBMFMPB9bQAKwbYeXY+MAsnWR+8QZD2MzJmBRG WG8MgLFV2w1/9Lfrn/ixYnuQgusw/0qbLbxrYdDJDrxVPhZwojEyPykQLzqkbsttY805 RrGHXtzXPsTUS0HbnAVgl3r3Ixvh9WmEuxPirvikZpeOB474ACBQomX/aVF1ebjS1/Cw g1AfQZcShU1lJomb3YHyvt3EVEIo1+j6XX07GGIM2yUiTuPzoC1DZQcgS8CzJoCBns70 6oMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=Hk5lq3jYaxw86Aqa7vCmKHQT+Z4CxbVAISPuGzYNv84=; fh=0DdKI3uRySxQzlTRy49d6VQh77umZfyWRaD7hOgQCS0=; b=Wd4ZD0k551bGJIRQDFNCDh7kEo74qTKmddW07kFNeDiBGsGUNu7T2yO3A11roY1PJE UM9z3yQKDnP/cU/xfYKXoXiW55nMH9VlUFghVk27jnWyxk3+SQj5BDjNs6bhGfjEl7VP Y3VnsUnvA3jhyHLPXpczuGI3BzJ0lgMPVaHlHCnO8yb45iWpy4vbTuk/hsUDl2SIXUkR W7vk0vZADRrndIzJGgJ0+Bq+487kdy/tDe+2MHRIrnsZ50IW6IxFqJmIBE9UcDNpbV2a 3a6JBT3Lc+dDW+xZ50683Rmc4enFw5gwOqtEUw1Vn6/E91EuuzACEsm4INB4BKm+m+kl YD2A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=fXmwJwiz; 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id oq19-20020a170906cc9300b0098d52a2bc16si1890892ejb.438.2023.07.18.15.17.18; Tue, 18 Jul 2023 15:17:42 -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=@weissschuh.net header.s=mail header.b=fXmwJwiz; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231522AbjGRWGU (ORCPT + 99 others); Tue, 18 Jul 2023 18:06:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37018 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231499AbjGRWGP (ORCPT ); Tue, 18 Jul 2023 18:06:15 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A46951BF0; Tue, 18 Jul 2023 15:05:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1689717870; bh=n5xdrpXeznyuCE7mSG3Ebft0BriBP+01pglPR/8sL2I=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=fXmwJwizASNAM6mEBJEdpCnzy27ei/zjSleHHHPcRvFOJgTXpijOru0Ek4OhJLoHS 13LaD5Vthd3HCTGUSe+L1gA0dGORMT2oQXgNuUeMiYHqbQi0ZM4Xq5eVWQozmTx2cx 5CrKfyPm8NMlLLM5Xd6HM5nTxjHIlr8EtPt+Dq/8= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Wed, 19 Jul 2023 00:00:44 +0200 Subject: [PATCH RFC 6/7] kselftest: support skipping tests with testname MIME-Version: 1.0 Message-Id: <20230719-nolibc-ktap-tmp-v1-6-930bd0c52ff1@weissschuh.net> References: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> In-Reply-To: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> To: Willy Tarreau Cc: Zhangjin Wu , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1689717869; l=1122; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=n5xdrpXeznyuCE7mSG3Ebft0BriBP+01pglPR/8sL2I=; b=4vAZFZKM8Ci22et/DmKgd0sLHEKdvXcU1n0xEOxws/408WmQBhmwPv4b8y1gWVR9tjrYi2Fb1 avm6PU6beIYAlszszL2ixKFZIXML3KRYN1r59KSQGk0HApXvLnPCBEv X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771798436240109290 X-GMAIL-MSGID: 1771798436240109290 The TAP parser at tools/testing/kunit/kunit.py requires a testname to properly parse skipped tests. The current kselftest APIs do not provide this functionality so add it. Signed-off-by: Thomas Weißschuh --- tools/testing/selftests/kselftest.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 811d720d50dd..0206287de5b8 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -219,6 +219,21 @@ static inline void ksft_test_result_skip(const char *msg, ...) va_end(args); } +static inline void ksft_test_result_skip2(const char *name, const char *msg, ...) +{ + int saved_errno = errno; + va_list args; + + ksft_cnt.ksft_xskip++; + + va_start(args, msg); + printf("ok %d %s # SKIP ", ksft_test_num(), name); + errno = saved_errno; + vprintf(msg, args); + va_end(args); +} + + /* TODO: how does "error" differ from "fail" or "skip"? */ static inline void ksft_test_result_error(const char *msg, ...) { From patchwork Tue Jul 18 22:00:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Patchwork-Id: 122278 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:c923:0:b0:3e4:2afc:c1 with SMTP id j3csp2043221vqt; Tue, 18 Jul 2023 15:18:26 -0700 (PDT) X-Google-Smtp-Source: APBJJlH9yAx+TESm9g7WdjyldzwIv6gcNeQfU9j/RcsyXL6aWW7IDNRFagMqcjD+MgB/TTSd92GK X-Received: by 2002:a17:906:292:b0:97e:17cc:cc95 with SMTP id 18-20020a170906029200b0097e17cccc95mr333805ejf.36.1689718706615; Tue, 18 Jul 2023 15:18:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689718706; cv=none; d=google.com; s=arc-20160816; b=jU6mAcNVx5CEAGBloYZBx81rTi6GWGiU99BaR3XqhBcV1cCPESlZQLZsugl9VHkTa1 frTxmjjlzZazXs2Dn5xPA78Amy4eCsKizaqjx0CNmwKvvY2SajopgGzaMUvup2rgSicx 3p6TsDaO+Iu/VW05GCRAufl0xMp9sSa7HrFYu+0AFLCzr7TlS1fAO48fClOv+flsIHPf DKnGEEIf9DLhk8XbxfkcHQPJq+eIh0hyfi3W2CXsm4Gs6ggTB1I+eVALyJbn2fJEUbQ8 n48OTVAHgsBd/usuPa0ZoN08YfonTGU4YZ4/hZA3XjdLvXOmxDkqzf1fIhC3Hy/5P7OV M7yA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:in-reply-to:references:message-id :content-transfer-encoding:mime-version:subject:date:from :dkim-signature; bh=E+QUsorPNr5UpsomTs/oz6dNBxisu6ZkQW4A+aCRvzU=; fh=0DdKI3uRySxQzlTRy49d6VQh77umZfyWRaD7hOgQCS0=; b=lzpvowLXrWv9LiCyjkPj/Q6GOlIrPrTSP72JCJvl4bjNrLi2SLxJxmJhXb5bXq1f2+ gBMMPRw2VQz/slaopZ62i4ctshkJalFRHQfGhOZEOvObeVCb8YAOE2dgbmIoeSDdMlC0 Y3AzxPSdYi5grVV7npn/D84G4DVF5dhWuHghvVtwYNUjKfdTjFyRIzPvFaEF944aMFYw xK+UnToVVaG4QdFGPpA4ur/NY6S9Upzt7npEULib3iFtP8/XyTtxlHgodMkIOShYLUcT k9Ndnw5RUtdjfjORpLojzeZzN6CTpzvpgK210T0JB0ZMr4hta50oEE2YXQ3NGp0ty65H 4PxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@weissschuh.net header.s=mail header.b=kV56SCDK; 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y15-20020a1709064b0f00b00993afecd681si1771908eju.331.2023.07.18.15.18.02; Tue, 18 Jul 2023 15:18:26 -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=@weissschuh.net header.s=mail header.b=kV56SCDK; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231420AbjGRWGW (ORCPT + 99 others); Tue, 18 Jul 2023 18:06:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231512AbjGRWGQ (ORCPT ); Tue, 18 Jul 2023 18:06:16 -0400 Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A4CD01BF3; Tue, 18 Jul 2023 15:05:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=weissschuh.net; s=mail; t=1689717870; bh=aqVd9xLtq21+UynUvtTIi67kU86K5eTdtQ2fKTaL4r0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=kV56SCDKepjOI1WTdtZJAeMyBjdSXKMtd3/2w/zzpd4UjOe4jN5UsniXxP3I8D50j FMM97CK6Va0uAnnziG0el70H4IbBOahFSn6wUlWAoT+0vKEu0WwRTjfvN+qePVx9QK vprOaG2M/SFS6hoiPFKcIq6yjqKEjKwe/ndEQNu8= From: =?utf-8?q?Thomas_Wei=C3=9Fschuh?= Date: Wed, 19 Jul 2023 00:00:45 +0200 Subject: [PATCH RFC 7/7] selftests/nolibc: proof of concept for TAP output MIME-Version: 1.0 Message-Id: <20230719-nolibc-ktap-tmp-v1-7-930bd0c52ff1@weissschuh.net> References: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> In-Reply-To: <20230719-nolibc-ktap-tmp-v1-0-930bd0c52ff1@weissschuh.net> To: Willy Tarreau Cc: Zhangjin Wu , linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, =?utf-8?q?Thomas_Wei=C3=9Fschuh?= X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1689717869; l=13539; i=linux@weissschuh.net; s=20221212; h=from:subject:message-id; bh=aqVd9xLtq21+UynUvtTIi67kU86K5eTdtQ2fKTaL4r0=; b=GZj4U1deTPI7X6WaN6Humx2Gyo4aRY75z28gUfV15NnEA+rYSxhHMq1oU4kUgoP2iMWz3jUot lRi4+NyGrBQAJI0ejNi0F8P35Arf6HsNH74kjKwGjfgOF6aG+s1IocC X-Developer-Key: i=linux@weissschuh.net; a=ed25519; pk=KcycQgFPX2wGR5azS7RhpBqedglOZVgRPfdFSPB1LNw= X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1771798482378710990 X-GMAIL-MSGID: 1771798482378710990 Dirty proof of concept to show how (K)TAP output can look and how it can be used. Currently test selection is not supported and for simplicity only the startup tests are enabled. Example output: $ ./nolibc-test KTAP version 1 1..15 ok 1 argc = 1 ok 2 argv_addr = <0x7ffdc66173a8> ok 3 argv_environ = <0x7ffdc66173a8> ok 4 argv_total = 1 ok 5 argv0_addr = <0x7ffdc6618bca> ok 6 argv0_str = <0x7ffdc6618bca> ok 7 argv0_len = 13 ok 8 environ_addr = <0x7ffdc66173b8> ok 9 environ_envp = <0x7ffdc66173b8> ok 10 environ_auxv = <0x7ffdc66173b8> ok 11 environ_total = 271 ok 12 environ_HOME = <0x7ffdc6618cc7> ok 13 auxv_addr = <0x7ffdc66174c8> ok 14 auxv_AT_UID = 1000 ok 15 auxv_AT_PAGESZ = 4096 # Exiting with status 0 # Totals: pass:15 fail:0 xfail:0 xpass:0 skip:0 error:0 $ ./libc-test KTAP version 1 1..15 ok 1 argc = 1 ok 2 argv_addr = <0x7ffd5f3d43e8> ok 3 argv_environ = <0x7ffd5f3d43e8> ok 4 argv_total = 1 ok 5 argv0_addr = <0x7ffd5f3d5bd0> ok 6 argv0_str = <0x7ffd5f3d5bd0> ok 7 argv0_len = 11 ok 8 environ_addr = <0x7ffd5f3d43f8> ok 9 environ_envp = <0x7ffd5f3d43f8> ok 10 environ_auxv # SKIP test_auxv != (void *)-1 ok 11 environ_total # SKIP test_auxv != (void *)-1 ok 12 environ_HOME = <0x7ffd5f3d5ccb> ok 13 auxv_addr # SKIP test_auxv != (void *)-1 ok 14 auxv_AT_UID = 1000 ok 15 auxv_AT_PAGESZ = 4096 # Exiting with status 0 # Totals: pass:12 fail:0 xfail:0 xpass:0 skip:3 error:0 ./run-all-tests.sh | $SRC/tools/testing/kunit/kunit.py parse [23:47:26] ============================================================ [23:47:26] ====================== (15 subtests) ======================= [23:47:26] [PASSED] argc = 1 [23:47:26] [PASSED] argv_addr = <0x7ffcac1b8bc8> [23:47:26] [PASSED] argv_environ = <0x7ffcac1b8bc8> [23:47:26] [PASSED] argv_total = 1 [23:47:26] [PASSED] argv0_addr = <0x7ffcac1b9bd0> [23:47:26] [PASSED] argv0_str = <0x7ffcac1b9bd0> [23:47:26] [PASSED] argv0_len = 11 [23:47:26] [PASSED] environ_addr = <0x7ffcac1b8bd8> [23:47:26] [PASSED] environ_envp = <0x7ffcac1b8bd8> [23:47:26] [SKIPPED] environ_auxv [23:47:26] [SKIPPED] environ_total [23:47:26] [PASSED] environ_HOME = <0x7ffcac1b9ccb> [23:47:26] [SKIPPED] auxv_addr [23:47:26] [PASSED] auxv_AT_UID = 1000 [23:47:26] [PASSED] auxv_AT_PAGESZ = 4096 [23:47:26] ====================== [PASSED] arm64 ====================== [23:47:26] ====================== (15 subtests) ======================= [23:47:26] [PASSED] argc = 1 [23:47:26] [PASSED] argv_addr = <0x7ffdee178188> [23:47:26] [PASSED] argv_environ = <0x7ffdee178188> [23:47:26] [PASSED] argv_total = 1 [23:47:26] [PASSED] argv0_addr = <0x7ffdee178bd0> [23:47:26] [PASSED] argv0_str = <0x7ffdee178bd0> [23:47:26] [PASSED] argv0_len = 11 [23:47:26] [PASSED] environ_addr = <0x7ffdee178198> [23:47:26] [PASSED] environ_envp = <0x7ffdee178198> [23:47:26] [SKIPPED] environ_auxv [23:47:26] [SKIPPED] environ_total [23:47:26] [PASSED] environ_HOME = <0x7ffdee178ccb> [23:47:26] [SKIPPED] auxv_addr [23:47:26] [PASSED] auxv_AT_UID = 1000 [23:47:26] [PASSED] auxv_AT_PAGESZ = 4096 [23:47:26] ===================== [PASSED] x86_64 ====================== [23:47:26] ====================== (15 subtests) ======================= [23:47:26] [PASSED] argc = 1 [23:47:26] [PASSED] argv_addr = <0x7ffc16bf3628> [23:47:26] [PASSED] argv_environ = <0x7ffc16bf3628> [23:47:26] [PASSED] argv_total = 1 [23:47:26] [PASSED] argv0_addr = <0x7ffc16bf4bd0> [23:47:26] [PASSED] argv0_str = <0x7ffc16bf4bd0> [23:47:26] [PASSED] argv0_len = 11 [23:47:26] [PASSED] environ_addr = <0x7ffc16bf3638> [23:47:26] [PASSED] environ_envp = <0x7ffc16bf3638> [23:47:26] [SKIPPED] environ_auxv [23:47:26] [SKIPPED] environ_total [23:47:26] [PASSED] environ_HOME = <0x7ffc16bf4ccb> [23:47:26] [SKIPPED] auxv_addr [23:47:26] [PASSED] auxv_AT_UID = 1000 [23:47:26] [PASSED] auxv_AT_PAGESZ = 4096 [23:47:26] ===================== [PASSED] riscv64 ===================== [23:47:26] ============================================================ [23:47:26] Testing complete. Ran 45 tests: passed: 36, skipped: 9 The output of kunit.py is colored after the test results. Not-signed-off --- tools/testing/selftests/nolibc/nolibc-test.c | 121 ++++++++---------------- tools/testing/selftests/nolibc/run-all-tests.sh | 22 +++++ 2 files changed, 63 insertions(+), 80 deletions(-) diff --git a/tools/testing/selftests/nolibc/nolibc-test.c b/tools/testing/selftests/nolibc/nolibc-test.c index 03f64ce1dda6..f8064cd58783 100644 --- a/tools/testing/selftests/nolibc/nolibc-test.c +++ b/tools/testing/selftests/nolibc/nolibc-test.c @@ -41,12 +41,13 @@ #endif #endif +#define inline __inline__ +#include "../kselftest.h" + /* for the type of int_fast16_t and int_fast32_t, musl differs from glibc and nolibc */ #define SINT_MAX_OF_TYPE(type) (((type)1 << (sizeof(type) * 8 - 2)) - (type)1 + ((type)1 << (sizeof(type) * 8 - 2))) #define SINT_MIN_OF_TYPE(type) (-SINT_MAX_OF_TYPE(type) - 1) -#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) - /* will be used to test initialization of environ */ static char **test_envp; @@ -59,6 +60,8 @@ static int test_argc; /* will be used by some test cases as readable file, please don't write it */ static const char *argv0; +static const char *test_name; + /* definition of a series of tests */ struct test { const char *name; /* test name */ @@ -197,15 +200,11 @@ static int expect_nz(int expr, int llen) #define EXPECT_EQ(cond, expr, val) \ - do { if (!(cond)) result(llen, SKIPPED); else ret += expect_eq(expr, llen, val); } while (0) + do { if (!(cond)) ksft_test_result_skip2(test_name, "%s\n", #cond); else expect_eq(expr, val); } while (0) -static int expect_eq(uint64_t expr, int llen, uint64_t val) +static int expect_eq(uint64_t expr, uint64_t val) { - int ret = !(expr == val); - - llen += printf(" = %lld ", (long long)expr); - result(llen, ret ? FAIL : OK); - return ret; + ksft_test_result(expr = val, "%s = %lld\n", test_name, (long long) expr); } @@ -223,15 +222,11 @@ static int expect_ne(int expr, int llen, int val) #define EXPECT_GE(cond, expr, val) \ - do { if (!(cond)) result(llen, SKIPPED); else ret += expect_ge(expr, llen, val); } while (0) + do { if (!(cond)) ksft_test_result_skip2(test_name, "%s\n", #cond); else expect_ge(expr, val); } while (0) -static int expect_ge(int expr, int llen, int val) +static int expect_ge(int expr, int val) { - int ret = !(expr >= val); - - llen += printf(" = %d ", expr); - result(llen, ret ? FAIL : OK); - return ret; + ksft_test_result(expr >= val, "%s = %d\n", test_name, expr); } @@ -376,37 +371,19 @@ static int expect_ptrzr(const void *expr, int llen) #define EXPECT_PTRNZ(cond, expr) \ - do { if (!(cond)) result(llen, SKIPPED); else ret += expect_ptrnz(expr, llen); } while (0) + do { if (!(cond)) ksft_test_result_skip("%s: %s\n", test_name, #cond); else expect_ptrnz(expr); } while (0) -static int expect_ptrnz(const void *expr, int llen) +static int expect_ptrnz(const void *expr) { - int ret = 0; - - llen += printf(" = <%p> ", expr); - if (!expr) { - ret = 1; - result(llen, FAIL); - } else { - result(llen, OK); - } - return ret; + ksft_test_result(expr, "%s = <%p>\n", test_name, expr); } #define EXPECT_PTREQ(cond, expr, cmp) \ - do { if (!(cond)) result(llen, SKIPPED); else ret += expect_ptreq(expr, llen, cmp); } while (0) + do { if (!(cond)) ksft_test_result_skip("%s: %s\n", test_name, #cond); else expect_ptreq(expr, cmp); } while (0) -static int expect_ptreq(const void *expr, int llen, const void *cmp) +static void expect_ptreq(const void *expr, const void *cmp) { - int ret = 0; - - llen += printf(" = <%p> ", expr); - if (expr != cmp) { - ret = 1; - result(llen, FAIL); - } else { - result(llen, OK); - } - return ret; + ksft_test_result(expr == cmp, "%s = <%p>\n", test_name, expr); } #define EXPECT_PTRNE(cond, expr, cmp) \ @@ -439,41 +416,28 @@ static int expect_ptrge(const void *expr, int llen, const void *cmp) } #define EXPECT_PTRGT(cond, expr, cmp) \ - do { if (!(cond)) result(llen, SKIPPED); else ret += expect_ptrgt(expr, llen, cmp); } while (0) + do { if (!(cond)) ksft_test_result_skip2(test_name, "%s\n", #cond); else expect_ptrgt(expr, cmp); } while (0) -static int expect_ptrgt(const void *expr, int llen, const void *cmp) +static void expect_ptrgt(const void *expr, const void *cmp) { - int ret = !(expr > cmp); - - llen += printf(" = <%p> ", expr); - result(llen, ret ? FAIL : OK); - return ret; + ksft_test_result(expr > cmp, "%s = <%p>\n", test_name, expr); } - #define EXPECT_PTRLE(cond, expr, cmp) \ - do { if (!(cond)) result(llen, SKIPPED); else ret += expect_ptrle(expr, llen, cmp); } while (0) + do { if (!(cond)) ksft_test_result_skip("%s: %s\n", test_name, #cond); else expect_ptrle(expr, cmp); } while (0) static int expect_ptrle(const void *expr, int llen, const void *cmp) { - int ret = !(expr <= cmp); - - llen += printf(" = <%p> ", expr); - result(llen, ret ? FAIL : OK); - return ret; + ksft_test_result(expr <= cmp, "%s = <%p>\n", test_name, expr); } #define EXPECT_PTRLT(cond, expr, cmp) \ - do { if (!(cond)) result(llen, SKIPPED); else ret += expect_ptrlt(expr, llen, cmp); } while (0) + do { if (!(cond)) ksft_test_result_skip2(test_name, "%s\n", #cond); else expect_ptrlt(expr, cmp); } while (0) -static int expect_ptrlt(const void *expr, int llen, const void *cmp) +static int expect_ptrlt(const void *expr, const void *cmp) { - int ret = !(expr < cmp); - - llen += printf(" = <%p> ", expr); - result(llen, ret ? FAIL : OK); - return ret; + ksft_test_result(expr < cmp, "%s = <%p>\n", test_name, expr); } #define EXPECT_PTRER2(cond, expr, expret, experr1, experr2) \ @@ -520,20 +484,11 @@ static int expect_strzr(const char *expr, int llen) #define EXPECT_STRNZ(cond, expr) \ - do { if (!(cond)) result(llen, SKIPPED); else ret += expect_strnz(expr, llen); } while (0) + do { if (!(cond)) ksft_test_result_skip("%s: %s\n", test_name, #cond); else expect_strnz(expr); } while (0) -static int expect_strnz(const char *expr, int llen) +static int expect_strnz(const char *expr) { - int ret = 0; - - llen += printf(" = <%s> ", expr); - if (!expr) { - ret = 1; - result(llen, FAIL); - } else { - result(llen, OK); - } - return ret; + ksft_test_result(expr, "%s = <%p>\n", test_name, expr); } @@ -575,7 +530,7 @@ static int expect_strne(const char *expr, int llen, const char *cmp) /* declare tests based on line numbers. There must be exactly one test per line. */ #define CASE_TEST(name) \ - case __LINE__: llen += printf("%d %s", test, #name); + case __LINE__: test_name = #name; #define SWITCH_TEST \ int _tests_start = __LINE__; switch (test + __LINE__ + 1) { @@ -1187,10 +1142,12 @@ int prepare(void) static const struct test test_names[] = { /* add new tests here */ { .name = "startup", .func = run_startup }, + /* { .name = "syscall", .func = run_syscall }, { .name = "stdlib", .func = run_stdlib }, { .name = "vfprintf", .func = run_vfprintf }, { .name = "protection", .func = run_protection }, + */ }; int is_setting_valid(char *test) @@ -1317,16 +1274,19 @@ int main(int argc, char **argv, char **envp) } while (test && *test); } else { /* no test mentioned, run everything */ + + ksft_print_header_ktap(); + int total = 0; + for (idx = 0; idx < ARRAY_SIZE(test_names); idx++) + total += count_subtests(&test_names[idx]); + ksft_set_plan(total); + for (idx = 0; idx < ARRAY_SIZE(test_names); idx++) { - printf("Running test '%s'\n", test_names[idx].name); err = test_names[idx].func(min, max); ret += err; - printf("Errors during this test: %d\n\n", err); } } - printf("Total number of errors: %d\n", ret); - if (getpid() == 1) { /* we're running as init, there's no other process on the * system, thus likely started from a VM for a quick check. @@ -1335,7 +1295,7 @@ int main(int argc, char **argv, char **envp) * cleanly will often be reported as a success. This allows * to use the output of this program for bisecting kernels. */ - printf("Leaving init with final status: %d\n", !!ret); + ksft_print_msg("Leaving init with final status: %d\n", !!ret); if (ret == 0) reboot(RB_POWER_OFF); #if defined(__x86_64__) @@ -1349,6 +1309,7 @@ int main(int argc, char **argv, char **envp) #endif } - printf("Exiting with status %d\n", !!ret); + ksft_print_msg("Exiting with status %d\n", !!ret); + ksft_finished(); return !!ret; } diff --git a/tools/testing/selftests/nolibc/run-all-tests.sh b/tools/testing/selftests/nolibc/run-all-tests.sh new file mode 100755 index 000000000000..8f37b8b36ef4 --- /dev/null +++ b/tools/testing/selftests/nolibc/run-all-tests.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -o pipefail + +archs=(arm64 x86_64 riscv64) + +echo "KTAP version 1" +echo "1..${#archs[@]}" + +for i in "${!archs[@]}"; do + arch="${archs[$i]}" + ./libc-test | sed -e 's/^/ /' + rc=$? + + if [ $rc -eq 0 ]; then + res=ok + else + res="not ok" + fi + + echo "$res $(( i + 1 )) $arch" +done