#!/usr/bin/env perl require 5.008; use warnings; use strict; unshift(@INC, '.'); require qpdf_test_helpers; chdir("qpdf") or die "chdir testdir failed: $!\n"; require TestDriver; cleanup(); my $td = new TestDriver('copy-foreign-objects'); my $n_tests = 11; foreach my $d ([25, 1], [26, 2], [27, 3]) { my ($testn, $outn) = @$d; $td->runtest("copy objects $outn", {$td->COMMAND => "test_driver $testn" . " minimal.pdf copy-foreign-objects-in.pdf"}, {$td->FILE => "copy-foreign-objects-$testn.out", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); $td->runtest("check output", {$td->FILE => "a.pdf"}, {$td->FILE => "copy-foreign-objects-out$outn.pdf"}); } $td->runtest("copy objects error", {$td->COMMAND => "test_driver 28" . " copy-foreign-objects-in.pdf minimal.pdf"}, {$td->FILE => "copy-foreign-objects-errors.out", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); # Issue 449 involved indirect /Filter or /DecodeParms in streams that # had their stream data replaced. The hand-generated # indirect-filter.pdf file more or less reproduces the situation but # doesn't result in the same internal error that 449 did with 10.0.1. # The file issue-449.pdf was minimized by hand from a test case and # does produce an internal error, though the exact reason is unclear. # It seems to just have to do with the order in which things are # copied. $td->runtest("indirect filters", {$td->COMMAND => "test_driver 69 indirect-filter.pdf"}, {$td->STRING => "test 69 done\n", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); foreach my $i (0, 1) { $td->runtest("check output", {$td->FILE => "auto-$i.pdf"}, {$td->FILE => "indirect-filter-out-$i.pdf"}); } $td->runtest("issue 449", {$td->COMMAND => "test_driver 69 issue-449.pdf"}, {$td->FILE => "issue-449.out", $td->EXIT_STATUS => 0}, $td->NORMALIZE_NEWLINES); cleanup(); $td->report($n_tests);