#!/usr/bin/env perl require 5.008; BEGIN { $^W = 1; } use strict; use File::Copy; chdir("mod-info"); require TestDriver; my $td = new TestDriver('pdf-mod-info'); my $prg = "pdf-mod-info"; my $qpdf = $ENV{'QPDF_BIN'} or die; cleanup(); $td->runtest("usage #1", {$td->COMMAND => "$prg -in target.pdf"}, {$td->FILE => "usage.out", $td->EXIT_STATUS => 2}); $td->runtest("usage #2", {$td->COMMAND => "$prg -key abc -val def"}, {$td->FILE => "usage.out", $td->EXIT_STATUS => 2}); $td->runtest("usage #3", {$td->COMMAND => "$prg -key abc -val def abc"}, {$td->FILE => "usage.out", $td->EXIT_STATUS => 2}); $td->runtest("usage #4", {$td->COMMAND => "$prg -in source1.pdf -key /date -val 01/01/01 -val 12/12/12"}, {$td->FILE => "usage.out", $td->EXIT_STATUS => 2}); $td->runtest("dump #1", {$td->COMMAND => "$prg --dump -in files/source1.pdf"}, {$td->FILE => "dump.out", $td->EXIT_STATUS => 0}); $td->runtest("dump #2", {$td->COMMAND => "$prg --dump -in files/no-info.pdf"}, {$td->STRING => "", $td->EXIT_STATUS => 0}); $td->runtest("dump #3", {$td->COMMAND => "$prg --dump -in files/empty-info.pdf"}, {$td->STRING => "", $td->EXIT_STATUS => 0}); run_and_cmp("modify Subject", "$prg -in files/source1.pdf -out out.pdf -key /Subject " . "-val \"Export Business\"", "", "out.pdf", "files/1.qdf"); run_and_cmp("add Subject, remove Producer, modify CreationDate", "$prg -in files/source2.pdf -out out.pdf -key /Subject " . "-val \"Tammlin\" -key /Producer -key /CreationDate -val 12/12", "", "out.pdf", "files/2.qdf"); run_and_cmp("add Subject (empty-info file)", "$prg -in files/empty-info.pdf -out out.pdf -key /Subject " . "-val Tammlin", "", "out.pdf", "files/3.qdf"); copy("files/no-info.pdf", "no-info.pdf") or die "can't copy no-info: $!"; run_and_cmp("in-place Producer added (no-info file)", "$prg -in no-info.pdf -key /Producer -val \"Obivan Kinobi\"", "", "no-info.pdf", "files/4.qdf"); cleanup(); $td->report(15); sub cleanup { unlink (<*.pdf>); } sub run_and_cmp { my ($dsc, $cmd, $out, $fout, $fexp) = @_; $td->runtest($dsc, {$td->COMMAND => "$cmd --static-id"}, {$td->STRING => $out, $td->EXIT_STATUS => 0}); $td->runtest("$dsc output", {$td->COMMAND => "$qpdf --static-id -qdf $fout -"}, {$td->FILE => $fexp, $td->EXIT_STATUS => 0}); }