From nobody Thu Apr 9 15:23:01 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3908A37DEBD for ; Sat, 7 Mar 2026 22:08:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772921317; cv=none; b=UuQurSCQFmsaNvk6FOcfFsoHS5d9JMd0Q3YkkHBkp/vX0LP0cwJAHxBZjkpnCrdnF5QglQKTDq7tQJMyEEF2X14++NzpBGaGUq2FUG87FOAXwjWOhKyzgHYQ5u88hX2tlpdxtl5y3uUfjO2TZvViSMPHXUvX/lAdhrcAC+yYyM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772921317; c=relaxed/simple; bh=zgtGhyIBDb9mNj4tF+CELNX7FwE5DXKhqv3SiNjQ6aU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ivjWDNY0IHxigqgdgRE6nYjHsAriDlgRrRK/hijGKzpRjkCSurvLNnWiUrvT/pm6WR3LJpTLHMOEMmK8OkqaMtDsWhlEGLcDQLLp73f7Sc54ZShdWq63N5QhX1cCug6XTd35ZhbjUeS+P0B2K+3scUyLvwzvZB8sVEe/RDIxu4o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=bdrNI/mN; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="bdrNI/mN" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4836e3288cdso70940785e9.0 for ; Sat, 07 Mar 2026 14:08:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1772921315; x=1773526115; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=wAlSefDotAsDdu5p6dXRKGZQPdanZKaUs8WMkbAELKM=; b=bdrNI/mN8gCphPAzmJVTrT2rBDObcV14wyxuyTwJ7RwK3A1a+haA9gDeO4XyDY7zEn +8NpZRTAenNaXtVW/U05LfFIuZsD8TxfbpCItnfKvvt15vvbkZZoSeAivZmIyZZW6//V a2/La9CrCOHd6q/2io2Ifx9qXyIJZL2PiadTfPdqJUM32Uph6sap0KE8mXdgano6hx/R xJP6c0oxfl2UQ7MXWIndCPvyU8Z5HUFaYyP/FEG4wlgmOfoSyUoT2aP9r4gdKfaZrO5T M62e6Z47h3SydemI0vFy9qyZCzuSM5be/LPWiDNTb6gid9SiZM8h8qrOx8VW5zTf5f/M 424g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772921315; x=1773526115; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=wAlSefDotAsDdu5p6dXRKGZQPdanZKaUs8WMkbAELKM=; b=WgOWcNt3bJk08dInRbGbqiq9gjz8K0ZhJxnWKCcKuCXd0mo6ckUavnVb+2567d4j6f yNFjRD0n0YKSyZnv+MeLPCRuu+f+0cQWnIli/LBTjtS2+Cg/pIh/vmWxOAm7SqCTNfOp OhbSI0KbD0o6bPJApihMgydypbaAVgzjS42YtQ7lRP/RY4HXdygN4gxaZTNQGgroYreN a+ypEYKOw6kY/Hz+Ac5yTRgmJRUknojGhNrig8Nz/OCWIrmDhbBonYSPo7Ko/WOoLl/q 9budkwcZtomzrSEL983odlQFcFITi/NKFwnoX0/jzJR25WcCRQjuN6m1AtO8xbNqGi4o G4mA== X-Forwarded-Encrypted: i=1; AJvYcCWQl/FsJQoMt3TcAzq4PExor0ZLwu+WLVhwsZLQr3M7qP+llLaVobiGf8EcaWDnSqf/HQvloIce1t5UHMs=@vger.kernel.org X-Gm-Message-State: AOJu0Yyh7UTmwm4WkBKGOi+mEtoj/fCmLwrZx+RMfCVTELWuptkFDQH4 Up85ePGJU9eOKy9F9agqxlgemUXydYoijPI3YWrgWTVteivDtqQOM2/1szQLkqtpA08= X-Gm-Gg: ATEYQzzKiqNWvxa2cMLKyUTXgvBLHYkuG/GdoDNzNkrt/YkJ9ipQkJxd1LlFeHOQym/ 1A0g1kTRry4RrvwMrkT5Xu4oZ08kMEKN4dGXSKyoCVWoKvYN1xLX74qj4zHxWGm13I+8Eef3xm5 GhoP10EYOO1Pgvmvc8N8Yv4yDya/7/SsnfRbEd8CXiS/MJvC54JTk4FSI0AljN7A92Rcnw0B4JS p3qJy24Dd6eMrA0tN9lwRAT/jfGO6yohZfQFGn0xNpFVPHBml884XmZP+SUpETRmqdv0JJ2c6aR aUYOyHRrUGbZ70bmwWO7wDj4k/qaOqlZwJfOdkY5W6GDETn/X7F7ux7Es/bRPlZGKqA0eePsKIL 9eZi7xd59/IhmC2HL6LZpDgMBEHurAltwkN2erWL232yyHorEQXZ20JNgPJrtrhnm9ie7wcro9u BpYUruuH/3xQ== X-Received: by 2002:a05:600c:8a1b:20b0:47d:7004:f488 with SMTP id 5b1f17b1804b1-4851ee992d9mr132590775e9.10.1772921314599; Sat, 07 Mar 2026 14:08:34 -0800 (PST) Received: from localhost ([189.99.238.164]) by smtp.gmail.com with ESMTPSA id ada2fe7eead31-5ffe8922cdfsm5582113137.5.2026.03.07.14.08.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 07 Mar 2026 14:08:33 -0800 (PST) From: =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= Date: Sat, 07 Mar 2026 19:08:04 -0300 Subject: [PATCH 9/9] ktest: Add a --dry-run mode Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260307-ktest-fixes-v1-9-565d412f4925@suse.com> References: <20260307-ktest-fixes-v1-0-565d412f4925@suse.com> In-Reply-To: <20260307-ktest-fixes-v1-0-565d412f4925@suse.com> To: Steven Rostedt , John Hawley Cc: Andrea Righi , Marcos Paulo de Souza , Matthieu Baerts , Fernando Fernandez Mancera , Pedro Falcato , linux-kernel@vger.kernel.org, Steven Rostedt , =?utf-8?q?Ricardo_B=2E_Marli=C3=A8re?= X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openssh-sha256; t=1772921280; l=4288; i=rbm@suse.com; h=from:subject:message-id; bh=zgtGhyIBDb9mNj4tF+CELNX7FwE5DXKhqv3SiNjQ6aU=; b=U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgguRCc5X8/UX9M40lkMnr//aFGOhce x5ezt8MFNUFlqYAAAAGcGF0YXR0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5AAAA QIz0ODCUQu980JmjPlQ9s37r18QB/xyDGTdmBiP74AV9FQ2EwfGizb3dDgxTlPEPMTS+ds2tlSy koobOTIkUZgQ= X-Developer-Key: i=rbm@suse.com; a=openssh; fpr=SHA256:pzhe0fJpYLz+3cZ33FFPhIfaUElk9CXPFFXmalIH+1g When working on a ktest configuration, it is often useful to inspect the final option values after includes, defaults, per-test overrides, and variable expansion have been applied, without actually starting a test run. Add a --dry-run option that reads the configuration, prints the test preamble using resolved option values, and exits before opening LOG_FILE or executing any test logic. This is useful for debugging ktest configurations and for scripts that need to validate the final resolved settings without triggering side effects. Signed-off-by: Ricardo B. Marli=C3=A8re --- tools/testing/ktest/ktest.pl | 89 +++++++++++++++++++++++++++++++---------= ---- 1 file changed, 63 insertions(+), 26 deletions(-) diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl index 8962857ce4a6..de99b82d16ad 100755 --- a/tools/testing/ktest/ktest.pl +++ b/tools/testing/ktest/ktest.pl @@ -85,6 +85,7 @@ my %default =3D ( ); =20 my $test_log_start =3D 0; +my $dry_run =3D 0; =20 my $ktest_config =3D "ktest.conf"; my $version; @@ -587,7 +588,7 @@ sub end_monitor; sub wait_for_monitor; =20 sub _logit { - if (defined($opt{"LOG_FILE"})) { + if (defined($opt{"LOG_FILE"}) && defined(fileno(LOG))) { print LOG @_; } } @@ -1365,6 +1366,9 @@ sub read_config { print "$option\n"; } print "Set IGNORE_UNUSED =3D 1 to have ktest ignore unused variables\n"; + if ($dry_run) { + return; + } if (!read_yn "Do you want to continue?") { exit -1; } @@ -4249,6 +4253,53 @@ sub set_test_option { return eval_option($name, $option, $i); } =20 +sub print_test_preamble { + my ($resolved) =3D @_; + + doprint "\n\nSTARTING AUTOMATED TESTS\n\n"; + + for (my $i =3D 0, my $repeat =3D 1; $i <=3D $opt{"NUM_TESTS"}; $i +=3D= $repeat) { + + if (!$i) { + doprint "DEFAULT OPTIONS:\n"; + } else { + doprint "\nTEST $i OPTIONS"; + if (defined($repeat_tests{$i})) { + $repeat =3D $repeat_tests{$i}; + doprint " ITERATE $repeat"; + } + doprint "\n"; + } + + foreach my $option (sort keys %opt) { + my $value; + + if ($option =3D~ /\[(\d+)\]$/) { + next if ($i !=3D $1); + + if ($resolved) { + my $name =3D $option; + $name =3D~ s/\[\d+\]$//; + $value =3D set_test_option($name, $i); + } else { + $value =3D $opt{$option}; + } + } else { + next if ($i); + + if ($resolved) { + $value =3D set_test_option($option, 0); + } else { + $value =3D $opt{$option}; + } + } + + $value =3D "" if (!defined($value)); + doprint "$option =3D $value\n"; + } + } +} + sub find_mailer { my ($mailer) =3D @_; =20 @@ -4348,6 +4399,8 @@ ktest.pl version: $VERSION Sets global BUILD_NOCLEAN to 1 -D TEST_TYPE[2]=3Dbuild Sets TEST_TYPE of test 2 to "build" + --dry-run + Print resolved test options and exit without running tests. =20 It can also override all temp variables. -D USE_TEMP_DIR:=3D1 @@ -4379,6 +4432,9 @@ while ( $#ARGV >=3D 0 ) { } else { $command_vars[$#command_vars + 1] =3D $val; } + } elsif ( $ARGV[0] eq "--dry-run" ) { + $dry_run =3D 1; + shift; } elsif ( $ARGV[0] eq "-h" ) { die_usage; } else { @@ -4427,6 +4483,11 @@ EOF } read_config $ktest_config; =20 +if ($dry_run) { + print_test_preamble 1; + exit 0; +} + if (defined($opt{"LOG_FILE"})) { $opt{"LOG_FILE"} =3D set_test_option("LOG_FILE", 1); } @@ -4458,31 +4519,7 @@ if (defined($opt{"LOG_FILE"})) { LOG->autoflush(1); } =20 -doprint "\n\nSTARTING AUTOMATED TESTS\n\n"; - -for (my $i =3D 0, my $repeat =3D 1; $i <=3D $opt{"NUM_TESTS"}; $i +=3D $re= peat) { - - if (!$i) { - doprint "DEFAULT OPTIONS:\n"; - } else { - doprint "\nTEST $i OPTIONS"; - if (defined($repeat_tests{$i})) { - $repeat =3D $repeat_tests{$i}; - doprint " ITERATE $repeat"; - } - doprint "\n"; - } - - foreach my $option (sort keys %opt) { - if ($option =3D~ /\[(\d+)\]$/) { - next if ($i !=3D $1); - } else { - next if ($i); - } - - doprint "$option =3D $opt{$option}\n"; - } -} +print_test_preamble 0; =20 $SIG{INT} =3D qw(cancel_test); =20 --=20 2.53.0