Browse Source

Merge pull request #3310 from yurydelendik/ignore-bad-downloads

Skips failed-to-download tests
Brendan Dahl 12 years ago
parent
commit
3b86ebeacb
  1. 36
      src/worker.js
  2. 3
      test/driver.js
  3. 1
      test/pdfs/.gitignore
  4. 29
      test/test.py

36
src/worker.js

@ -161,12 +161,20 @@ var WorkerMessageHandler = { @@ -161,12 +161,20 @@ var WorkerMessageHandler = {
var source = data.source;
var disableRange = data.disableRange;
if (source.data) {
pdfManager = new LocalPdfManager(source.data, source.password);
pdfManagerPromise.resolve();
try {
pdfManager = new LocalPdfManager(source.data, source.password);
pdfManagerPromise.resolve();
} catch (ex) {
pdfManagerPromise.reject(ex);
}
return pdfManagerPromise;
} else if (source.chunkedViewerLoading) {
pdfManager = new NetworkPdfManager(source, handler);
pdfManagerPromise.resolve();
try {
pdfManager = new NetworkPdfManager(source, handler);
pdfManagerPromise.resolve();
} catch (ex) {
pdfManagerPromise.reject(ex);
}
return pdfManagerPromise;
}
@ -203,14 +211,22 @@ var WorkerMessageHandler = { @@ -203,14 +211,22 @@ var WorkerMessageHandler = {
networkManager.abortRequest(fullRequestXhrId);
source.length = length;
pdfManager = new NetworkPdfManager(source, handler);
pdfManagerPromise.resolve(pdfManager);
try {
pdfManager = new NetworkPdfManager(source, handler);
pdfManagerPromise.resolve(pdfManager);
} catch (ex) {
pdfManagerPromise.reject(ex);
}
},
onDone: function onDone(args) {
// the data is array, instantiating directly from it
pdfManager = new LocalPdfManager(args.chunk, source.password);
pdfManagerPromise.resolve();
try {
pdfManager = new LocalPdfManager(args.chunk, source.password);
pdfManagerPromise.resolve();
} catch (ex) {
pdfManagerPromise.reject(ex);
}
},
onError: function onError(status) {
@ -310,8 +326,8 @@ var WorkerMessageHandler = { @@ -310,8 +326,8 @@ var WorkerMessageHandler = {
pdfManager.onLoadedStream().then(function() {
loadDocument(true).then(onSuccess, onFailure);
});
});
});
}, onFailure);
}, onFailure);
});
handler.on('GetPageRequest', function wphSetupGetPage(data) {

3
test/driver.js

@ -153,6 +153,9 @@ function nextTask() { @@ -153,6 +153,9 @@ function nextTask() {
}
function getLastPageNum(task) {
if (!task.pdfDoc) {
return task.firstPage || 1;
}
var lastPageNum = task.lastPage || 0;
if (!lastPageNum || lastPageNum > task.pdfDoc.numPages) {
lastPageNum = task.pdfDoc.numPages;

1
test/pdfs/.gitignore vendored

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
*.pdf
*.error
!tracemonkey.pdf
!issue2391-1.pdf

29
test/test.py

@ -14,6 +14,7 @@ @@ -14,6 +14,7 @@
import json, platform, os, shutil, sys, subprocess, tempfile, threading
import time, urllib, urllib2, hashlib, re, base64, uuid, socket, errno
import traceback
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
from SocketServer import ThreadingMixIn
from optparse import OptionParser
@ -64,8 +65,6 @@ class TestOptions(OptionParser): @@ -64,8 +65,6 @@ class TestOptions(OptionParser):
help="Run the font tests.", default=False)
self.add_option("--noDownload", action="store_true", dest="noDownload",
help="Skips test PDFs downloading.", default=False)
self.add_option("--ignoreDownloadErrors", action="store_true", dest="ignoreDownloadErrors",
help="Ignores errors during test PDFs downloading.", default=False)
self.add_option("--statsFile", action="store", dest="statsFile", type="string",
help="The file where to store stats.", default=None)
self.add_option("--statsDelay", action="store", dest="statsDelay", type="int",
@ -554,24 +553,29 @@ def downloadLinkedPDF(f): @@ -554,24 +553,29 @@ def downloadLinkedPDF(f):
print 'done'
def downloadLinkedPDFs(manifestList, ignoreDownloadErrors):
def downloadLinkedPDFs(manifestList):
for item in manifestList:
f, isLink = item['file'], item.get('link', False)
if isLink and not os.access(f, os.R_OK):
try:
downloadLinkedPDF(f)
except:
exc_type, exc_value, exc_traceback = sys.exc_info()
print 'ERROR: Unable to download file "' + f + '".'
if ignoreDownloadErrors:
open(f, 'wb').close()
else:
raise
open(f, 'wb').close()
with open(f + '.error', 'w') as out:
out.write('\n'.join(traceback.format_exception(exc_type,
exc_value,
exc_traceback)))
def verifyPDFs(manifestList):
error = False
for item in manifestList:
f = item['file']
if os.access(f, os.R_OK):
if os.path.isfile(f + '.error'):
print 'WARNING: File was not downloaded. See "' + f + '.error" file.'
error = True
elif os.access(f, os.R_OK):
fileMd5 = hashlib.md5(open(f, 'rb').read()).hexdigest()
if 'md5' not in item:
print 'WARNING: Missing md5 for file "' + f + '".',
@ -618,7 +622,7 @@ def setUp(options): @@ -618,7 +622,7 @@ def setUp(options):
manifestList = json.load(mf)
if not options.noDownload:
downloadLinkedPDFs(manifestList, options.ignoreDownloadErrors)
downloadLinkedPDFs(manifestList)
if not verifyPDFs(manifestList):
print 'Unable to verify the checksum for the files that are used for testing.'
@ -682,8 +686,11 @@ def check(task, results, browser, masterMode): @@ -682,8 +686,11 @@ def check(task, results, browser, masterMode):
failure = pageResult.failure
if failure:
failed = True
State.numErrors += 1
print 'TEST-UNEXPECTED-FAIL | test failed', task['id'], '| in', browser, '| page', p + 1, 'round', r, '|', failure
if os.path.isfile(task['file'] + '.error'):
print 'TEST-SKIPPED | PDF was not downloaded', task['id'], '| in', browser, '| page', p + 1, 'round', r, '|', failure
else:
State.numErrors += 1
print 'TEST-UNEXPECTED-FAIL | test failed', task['id'], '| in', browser, '| page', p + 1, 'round', r, '|', failure
if failed:
return

Loading…
Cancel
Save