There are two sub-caces. If both source files still exist, the winner that
renders the destination file is undefined. If one source file is deleted
and the other added, in a refresh, the new file will take over the
destination file.
# Important security check.
if (-e "$config{destdir}/$dest" && ! $config{rebuild} &&
! grep { $_ eq $dest } (@{$renderedfiles{$page}}, @{$oldrenderedfiles{$page}}, @{$wikistate{editpage}{previews}})) {
- error("$config{destdir}/$dest independently created, not overwriting with version from $page");
+ my $from_other_page=0;
+ foreach my $p (keys %renderedfiles) {
+ if (grep {
+ $_ eq $dest ||
+ dirname($_) eq $dest
+ } @{$renderedfiles{$p}}) {
+ $from_other_page=1;
+ last;
+ }
+ }
+
+ error("$config{destdir}/$dest independently created, not overwriting with version from $page")
+ unless $from_other_page;
}
if (! $clear || $cleared{$page}) {
# Tests for bugs relating to conflicting files in the srcdir
use warnings;
use strict;
-use Test::More tests => 48;
+use Test::More tests => 76;
# setup
my $srcdir="t/tmp/src";