diff --git a/test/acceptance/coffee/ExampleDocumentTests.coffee b/test/acceptance/coffee/ExampleDocumentTests.coffee index 43dbff3..a49f5d6 100644 --- a/test/acceptance/coffee/ExampleDocumentTests.coffee +++ b/test/acceptance/coffee/ExampleDocumentTests.coffee @@ -28,6 +28,18 @@ compare = (originalPath, generatedPath, callback = (error, same) ->) -> console.log "compare result", stderr callback null, false +checkPdfInfo = (pdfPath, callback = (error, output) ->) -> + proc = ChildProcess.exec "pdfinfo #{fixturePath(pdfPath)}" + stdout = "" + proc.stdout.on "data", (chunk) -> stdout += chunk + proc.stderr.on "data", (chunk) -> console.log "STDERR", chunk.toString() + proc.on "exit", () -> + if stdout.match(/Optimized:\s+yes/) + callback null, true + else + console.log "pdfinfo result", stdout + callback null, false + compareMultiplePages = (project_id, callback = (error) ->) -> compareNext = (page_no, callback) -> path = "tmp/#{project_id}-source-#{page_no}.png" @@ -41,24 +53,30 @@ compareMultiplePages = (project_id, callback = (error) ->) -> compareNext page_no + 1, callback compareNext 0, callback +comparePdf = (project_id, example_dir, callback = (error) ->) -> + convertToPng "tmp/#{project_id}.pdf", "tmp/#{project_id}-generated.png", (error) => + throw error if error? + convertToPng "examples/#{example_dir}/output.pdf", "tmp/#{project_id}-source.png", (error) => + throw error if error? + fs.stat fixturePath("tmp/#{project_id}-source-0.png"), (error, stat) => + if error? + compare "tmp/#{project_id}-source.png", "tmp/#{project_id}-generated.png", (error, same) => + throw error if error? + same.should.equal true + callback() + else + compareMultiplePages project_id, (error) -> + throw error if error? + callback() + downloadAndComparePdf = (project_id, example_dir, url, callback = (error) ->) -> writeStream = fs.createWriteStream(fixturePath("tmp/#{project_id}.pdf")) request.get(url).pipe(writeStream) writeStream.on "close", () => - convertToPng "tmp/#{project_id}.pdf", "tmp/#{project_id}-generated.png", (error) => + checkPdfInfo "tmp/#{project_id}.pdf", (error, optimised) => throw error if error? - convertToPng "examples/#{example_dir}/output.pdf", "tmp/#{project_id}-source.png", (error) => - throw error if error? - fs.stat fixturePath("tmp/#{project_id}-source-0.png"), (error, stat) => - if error? - compare "tmp/#{project_id}-source.png", "tmp/#{project_id}-generated.png", (error, same) => - throw error if error? - same.should.equal true - callback() - else - compareMultiplePages project_id, (error) -> - throw error if error? - callback() + optimised.should.equal true + comparePdf project_id, example_dir, callback Client.runServer(4242, fixturePath("examples"))