From: Graham Campbell Date: Tue, 14 Jul 2026 00:38:01 +0000 (+0100) Subject: runtests: flush cached test parts when (re)loading a file X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d0545d223a96884cb157a90eab3313a232fb744c;p=thirdparty%2Fcurl.git runtests: flush cached test parts when (re)loading a file Force test file reload on client connect in ftpserver. Closes #22319 --- diff --git a/tests/ftpserver.pl b/tests/ftpserver.pl index d0a3e22fa2..0cb8cdc344 100755 --- a/tests/ftpserver.pl +++ b/tests/ftpserver.pl @@ -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) { diff --git a/tests/getpart.pm b/tests/getpart.pm index fc98da210c..10838b2675 100644 --- a/tests/getpart.pm +++ b/tests/getpart.pm @@ -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'; diff --git a/tests/runner.pm b/tests/runner.pm index 9e514f0e23..594e383f74 100644 --- a/tests/runner.pm +++ b/tests/runner.pm @@ -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); } #######################################################################