Subject: | _run_for_warning does not consume multiple messages |
This issue is demonstrated in xt/extra.t where the retree test warning emits multiple messages, but only the first message is consumed. When $rv is dumped, only one message is shown.
Without Data::Dumper:
$ sudo perl -I lib/ xt/setup_tests.pl -i -u 503
$ perl -I lib/ xt/extra.t
<snip>
not ok 16 - rmtree with file owned by root
# Failed test 'rmtree with file owned by root'
# at xt/extra.t line 98.
# 'cannot remove directory for xt/extra/3: Permission denied at xt/extra.t line 97.
# '
# doesn't match '(?^:\Acannot make child directory read-write-exec for [^:]+: .* at (\S+) line (\d+)\.?
# cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
# cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
# cannot remove directory for [^:]+: .* at \1 line \2)'
not ok 17 - rmtree with insufficient privileges
# Failed test 'rmtree with insufficient privileges'
# at xt/extra.t line 107.
# 'cannot remove directory for xt/extra: Directory not empty at xt/extra.t line 106.
# '
# doesn't match '(?^:\Acannot remove directory for [^:]+: .* at (\S+) line (\d+)
</snip>
With Data::Dumper:
$ sudo rm -rf xt/extra
$ sudo perl -I lib/ xt/setup_tests.pl -i -u 503
$ perl -I lib/ xt/extra.t
<snip>
not ok 16 - rmtree with file owned by root
# Failed test 'rmtree with file owned by root'
# at xt/extra.t line 98.
# 'cannot remove directory for xt/extra/3: Permission denied at xt/extra.t line 97.
# '
# doesn't match '(?^:\Acannot make child directory read-write-exec for [^:]+: .* at (\S+) line (\d+)\.?
# cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
# cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
# cannot remove directory for [^:]+: .* at \1 line \2)'
$VAR1 = 'cannot remove directory for xt/extra/3: Permission denied at xt/extra.t line 97.
';
not ok 17 - rmtree with insufficient privileges
# Failed test 'rmtree with insufficient privileges'
# at xt/extra.t line 109.
# 'cannot remove directory for xt/extra: Directory not empty at xt/extra.t line 108.
# '
# doesn't match '(?^:\Acannot remove directory for [^:]+: .* at (\S+) line (\d+)
# cannot remove directory for [^:]+: .* at \1 line \2
# cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
# cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
# cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
# cannot remove directory for [^:]+: .* at \1 line \2
# cannot unlink file for [^:]+: .* at \1 line \2
# cannot restore permissions to \d+ for [^:]+: .* at \1 line \2
# cannot make child directory read-write-exec for [^:]+: .* at \1 line \2
# cannot remove directory for [^:]+: .* at \1 line \2)'
$VAR1 = 'cannot remove directory for xt/extra: Directory not empty at xt/extra.t line 108.
';
</snip>