runtests: flush cached test parts when (re)loading a file
No binary (build failed)
—
(log yok)
| @@ -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) { | |
| @@ -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'; | |
| @@ -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); |
| } | |
| ####################################################################### | |