Просмотр исходного кода

use pdfinfo on output to ensure pdfs are optimised

needed to check that qpdf runs correctly inside the docker container
Brian Gough 9 лет назад
Родитель
Сommit
f7c3565281
1 измененных файлов с 31 добавлено и 13 удалено
  1. 31 13
      services/clsi/test/acceptance/coffee/ExampleDocumentTests.coffee

+ 31 - 13
services/clsi/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"))