2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-12-23 03:18:59 +00:00

Workaround for fragile test on Windows

This commit is contained in:
Jay Berkenbilt 2018-10-16 11:10:33 -04:00
parent 978532c5b3
commit 88fb2e5258
3 changed files with 31 additions and 11 deletions

5
TODO
View File

@ -30,11 +30,6 @@ Soon
- See ../misc/broken-files - See ../misc/broken-files
* Some qpdf --check tests are fragile on Windows. The output gets
truncated. This happens in the loop for content preservation tests.
Figure out the source of the fragility.
Next ABI Next ABI
======== ========

View File

@ -29,8 +29,7 @@ installdir=install-$tool$wordsize
rm -rf $installdir rm -rf $installdir
./config-$tool --with-windows-wordsize=$wordsize --enable-show-failed-test-output ./config-$tool --with-windows-wordsize=$wordsize --enable-show-failed-test-output
make -j$(nproc) make -j$(nproc)
# XXX Fix test fragility -- it's always check status in the content preservation tests. make -k check
make -k check || echo "WARNING: TESTS FAILED"
make install make install
v=`(cd $installdir; ls -d qpdf-*)` v=`(cd $installdir; ls -d qpdf-*)`

View File

@ -2847,10 +2847,36 @@ foreach my $file (@files)
{$td->STRING => "", {$td->STRING => "",
$td->EXIT_STATUS => 0}); $td->EXIT_STATUS => 0});
# This test is fragile on Windows for unknown reasons.
# Sometimes the output of qpdf --check is truncated yet
# qpdf --check still exits normally. As a workaround, try
# writing the output of qpdf --check to a file and test
# for truncation. If we get a non-truncated output, use
# that output as the test input. If this loop fails to
# produce a non-truncated output, the truncated or
# otherwise incorrect output will still be used as the
# test input, so the test will fail as it should. We lose
# a check of qpdf --check's output, but it's not important
# for this test to verify that.
unlink "check.tmpout";
for (my $i = 0; $i < 5; ++$i)
{
if ((system("qpdf --check a.pdf > check.tmpout") == 0) &&
open(F, "<check.tmpout"))
{
local $/ = undef;
my $text = <F>;
close(F);
if ($text =~ m/No syntax or stream/)
{
last;
}
}
sleep 1;
}
$td->runtest("check status", $td->runtest("check status",
{$td->COMMAND => "qpdf --check a.pdf"}, {$td->FILE => "check.tmpout"},
{$td->FILE => "$base.$n$osuf.check", {$td->FILE => "$base.$n$osuf.check"},
$td->EXIT_STATUS => 0},
$td->NORMALIZE_NEWLINES); $td->NORMALIZE_NEWLINES);
$td->runtest("check with C API", $td->runtest("check with C API",
@ -3186,5 +3212,5 @@ sub get_md5_checksum
sub cleanup sub cleanup
{ {
system("rm -rf *.ps *.pnm ?.pdf ?.qdf *.enc* tif1 tif2 tiff-cache"); system("rm -rf *.ps *.pnm ?.pdf ?.qdf *.enc* tif1 tif2 tiff-cache");
system("rm -rf *split-out* ???-kfo.pdf"); system("rm -rf *split-out* ???-kfo.pdf *.tmpout");
} }