From eb054f59dacf94e25e07c8af6b07f7b703f2f243 Mon Sep 17 00:00:00 2001 From: Chad Granum Date: Fri, 21 Jun 2024 11:57:01 -0700 Subject: [PATCH] Fix persistent runner, dir was being delete --- lib/App/Yath.pm | 8 ++++++++ lib/App/Yath/Command/start.pm | 5 ++++- lib/App/Yath/Options/Harness.pm | 2 +- lib/Test2/Harness/Util/LogFile.pm | 8 ++++---- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/App/Yath.pm b/lib/App/Yath.pm index 38b62d744..e8fbb32cc 100644 --- a/lib/App/Yath.pm +++ b/lib/App/Yath.pm @@ -35,6 +35,7 @@ use App::Yath::ConfigFile; use Carp qw/croak/; use Time::HiRes qw/time/; use Scalar::Util qw/blessed/; +use File::Path qw/remove_tree/; use File::Spec; use Term::Table; @@ -532,6 +533,13 @@ sub run_command { die "Command '" . $cmd->name() . "' did not return an exit value.\n" unless defined $exit; + my $settings = $self->settings; + + unless ($settings->harness->keep_dirs) { + remove_tree($settings->harness->workdir, {safe => 1, keep_root => 0}); + remove_tree($settings->harness->tmpdir, {safe => 1, keep_root => 0}); + } + return $exit; } diff --git a/lib/App/Yath/Command/start.pm b/lib/App/Yath/Command/start.pm index a7586a9ff..336638cd2 100644 --- a/lib/App/Yath/Command/start.pm +++ b/lib/App/Yath/Command/start.pm @@ -150,7 +150,7 @@ sub become_daemon { if ($pid) { sleep 2; kill('HUP', $pid); - exit(0); + POSIX::_exit(0); } } @@ -189,6 +189,9 @@ sub become_collector { remove_tree($settings->harness->workdir, {safe => 1, keep_root => 0}) unless $settings->harness->keep_dirs; + remove_tree($settings->harness->tmpdir, {safe => 1, keep_root => 0}) + unless $settings->harness->keep_dirs; + return $exit; } diff --git a/lib/App/Yath/Options/Harness.pm b/lib/App/Yath/Options/Harness.pm index 5dc448456..1963405de 100644 --- a/lib/App/Yath/Options/Harness.pm +++ b/lib/App/Yath/Options/Harness.pm @@ -65,7 +65,7 @@ option_group {group => 'harness', category => 'Harness Options'} => sub { my $tmpdir = File::Spec->tmpdir; return $tmpdir if $tmpdir =~ m/yath/ && $ENV{YATH_SHELL}; - my $dir = tempdir("yath-$ENV{USER}-$$-XXXXXX", CLEANUP => 1, TMPDIR => 1); + my $dir = tempdir("yath-$ENV{USER}-$$-XXXXXX", CLEANUP => 0, TMPDIR => 1); return $dir; }, ); diff --git a/lib/Test2/Harness/Util/LogFile.pm b/lib/Test2/Harness/Util/LogFile.pm index d1f00f82f..d04f5b197 100644 --- a/lib/Test2/Harness/Util/LogFile.pm +++ b/lib/Test2/Harness/Util/LogFile.pm @@ -4,7 +4,7 @@ use warnings; our $VERSION = '2.000000'; -use Carp qw/croak/; +use Carp qw/confess/; use Test2::Harness::Util::JSON qw/decode_json/; @@ -25,10 +25,10 @@ sub init { $self->{+NAME} //= $client->send_and_get('log_file'); } - my $file = $self->{+NAME} // croak "'name' is a required attribute unless 'client' is specified"; - croak "'$file' is not a valid log file" unless -f $file; + my $file = $self->{+NAME} // confess "'name' is a required attribute unless 'client' is specified"; + confess "'$file' is not a valid log file" unless -f $file; - open(my $fh, '<', $file) or croak "Could not open log file '$file' for reading: $!"; + open(my $fh, '<', $file) or confess "Could not open log file '$file' for reading: $!"; $fh->blocking(0); $self->{+FH} = $fh;