From a7f01c0b87da5380006ca5fece7ccfc48ca6bcd3 Mon Sep 17 00:00:00 2001 From: Jean-Francois Dockes Date: Tue, 26 Mar 2019 09:20:21 +0100 Subject: [PATCH] Try to be a little less noisy about errors processing xls files --- src/filters/rclexec1.py | 15 +++++++++++---- src/filters/rclxls.py | 6 ++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/filters/rclexec1.py b/src/filters/rclexec1.py index dc4f818e..afcfa683 100644 --- a/src/filters/rclexec1.py +++ b/src/filters/rclexec1.py @@ -73,16 +73,23 @@ class Executor(RclBaseHandler): (fullcmd, err)) return (False, "") - for line in stdout: - postproc.takeLine(line.strip()) + try: + for line in stdout: + postproc.takeLine(line.strip()) + except: + return (False, "") proc.wait() + try: + data = postproc.wrapData() + except: + return (False, "") if (opt & self.opt_ignxval) == 0 and proc.returncode: self.em.rclog("extractone: [%s] returncode %d" % \ (filename, proc.returncode)) - return False, postproc.wrapData() + return False, data else: - return True, postproc.wrapData() + return True, data def extractone(self, params): #self.em.rclog("extractone %s %s" % (params["filename:"], \ diff --git a/src/filters/rclxls.py b/src/filters/rclxls.py index 213bcce3..29c217cb 100755 --- a/src/filters/rclxls.py +++ b/src/filters/rclxls.py @@ -19,6 +19,8 @@ class XLSProcessData: self.ishtml = ishtml def takeLine(self, line): + if not line: + return if self.ishtml: self.out.append(line) return @@ -31,6 +33,9 @@ class XLSProcessData: self.xmldata.append(line) def wrapData(self): + if not self.gotdata: + raise Exception("xls-dump returned no data") + return b'' if self.ishtml: return b'\n'.join(self.out) handler = xlsxmltocsv.XlsXmlHandler() @@ -62,6 +67,7 @@ class XLSFilter: cmd = rclexecm.which("xls-dump.py") if cmd: # xls-dump.py often exits 1 with valid data. Ignore exit value + # We later treat an empty output as an error return ([sys.executable, cmd, "--dump-mode=canonical-xml", \ "--utf-8", "--catch"], XLSProcessData(self.em), rclexec1.Executor.opt_ignxval)