All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com>
To: workflows@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
	Joe Perches <joe@perches.com>, Andy Whitcroft <apw@canonical.com>,
	Theodore Ts'o <tytso@mit.edu>, David Gow <davidgow@google.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Mark Brown <broonie@kernel.org>,
	Shuah Khan <skhan@linuxfoundation.org>,
	"Darrick J . Wong" <djwong@kernel.org>
Cc: kunit-dev@googlegroups.com, linux-kselftest@vger.kernel.org,
	Veronika Kabatova <vkabatov@redhat.com>,
	CKI <cki-project@redhat.com>,
	kernelci@lists.linux.dev,
	Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com>
Subject: [RFC PATCH v2 05/10] checkpatch: Propose tests to execute
Date: Tue,  5 Dec 2023 20:03:01 +0200	[thread overview]
Message-ID: <20231205184503.79769-6-Nikolai.Kondrashov@redhat.com> (raw)
In-Reply-To: <20231205184503.79769-1-Nikolai.Kondrashov@redhat.com>

Make scripts/checkpatch.pl output a 'CHECK' advertising any test suites
proposed for the changed subsystems, and prompting their execution.

Using 'CHECK', instead of 'WARNING', or 'ERROR', because test suite
commands executed for testing can generally be off by an option/argument
or two, depending on the situation, while still satisfying the
maintainer requirements, but failing the comparison with the V: entry
and raising alarm unnecessarily.

However, see the later patch adding the proposal strength to the V:
entry and allowing raising the severity of the message for those who'd
like that.

Signed-off-by: Nikolai Kondrashov <Nikolai.Kondrashov@redhat.com>
---
 scripts/checkpatch.pl | 43 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index bea602c30df5d..1da617e1edb5f 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -1144,6 +1144,29 @@ sub is_maintained_obsolete {
 	return $maintained_status{$filename} =~ /obsolete/i;
 }
 
+# Test suites proposed per changed file
+our %files_proposed_tests = ();
+
+# Return a list of test suites proposed for execution for a particular file
+sub get_file_proposed_tests {
+	my ($filename) = @_;
+	my $file_proposed_tests;
+
+	return () if (!$tree || !(-e "$root/scripts/get_maintainer.pl"));
+
+	if (!exists($files_proposed_tests{$filename})) {
+		my $command = "perl $root/scripts/get_maintainer.pl --test --multiline --nogit --nogit-fallback -f $filename";
+		# Ignore warnings on stderr
+		my $output = `$command 2>/dev/null`;
+		# But regenerate stderr on failure
+		die "Failed retrieving tests proposed for changes to \"$filename\":\n" . `$command 2>&1 >/dev/null` if ($?);
+		$files_proposed_tests{$filename} = [grep { !/@/ } split("\n", $output)]
+	}
+
+	$file_proposed_tests = $files_proposed_tests{$filename};
+	return @$file_proposed_tests;
+}
+
 sub is_SPDX_License_valid {
 	my ($license) = @_;
 
@@ -2689,6 +2712,9 @@ sub process {
 	my @setup_docs = ();
 	my $setup_docs = 0;
 
+	# Test suites which should not be proposed for execution
+	my %dont_propose_tests = ();
+
 	my $camelcase_file_seeded = 0;
 
 	my $checklicenseline = 1;
@@ -2907,6 +2933,17 @@ sub process {
 				}
 			}
 
+			# Check if tests are proposed for changes to the file
+			foreach my $test (get_file_proposed_tests($realfile)) {
+				next if exists $dont_propose_tests{$test};
+				CHK("TEST_PROPOSAL",
+				    "Running the following test suite is proposed for changes to $realfile:\n" .
+				    "$test\n" .
+				    "Add the following to the tested commit's message, IF IT PASSES:\n" .
+				    "Tested-with: $test\n");
+				$dont_propose_tests{$test} = 1;
+			}
+
 			next;
 		}
 
@@ -3233,6 +3270,12 @@ sub process {
 			}
 		}
 
+# Check and accumulate executed test suites (stripping URLs off the end)
+		if (!$in_commit_log && $line =~ /^\s*Tested-with:\s*(.*?)\s*#.*$/i) {
+			# Do not propose this certified-passing test suite
+			$dont_propose_tests{$1} = 1;
+		}
+
 # Check email subject for common tools that don't need to be mentioned
 		if ($in_header_lines &&
 		    $line =~ /^Subject:.*\b(?:checkpatch|sparse|smatch)\b[^:]/i) {
-- 
2.42.0


  parent reply	other threads:[~2023-12-05 18:45 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-15 17:43 [RFC PATCH 0/3] MAINTAINERS: Introduce V: field for required tests Nikolai Kondrashov
2023-11-15 17:43 ` [PATCH 1/3] " Nikolai Kondrashov
2023-11-15 18:31   ` Joe Perches
2023-11-15 20:01     ` Mark Brown
2023-11-16 12:00     ` Nikolai Kondrashov
2023-11-15 20:14   ` Mark Brown
2023-11-16 12:09     ` Nikolai Kondrashov
2023-11-15 20:38   ` Konstantin Ryabitsev
2023-11-16 12:14     ` Nikolai Kondrashov
2023-11-16 13:26       ` Mark Brown
2023-11-16 13:52         ` Nikolai Kondrashov
2023-11-20 12:40       ` Gustavo Padovan
2023-11-20 13:31         ` Mark Brown
2023-11-22 17:41         ` Nikolai Kondrashov
2023-11-16 13:20   ` Bagas Sanjaya
2023-11-16 13:41     ` Nikolai Kondrashov
2023-11-16 13:43       ` Bagas Sanjaya
2023-11-16 13:59     ` Greg Kroah-Hartman
2023-11-16 14:21     ` Geert Uytterhoeven
2023-11-20 13:30   ` Ricardo Cañuelo
2023-11-20 20:51     ` Theodore Ts'o
2023-11-20 22:27       ` Mark Brown
2023-11-21  6:04         ` Theodore Ts'o
2023-11-21 10:37           ` David Gow
2023-11-21 13:27           ` Mark Brown
2023-11-22 16:16             ` Theodore Ts'o
2023-11-21 18:24       ` Nikolai Kondrashov
2023-11-21 18:02     ` Nikolai Kondrashov
2023-11-21 10:36   ` David Gow
2023-11-21 20:48     ` Mark Brown
2023-11-22 17:19     ` Nikolai Kondrashov
2023-11-22  1:08   ` kernel test robot
2023-11-15 17:43 ` [PATCH 2/3] MAINTAINERS: Require kvm-xfstests smoke for ext4 Nikolai Kondrashov
2023-11-15 18:58   ` Darrick J. Wong
2023-11-16 16:33     ` Nikolai Kondrashov
2023-11-17  7:09     ` Chandan Babu R
2023-11-19 22:54       ` Theodore Ts'o
2023-11-22 14:44         ` Nikolai Kondrashov
2023-11-22 16:17           ` Darrick J. Wong
2023-11-22 17:44             ` Nikolai Kondrashov
2023-11-22 20:51             ` Dave Chinner
2023-11-15 17:43 ` [PATCH 3/3] MAINTAINERS: Require kunit core tests for framework changes Nikolai Kondrashov
2023-11-20 18:48   ` Daniel Latypov
2023-11-22 17:38     ` Nikolai Kondrashov
2023-12-05 18:02 ` [RFC PATCH v2 00/10] MAINTAINERS: Introduce V: entry for tests Nikolai Kondrashov
2023-12-05 18:02   ` [RFC PATCH v2 01/10] get_maintainer: Survive querying missing files Nikolai Kondrashov
2023-12-05 18:55     ` Joe Perches
2023-12-06 16:16       ` Nikolai Kondrashov
2024-01-31 13:55       ` Nikolai Kondrashov
2023-12-05 18:02   ` [RFC PATCH v2 02/10] MAINTAINERS: Introduce V: entry for tests Nikolai Kondrashov
2023-12-05 18:58     ` Joe Perches
2023-12-06 16:21       ` Nikolai Kondrashov
2023-12-06  8:12     ` David Gow
2023-12-06 16:23       ` Nikolai Kondrashov
2023-12-06 16:38         ` Joe Perches
2023-12-06 16:57           ` Nikolai Kondrashov
2023-12-05 18:02   ` [RFC PATCH v2 03/10] MAINTAINERS: Propose kunit core tests for framework changes Nikolai Kondrashov
2023-12-05 18:03   ` [RFC PATCH v2 04/10] docs: submitting-patches: Introduce Tested-with: Nikolai Kondrashov
2023-12-05 18:59     ` Jonathan Corbet
2023-12-05 19:07       ` Joe Perches
2023-12-06 10:07         ` Geert Uytterhoeven
2023-12-06 16:46         ` Nikolai Kondrashov
2023-12-06 16:31       ` Nikolai Kondrashov
2023-12-05 18:03   ` Nikolai Kondrashov [this message]
2023-12-05 18:03   ` [RFC PATCH v2 06/10] MAINTAINERS: Support referencing test docs in V: Nikolai Kondrashov
2023-12-06  8:03     ` David Gow
2023-12-06 16:54       ` Nikolai Kondrashov
2023-12-05 18:03   ` [RFC PATCH v2 07/10] MAINTAINERS: Propose kvm-xfstests smoke for ext4 Nikolai Kondrashov
2023-12-05 18:03   ` [RFC PATCH v2 08/10] docs: tests: Document kunit in general Nikolai Kondrashov
2023-12-05 18:03   ` [RFC PATCH v2 09/10] MAINTAINERS: Propose kunit tests for regmap Nikolai Kondrashov
2023-12-05 18:03   ` [RFC PATCH v2 10/10] MAINTAINERS: Add proposal strength to V: entries Nikolai Kondrashov
2024-01-08 10:42   ` [RFC PATCH v2 00/10] MAINTAINERS: Introduce V: entry for tests Nikolai Kondrashov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231205184503.79769-6-Nikolai.Kondrashov@redhat.com \
    --to=nikolai.kondrashov@redhat.com \
    --cc=apw@canonical.com \
    --cc=broonie@kernel.org \
    --cc=cki-project@redhat.com \
    --cc=corbet@lwn.net \
    --cc=davidgow@google.com \
    --cc=djwong@kernel.org \
    --cc=joe@perches.com \
    --cc=kernelci@lists.linux.dev \
    --cc=kunit-dev@googlegroups.com \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    --cc=skhan@linuxfoundation.org \
    --cc=tytso@mit.edu \
    --cc=vkabatov@redhat.com \
    --cc=workflows@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.