summaryrefslogtreecommitdiffstats
path: root/qpdf/qtest/qpdfjob.test
diff options
context:
space:
mode:
Diffstat (limited to 'qpdf/qtest/qpdfjob.test')
-rw-r--r--qpdf/qtest/qpdfjob.test130
1 files changed, 130 insertions, 0 deletions
diff --git a/qpdf/qtest/qpdfjob.test b/qpdf/qtest/qpdfjob.test
new file mode 100644
index 00000000..f6f40755
--- /dev/null
+++ b/qpdf/qtest/qpdfjob.test
@@ -0,0 +1,130 @@
+#!/usr/bin/env perl
+require 5.008;
+use warnings;
+use strict;
+use File::Copy;
+
+unshift(@INC, '.');
+require qpdf_test_helpers;
+
+chdir("qpdf") or die "chdir testdir failed: $!\n";
+
+require TestDriver;
+
+cleanup();
+
+my $td = new TestDriver('qpdfjob');
+
+open(F, ">auto-txt") or die;
+print F "from file";
+close(F);
+
+my @bad_json = (
+ "bare-option-false",
+ "choice-mismatch",
+ "encrypt-duplicate-key-length",
+ "encrypt-missing-password",
+ "encrypt-no-key-length",
+ "pages-no-file",
+ "schema-error",
+ "json-error"
+ );
+my @good_json = (
+ "choice-match",
+ "input-file-password",
+ "empty-input",
+ "replace-input",
+ "encrypt-40",
+ "encrypt-128",
+ "encrypt-256-with-restrictions",
+ "add-attachments",
+ "copy-attachments",
+ "underlay-overlay",
+ "underlay-overlay-password",
+ "misc-options",
+ );
+my $n_tests = 10 + scalar(@bad_json) + (2 * scalar(@good_json));
+
+
+foreach my $i (@bad_json)
+{
+ $td->runtest("QPDFJob bad json: $i",
+ {$td->COMMAND => "qpdf --job-json-file=bad-json-$i.json"},
+ {$td->FILE => "bad-$i-json.out", $td->EXIT_STATUS => 2},
+ $td->NORMALIZE_NEWLINES);
+}
+
+foreach my $i (@good_json)
+{
+ if ($i eq 'replace-input')
+ {
+ copy("minimal.pdf", 'a.pdf');
+ }
+ $td->runtest("QPDFJob good json: $i",
+ {$td->COMMAND => "qpdf --job-json-file=job-json-$i.json"},
+ {$td->STRING => "", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+ if ($i =~ m/encrypt-256/)
+ {
+ $td->runtest("check encryption $i",
+ {$td->COMMAND =>
+ "qpdf a.pdf --password=u" .
+ " --job-json-file=job-show-encryption.json"},
+ {$td->FILE => "job-json-$i.out", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+ }
+ else
+ {
+ $td->runtest("check good json $i output",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => "job-json-$i.pdf"});
+ }
+}
+
+
+$td->runtest("QPDFJob json partial",
+ {$td->COMMAND => "test_driver 83 - job-partial.json"},
+ {$td->FILE => "job-partial-json.out", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+$td->runtest("QPDFJob API",
+ {$td->COMMAND => "test_driver 84 -"},
+ {$td->FILE => "job-api.out", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+$td->runtest("check output",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => "test84.pdf"});
+$td->runtest("json output from job",
+ {$td->COMMAND => "qpdf --job-json-file=job-json-output.json"},
+ {$td->FILE => "job-json-output.out.json", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+
+$td->runtest("C job API",
+ {$td->COMMAND => "qpdfjob-ctest"},
+ {$td->FILE => "qpdfjob-ctest.out", $td->EXIT_STATUS => 0},
+ $td->NORMALIZE_NEWLINES);
+foreach my $i (['a.pdf', 1], ['b.pdf', 2], ['c.pdf', 3])
+{
+ $td->runtest("check output",
+ {$td->FILE => $i->[0]},
+ {$td->FILE => "qpdfjob-ctest$i->[1].pdf"});
+}
+my $wide_out = `qpdfjob-ctest wide`;
+$td->runtest("qpdfjob-ctest wide",
+ {$td->STRING => "$?: $wide_out"},
+ {$td->REGEXP => "0: (wide test passed|skipped wide)\n"},
+ $td->NORMALIZE_NEWLINES);
+if ($wide_out =~ m/skipped/)
+{
+ $td->runtest("skipped wide",
+ {$td->STRING => "yes"},
+ {$td->STRING => "yes"});
+}
+else
+{
+ $td->runtest("check output",
+ {$td->FILE => "a.pdf"},
+ {$td->FILE => "qpdfjob-ctest-wide.pdf"});
+}
+
+cleanup();
+$td->report($n_tests);