runtests: flush cached test parts when (re)loading a file

Force test file reload on client connect in ftpserver.

Closes #22319
This commit is contained in:
Graham Campbell 2026-07-14 01:38:01 +01:00 committed by Dan Fandrich
parent 0dc22b690d
commit d0545d223a
3 changed files with 12 additions and 6 deletions

View file

@ -3142,7 +3142,8 @@ while(1) {
$| = 1;
&customize(); # read test control instructions
loadtest("$logdir/test$testno");
# force a reload, a test retry may have regenerated the file
loadtest("$logdir/test$testno", 0, 1);
my $welcome = $commandreply{"welcome"};
if(!$welcome) {

View file

@ -44,7 +44,7 @@ BEGIN {
);
}
use Memoize;
use Memoize qw(memoize flush_cache);
my @xml; # test data file contents
my $xmlfile; # test data filename
@ -199,9 +199,9 @@ sub partexists {
# memoize('partexists', NORMALIZER => 'normalize_part'); # cache each result
sub loadtest {
my ($file, $original) = @_;
my ($file, $original, $force) = @_;
if(defined $xmlfile && $file eq $xmlfile) {
if(!$force && defined $xmlfile && $file eq $xmlfile) {
# This test is already loaded
return
}
@ -209,6 +209,11 @@ sub loadtest {
undef @xml;
$xmlfile = "";
# flush results cached from an earlier load, the file may have been
# regenerated since with new variable substitutions
flush_cache('getpart');
flush_cache('getpartattr');
if(open(my $xmlh, "<", $file)) {
if($original) {
binmode $xmlh, ':crlf';

View file

@ -655,8 +655,8 @@ sub singletest_preprocess {
}
close($fulltesth) or die "Failure writing test file";
# in case the process changed the file, reload it
loadtest("$LOGDIR/test${testnum}");
# in case the process changed the file, force a reload
loadtest("$LOGDIR/test${testnum}", 0, 1);
}
#######################################################################