Re: [PATCH RESEND v1] ktest: Fix Test Failures Due to Missing LOG_FILE Directories

From: Steven Rostedt
Date: Tue Mar 04 2025 - 13:42:38 EST


On Tue, 28 Jan 2025 05:14:27 +0000
Ayush Jain <Ayush.jain3@xxxxxxx> wrote:

> Handle missing parent directories for LOG_FILE path to prevent test
> failures. If the parent directories don't exist, create them to ensure
> the tests proceed successfully.
>

Sorry for the late reply. This got lost in my inbox.

> Signed-off-by: Ayush Jain <Ayush.jain3@xxxxxxx>
> ---
> tools/testing/ktest/ktest.pl | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
> index 8c8da966c641..be707cbc56a7 100755
> --- a/tools/testing/ktest/ktest.pl
> +++ b/tools/testing/ktest/ktest.pl
> @@ -4303,6 +4303,13 @@ if (defined($opt{"LOG_FILE"})) {
> if ($opt{"CLEAR_LOG"}) {
> unlink $opt{"LOG_FILE"};
> }
> + if (! -e $opt{"LOG_FILE"}) {

First, please use the same indentation as the file. This isn't kernel code
and doesn't use the kernel indentation.

> + my ($dir) = $opt{"LOG_FILE"} =~ m|^(.*/)|;

The above has a lot of Perl shortcuts that a normal C programmer would not
understand. Please convert this to:

if (! -e $opt{"LOG_FILE"} && $opt{"LOG_FILE"} =~ m,^(.*/),) {
my $dir = $1;


if (! -d $dir) {

Thanks,

-- Steve


> + if ($dir && !-d $dir) {
> + mkpath($dir) or die "Failed to create directories '$dir': $!";
> + print "\nThe log directory $dir did not exist, so it was created.\n";
> + }
> + }
> open(LOG, ">> $opt{LOG_FILE}") or die "Can't write to $opt{LOG_FILE}";
> LOG->autoflush(1);
> }