Commit 4ee393d1fa5424bc25952580b177f572e58920db

Authored by Jay Berkenbilt
1 parent 7e679ab8

Remove compression from linearization tests where possible

By combining --linearize with --compress-streams=n, we ensure that no
new compressed data will appear in linearized output, which makes the
output independent of zlib's output. There are other tests to ensure
that linearization works correctly with compression. This commit
involves changing some test outputs and test code as well just
updating test suites.
examples/qpdf-job.cc
@@ -44,6 +44,7 @@ main(int argc, char* argv[]) @@ -44,6 +44,7 @@ main(int argc, char* argv[])
44 ->endPages() 44 ->endPages()
45 ->linearize() 45 ->linearize()
46 ->staticId() // for testing only 46 ->staticId() // for testing only
  47 + ->compressStreams("n") // avoid dependency on zlib output
47 ->checkConfiguration(); 48 ->checkConfiguration();
48 j.run(); 49 j.run();
49 std::cout << "out1 status: " << j.getExitCode() << std::endl; 50 std::cout << "out1 status: " << j.getExitCode() << std::endl;
@@ -63,6 +64,7 @@ main(int argc, char* argv[]) @@ -63,6 +64,7 @@ main(int argc, char* argv[])
63 "1", 64 "1",
64 "--", 65 "--",
65 "--static-id", 66 "--static-id",
  67 + "--compress-streams=n", // avoid dependency on zlib output
66 nullptr}; 68 nullptr};
67 QPDFJob j; 69 QPDFJob j;
68 j.initializeFromArgv(new_argv); 70 j.initializeFromArgv(new_argv);
@@ -81,6 +83,7 @@ main(int argc, char* argv[]) @@ -81,6 +83,7 @@ main(int argc, char* argv[])
81 "outputFile": "out3.pdf", 83 "outputFile": "out3.pdf",
82 "staticId": "", 84 "staticId": "",
83 "linearize": "", 85 "linearize": "",
  86 + "compressStreams": "n",
84 "pages": [ 87 "pages": [
85 { 88 {
86 "file": ".", 89 "file": ".",
examples/qpdfjob-c.c
@@ -19,7 +19,7 @@ main(int argc, char* argv[]) @@ -19,7 +19,7 @@ main(int argc, char* argv[])
19 { 19 {
20 char* infile = NULL; 20 char* infile = NULL;
21 char* outfile = NULL; 21 char* outfile = NULL;
22 - char const* new_argv[6]; 22 + char const* new_argv[7];
23 int r = 0; 23 int r = 0;
24 char* p = 0; 24 char* p = 0;
25 25
@@ -43,7 +43,8 @@ main(int argc, char* argv[]) @@ -43,7 +43,8 @@ main(int argc, char* argv[])
43 new_argv[2] = outfile; 43 new_argv[2] = outfile;
44 new_argv[3] = "--linearize"; 44 new_argv[3] = "--linearize";
45 new_argv[4] = "--static-id"; /* for testing only */ 45 new_argv[4] = "--static-id"; /* for testing only */
46 - new_argv[5] = NULL; 46 + new_argv[5] = "--compress-streams=n"; /* avoid dependency on zlib output */
  47 + new_argv[6] = NULL;
47 48
48 /* See qpdf-job.cc for a C++ example of using the json interface. To use that from C just like 49 /* See qpdf-job.cc for a C++ example of using the json interface. To use that from C just like
49 * the argv one, call qpdfjob_run_from_json instead and pass the json string as a single char 50 * the argv one, call qpdfjob_run_from_json instead and pass the json string as a single char
examples/qtest/qpdf-job/out.pdf
No preview for this file type
qpdf/qpdf-ctest.c
@@ -200,6 +200,7 @@ test05(char const* infile, char const* password, char const* outfile, char const @@ -200,6 +200,7 @@ test05(char const* infile, char const* password, char const* outfile, char const
200 qpdf_register_progress_reporter(qpdf, count_progress, (void*)&count); 200 qpdf_register_progress_reporter(qpdf, count_progress, (void*)&count);
201 qpdf_set_static_ID(qpdf, QPDF_TRUE); 201 qpdf_set_static_ID(qpdf, QPDF_TRUE);
202 qpdf_set_linearization(qpdf, QPDF_TRUE); 202 qpdf_set_linearization(qpdf, QPDF_TRUE);
  203 + qpdf_set_compress_streams(qpdf, QPDF_FALSE); // Don't depend on zlib
203 qpdf_write(qpdf); 204 qpdf_write(qpdf);
204 /* make sure progress reporter was called */ 205 /* make sure progress reporter was called */
205 assert(count > 0); 206 assert(count > 0);
qpdf/qtest/encryption-parameters.test
@@ -37,7 +37,8 @@ foreach my $file (qw(short-id long-id)) @@ -37,7 +37,8 @@ foreach my $file (qw(short-id long-id))
37 37
38 $td->runtest("linearize $file.pdf", 38 $td->runtest("linearize $file.pdf",
39 {$td->COMMAND => 39 {$td->COMMAND =>
40 - "qpdf --deterministic-id --linearize $file.pdf a.pdf"}, 40 + "qpdf --deterministic-id --compress-streams=n" .
  41 + " --linearize $file.pdf a.pdf"},
41 {$td->STRING => "", 42 {$td->STRING => "",
42 $td->EXIT_STATUS => 0}, 43 $td->EXIT_STATUS => 0},
43 $td->NORMALIZE_NEWLINES); 44 $td->NORMALIZE_NEWLINES);
qpdf/qtest/linearize-pass1.test
@@ -18,6 +18,7 @@ my $n_tests = 3; @@ -18,6 +18,7 @@ my $n_tests = 3;
18 18
19 $td->runtest("linearize pass 1 file", 19 $td->runtest("linearize pass 1 file",
20 {$td->COMMAND => "qpdf --linearize --static-id" . 20 {$td->COMMAND => "qpdf --linearize --static-id" .
  21 + " --compress-streams=n" .
21 " --linearize-pass1=b.pdf minimal.pdf a.pdf"}, 22 " --linearize-pass1=b.pdf minimal.pdf a.pdf"},
22 {$td->STRING => "", $td->EXIT_STATUS => 0}); 23 {$td->STRING => "", $td->EXIT_STATUS => 0});
23 $td->runtest("check output", 24 $td->runtest("check output",
qpdf/qtest/pages-tree.test
@@ -18,7 +18,7 @@ my $n_tests = 17; @@ -18,7 +18,7 @@ my $n_tests = 17;
18 18
19 $td->runtest("linearize duplicated pages", 19 $td->runtest("linearize duplicated pages",
20 {$td->COMMAND => 20 {$td->COMMAND =>
21 - "qpdf --static-id --linearize" . 21 + "qpdf --static-id --linearize --compress-streams=n" .
22 " page_api_2.pdf a.pdf"}, 22 " page_api_2.pdf a.pdf"},
23 {$td->FILE => "duplicate-page-warning.out", 23 {$td->FILE => "duplicate-page-warning.out",
24 $td->EXIT_STATUS => 3}, 24 $td->EXIT_STATUS => 3},
qpdf/qtest/qpdf/c-linearized.pdf
No preview for this file type
qpdf/qtest/qpdf/extra-header-lin-newline.pdf
No preview for this file type
qpdf/qtest/qpdf/extra-header-lin-no-newline.pdf
No preview for this file type
qpdf/qtest/qpdf/linearize-duplicate-page.pdf
No preview for this file type
qpdf/qtest/qpdf/long-id-linearized.pdf
No preview for this file type
qpdf/qtest/qpdf/minimal-linearize-pass1.pdf
1 Binary files a/qpdf/qtest/qpdf/minimal-linearize-pass1.pdf and b/qpdf/qtest/qpdf/minimal-linearize-pass1.pdf differ 1 Binary files a/qpdf/qtest/qpdf/minimal-linearize-pass1.pdf and b/qpdf/qtest/qpdf/minimal-linearize-pass1.pdf differ
qpdf/qtest/qpdf/minimal-linearized.pdf
No preview for this file type
qpdf/qtest/qpdf/pages-is-page-out.pdf
No preview for this file type
qpdf/qtest/qpdf/short-id-linearized.pdf
No preview for this file type
qpdf/qtest/specific-file.test
@@ -47,7 +47,8 @@ $td-&gt;runtest(&quot;check fix-qdf idempotency&quot;, @@ -47,7 +47,8 @@ $td-&gt;runtest(&quot;check fix-qdf idempotency&quot;,
47 {$td->FILE => "a.pdf", $td->EXIT_STATUS => 0}); 47 {$td->FILE => "a.pdf", $td->EXIT_STATUS => 0});
48 $td->runtest("pages points to page", 48 $td->runtest("pages points to page",
49 {$td->COMMAND => 49 {$td->COMMAND =>
50 - "qpdf --static-id --linearize pages-is-page.pdf a.pdf"}, 50 + "qpdf --static-id --linearize --compress-streams=n" .
  51 + " pages-is-page.pdf a.pdf"},
51 {$td->FILE => "pages-is-page.out", $td->EXIT_STATUS => 3}, 52 {$td->FILE => "pages-is-page.out", $td->EXIT_STATUS => 3},
52 $td->NORMALIZE_NEWLINES); 53 $td->NORMALIZE_NEWLINES);
53 $td->runtest("check output", 54 $td->runtest("check output",
qpdf/test_driver.cc
@@ -1211,6 +1211,9 @@ test_32(QPDF&amp; pdf, char const* arg2) @@ -1211,6 +1211,9 @@ test_32(QPDF&amp; pdf, char const* arg2)
1211 << "linearized: " << (linearized ? "yes" : "no") << std::endl 1211 << "linearized: " << (linearized ? "yes" : "no") << std::endl
1212 << "newline: " << (newline ? "yes" : "no") << std::endl; 1212 << "newline: " << (newline ? "yes" : "no") << std::endl;
1213 w.setLinearization(linearized); 1213 w.setLinearization(linearized);
  1214 + if (linearized) {
  1215 + w.setCompressStreams(false); // avoid dependency on zlib's output
  1216 + }
1214 w.setExtraHeaderText(newline ? "%% Comment with newline\n" : "%% Comment\n% No newline"); 1217 w.setExtraHeaderText(newline ? "%% Comment with newline\n" : "%% Comment\n% No newline");
1215 w.write(); 1218 w.write();
1216 } 1219 }