From 8acb097028da694df7e9b7c071088573fc030b8b Mon Sep 17 00:00:00 2001 From: Martijn Vermaat <martijn@vermaat.name> Date: Tue, 14 Oct 2014 18:00:46 +0200 Subject: [PATCH] Correctly handle batch job input and output encodings --- mutalyzer/File.py | 206 +++++++++++++++++++++++------------- mutalyzer/Scheduler.py | 17 +-- mutalyzer/services/rpc.py | 10 +- mutalyzer/website/views.py | 6 +- requirements.txt | 1 + tests/data/batch_input.ods | Bin 0 -> 9175 bytes tests/data/batch_input.sxc | Bin 0 -> 9036 bytes tests/data/batch_input.xls | Bin 0 -> 6656 bytes tests/data/batch_input.xlsx | Bin 0 -> 6536 bytes tests/data/image.zip | Bin 0 -> 87562 bytes tests/test_scheduler.py | 93 ++++++++++++++-- 11 files changed, 237 insertions(+), 96 deletions(-) create mode 100644 tests/data/batch_input.ods create mode 100644 tests/data/batch_input.sxc create mode 100644 tests/data/batch_input.xls create mode 100644 tests/data/batch_input.xlsx create mode 100644 tests/data/image.zip diff --git a/mutalyzer/File.py b/mutalyzer/File.py index 3de998da..1212d310 100644 --- a/mutalyzer/File.py +++ b/mutalyzer/File.py @@ -18,21 +18,80 @@ Module for parsing CSV files and spreadsheets. from __future__ import unicode_literals +import codecs +import re import magic # open(), MAGIC_MIME, MAGIC_NONE import csv # Sniffer(), reader(), Error import xlrd # open_workbook() import zipfile # ZipFile() import xml.dom.minidom # parseString() -import os # remove() -import tempfile +import cchardet as chardet from mutalyzer.config import settings -# Amount of bytes to be read for determining the file type. +# Amount of bytes to be read from a file at a time (this is also the amount +# read for determining the file type). BUFFER_SIZE = 32768 +class _UniversalNewlinesByteStreamIter(object): + """ + The codecs module doesn't provide universal newline support. This class is + used as a stream wrapper that provides this functionality. + + The wrapped stream must yield byte strings. We decode it using the given + encoding, normalise newlines, and yield UTF-8 encoded data (read method) + or lines (as iterator). + + Adaptation from an old Cython version: + https://github.com/cython/cython/blob/076fac3/Cython/Utils.py + """ + normalise_newlines = re.compile('\r\n?|\n').sub + + def __init__(self, stream, encoding='utf-8', buffer_size=0x1000): + # let's assume .read() doesn't change + self.stream = codecs.getreader(encoding)(stream) + self._read = self.stream.read + self.buffer_size = buffer_size + + def _read_normalised(self, count=None): + count = count or self.buffer_size + data = self._read(count) + if '\r' not in data: + return data + if data.endswith('\r'): + # may be missing a '\n' + data += self._read(1) + return self.normalise_newlines('\n', data) + + def _readlines(self): + buffer = [] + data = self._read_normalised() + while data: + buffer.append(data) + lines = ''.join(buffer).splitlines(True) + for line in lines[:-1]: + yield line + buffer = [lines[-1]] + data = self._read_normalised() + + if buffer[0]: + yield buffer[0] + + def seek(self, pos): + if pos == 0: + self.stream.seek(0) + else: + raise NotImplementedError + + def read(self, count=-1): + return self._read_normalised(count).encode('utf-8') + + def __iter__(self): + return (line.encode('utf-8') for line in self._readlines()) + + class File() : """ Parse CSV files and spreadsheets. @@ -44,7 +103,6 @@ class File() : - __init__(config, output) ; Initialise the class. Private methods: - - __tempFileWrapper(func, handle) ; Call func() with a filename. - __parseCsvFile(handle) ; Parse a CSV file. - __parseXlsFile(handle) ; Parse an Excel file. - __parseOdsFile(handle) ; Parse an OpenDocument Spreadsheet file. @@ -70,56 +128,48 @@ class File() : self.__output = output #: The Output object #__init__ - def __tempFileWrapper(self, func, handle) : + def __parseCsvFile(self, handle) : """ - Make a temporary file, put the content of a stream in it and pass - the filename to a general function. Return whatever this function - returns. + Parse a CSV file. Does not reset the file handle to start. - @arg func: general function that needs a file name as argument - @type func: function - @arg handle: A stream - @type handle: stream - - @return: unknown; the output of func(). - @rtype: ? - """ - write_handle, filename = tempfile.mkstemp(text=True) - - # Dump the content of the stream pointed to by handle into the file. - handle.seek(0) - os.write(write_handle, handle.read()) - os.close(write_handle) - - # Open the file with func(). - ret = func(filename) - # Apperantly apache will remove this file even when opened by the - # function *func - os.remove(filename) - - return ret - #__tempFileWrapper - - def __parseCsvFile(self, handle_) : - """ - Parse a CSV file. - The stream is not rewinded after use. - - @arg handle: A handle to a stream - @type handle: stream + @arg handle: CSV file. Must be a seekable binary file object. + @type handle: file object @return: list of lists @rtype: list """ - # We wrap the file in a temporary file just to have universal newlines - # which is not always possible to have on incoming files (thinks web - # and rpc frontends). This transparently solves the problem of Unix - # versus Windows versus Mac style newlines. - handle = tempfile.TemporaryFile('rU+w') - for chunk in handle_: - handle.write(chunk) - + buf = handle.read(BUFFER_SIZE) + result = chardet.detect(buf) handle.seek(0) + + if result['confidence'] > 0.5: + encoding = result['encoding'] + else: + encoding = 'utf-8' + + # Python 2.7 makes it extraordinarily hard to do this correctly. We + # have a binary file object containing lines of text in a certain + # encoding with unknown style of line-endings. + # + # We want to correctly decode the file contents, accept any style of + # line-endings, parse the lines with the `csv` module, and return + # unicode strings. + # + # 1. `codecs.getreader` does not have a universal newlines mode. + # 2. `io.TextIOWrapper` cannot be wrapped around our file object, + # since it is required to be an `io.BufferedIOBase`, which it + # usually will not be. + # 3. The `csv` module cannot read unicode. + # + # Ugh. + # + # So, we use a stream wrapper that consumes byte strings, decodes to + # unicode, normalises newlines, and produces the result UTF-8 encoded. + # That's what we feed the `csv` module. We decode what it gives back + # to unicode strings. What a mess. + handle = _UniversalNewlinesByteStreamIter(handle, encoding=encoding, + buffer_size=BUFFER_SIZE) + buf = handle.read(BUFFER_SIZE) # Default dialect @@ -147,41 +197,38 @@ class File() : ret = [] for i in reader: - ret.append(i) + ret.append([c.decode('utf-8') for c in i]) - handle.close() return ret #__parseCsvFile def __parseXlsFile(self, handle) : """ - Parse an Excel file. - The stream is not rewinded after use. + Parse an Excel file. Does not reset the file handle to start. - @arg handle: A handle to a stream - @type handle: stream + @arg handle: Excel file. Must be a binary file object. + @type handle: file object @return: A list of lists @rtype: list """ - workBook = self.__tempFileWrapper(xlrd.open_workbook, handle) + try: + workBook = xlrd.open_workbook(file_contents=handle.read()) + except xlrd.XLRDError: + return None + sheet = workBook.sheet_by_index(0) ret = [] for i in range(sheet.nrows) : row = [] for j in sheet.row_values(i) : - if isinstance(j, unicode): - row.append(j) - else: - row.append(j.decode('utf-8')) + row.append(j) #for ret.append(row) #for - del sheet, workBook - return ret #__parseXlsFile @@ -196,8 +243,8 @@ class File() : @return: A list of lists @rtype: list """ + # Todo: Use a library for this. - #zipFile = self.__tempFileWrapper(zipfile.ZipFile, handle) zipFile = zipfile.ZipFile(handle) doc = xml.dom.minidom.parseString(zipFile.read("content.xml")) zipFile.close() @@ -211,7 +258,8 @@ class File() : row.append(c[0].lastChild.data) #if #for - ret.append(row) + if row: + ret.append(row) #for return ret @@ -342,8 +390,9 @@ class File() : Get the mime type of a stream by inspecting a fixed number of bytes. The stream is rewinded after use. - @arg handle: A handle to a stream - @type handle: stream + @arg handle: Stream to be inspected. Must be a seekable binary file + object. + @type handle: file object @return: The mime type of a file and a textual description. @rtype: unicode, unicode @@ -358,7 +407,6 @@ class File() : MagicInstance = magic.open(magic.MAGIC_NONE) MagicInstance.load() description = MagicInstance.buffer(buf).decode('utf-8') - del MagicInstance handle.seek(0) return mimeType, description @@ -367,22 +415,28 @@ class File() : def parseFileRaw(self, handle) : """ Check which format a stream has and parse it with the appropriate - parser if the stream is recognised. + parser if the stream is recognised. Does not reset the file handle to + start. - @arg handle: A handle to a stream - @type handle: stream + @arg handle: Input file to be parsed. Must be a seekable binary file + object. + @type handle: file object @return: A list of lists, None if an error occured @rtype: list """ mimeType = self.getMimeType(handle) - if mimeType[0] == "text/plain" : + if mimeType[0] == "text/plain": return self.__parseCsvFile(handle) - if mimeType[0] == "application/vnd.ms-office" : + if mimeType[0] in ('application/vnd.ms-excel', + 'application/vnd.ms-office', + 'application/msword', + 'application/zip'): return self.__parseXlsFile(handle) - if mimeType == ("application/octet-stream", - "OpenDocument Spreadsheet") : + if (mimeType[0] == 'application/vnd.oasis.opendocument.spreadsheet' or + mimeType[1] in ('OpenDocument Spreadsheet', + 'OpenOffice.org 1.x Calc spreadsheet')): return self.__parseOdsFile(handle) return None @@ -391,10 +445,12 @@ class File() : def parseBatchFile(self, handle) : """ Check which format a stream has and parse it with the appropriate - parser if the stream is recognised. + parser if the stream is recognised. Does not reset the file handle to + start. - @arg handle: A handle to a stream - @type handle: stream + @arg handle: Batch job input file. Must be a seekable binary file + object. + @type handle: file object @return: A sanitised list of lists (without a header or empty lines) (or None if an error occured) and the number of columns. diff --git a/mutalyzer/Scheduler.py b/mutalyzer/Scheduler.py index ee7223a9..400c81c5 100644 --- a/mutalyzer/Scheduler.py +++ b/mutalyzer/Scheduler.py @@ -17,6 +17,7 @@ Module used to add and manage the Batch Jobs. from __future__ import unicode_literals +import io import os # os.path.exists import smtplib # smtplib.STMP from email.mime.text import MIMEText # MIMEText @@ -449,11 +450,11 @@ Mutalyzer batch scheduler""" % url) 'Affected Proteins', 'Restriction Sites Created', 'Restriction Sites Deleted'] - handle = open(filename, 'a') + handle = io.open(filename, mode='a', encoding='utf-8') handle.write("%s\n" % "\t".join(header)) #if else : - handle = open(filename, 'a') + handle = io.open(filename, mode='a', encoding='utf-8') if flags and 'C' in flags: separator = '\t' @@ -508,11 +509,11 @@ Mutalyzer batch scheduler""" % url) # header above it. The header is read from the config file as # a list. We need a tab delimited string. header = ['Input', 'Status'] - handle = open(filename, 'a') + handle = io.open(filename, mode='a', encoding='utf-8') handle.write("%s\n" % "\t".join(header)) #if else : - handle = open(filename, 'a') + handle = io.open(filename, mode='a', encoding='utf-8') if flags and 'C' in flags: separator = '\t' @@ -620,11 +621,11 @@ Mutalyzer batch scheduler""" % url) 'Errors', 'Chromosomal Variant', 'Coding Variant(s)'] - handle = open(filename, 'a') + handle = io.open(filename, mode='a', encoding='utf-8') handle.write("%s\n" % "\t".join(header)) #if else : - handle = open(filename, 'a') + handle = io.open(filename, mode='a', encoding='utf-8') if flags and 'C' in flags: separator = '\t' @@ -682,11 +683,11 @@ Mutalyzer batch scheduler""" % url) header = ['Input Variant', 'HGVS description(s)', 'Errors and warnings'] - handle = open(filename, 'a') + handle = io.open(filename, mode='a', encoding='utf-8') handle.write("%s\n" % "\t".join(header)) #if else : - handle = open(filename, 'a') + handle = io.open(filename, mode='a', encoding='utf-8') if flags and 'C' in flags: separator = '\t' diff --git a/mutalyzer/services/rpc.py b/mutalyzer/services/rpc.py index 004fa869..7f50548b 100644 --- a/mutalyzer/services/rpc.py +++ b/mutalyzer/services/rpc.py @@ -16,9 +16,9 @@ from spyne.service import ServiceBase from spyne.model.primitive import Integer, Boolean, DateTime, Unicode from spyne.model.complex import Array from spyne.model.fault import Fault +import io import os import socket -from io import BytesIO from operator import attrgetter from sqlalchemy.orm.exc import NoResultFound @@ -91,6 +91,12 @@ class MutalyzerService(ServiceBase): 'The process argument must be one of %s.' % ', '.join(batch_types)) + # The Python type for `data` should be a sequence of `str` objects, + # but it seems we sometimes just get one `str` object. Perhaps only in + # the unit tests, but let's fix that anyway. + if isinstance(data, str): + data = [data] + # Note that the max file size check below might be bogus, since Spyne # first checks the total request size, which by default has a maximum # of 2 megabytes. @@ -104,7 +110,7 @@ class MutalyzerService(ServiceBase): 'Only files up to %d megabytes are accepted.' % (settings.MAX_FILE_SIZE // 1048576)) - batch_file = BytesIO() + batch_file = io.BytesIO() for d in data: batch_file.write(d) diff --git a/mutalyzer/website/views.py b/mutalyzer/website/views.py index 03644dcc..f6f228b1 100644 --- a/mutalyzer/website/views.py +++ b/mutalyzer/website/views.py @@ -773,7 +773,9 @@ def batch_jobs_submit(): """ job_type = request.form.get('job_type') email = request.form.get('email') - file = request.files.get('file') + + # Note that this is always a seekable binary file object. + batch_file = request.files.get('file') assemblies = Assembly.query \ .order_by(Assembly.taxonomy_common_name.asc(), @@ -809,7 +811,7 @@ def batch_jobs_submit(): scheduler = Scheduler.Scheduler() file_instance = File.File(output) - job, columns = file_instance.parseBatchFile(file) + job, columns = file_instance.parseBatchFile(batch_file) if job is None: errors.append('Could not parse input file, please check your ' diff --git a/requirements.txt b/requirements.txt index 08f2d5de..c79b98aa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,3 +21,4 @@ mock==1.0.1 alembic==0.6.3 Sphinx==1.2.1 sphinx-rtd-theme==0.1.5 +cchardet==0.3.5 diff --git a/tests/data/batch_input.ods b/tests/data/batch_input.ods new file mode 100644 index 0000000000000000000000000000000000000000..ea08744237a58f80386e041f23583e6555b459ed GIT binary patch literal 9175 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 literal 0 HcmV?d00001 diff --git a/tests/data/batch_input.sxc b/tests/data/batch_input.sxc new file mode 100644 index 0000000000000000000000000000000000000000..942282e2acc2e68f5ac7e496c0f48db6f2d1870b GIT binary patch literal 9036 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 RM+ssyz(?o^@bJ~K{{x`0JrV!_ literal 0 HcmV?d00001 diff --git a/tests/data/batch_input.xls b/tests/data/batch_input.xls new file mode 100644 index 0000000000000000000000000000000000000000..e795855d7ae0856f3b91da7b2732245274073f75 GIT binary patch literal 6656 zcmeHLO>9(E6h3d-DX&oIv`|z)d=%*q{c$=S`B9-$O8JRUno@N`Qm4afX_<D+FeomJ z!(ZY85)BJokQhui#zZkDx{$=ObD_bQV9<@NyG9lR(HIiw_<i@i=L}_r&X9?wX3pfh z_s)6e{+)B~Iq$w7u2oH4`h3;2%%SI{L}ruaQkKTo&|d8P_lUUACT}*GOgd~di?o0= zaL-;VZCDB;x&hjJ5ugL*0G}<f>jkv6;!<<aK%YeLi-{rKGLAYbZ^F{K(@J<u`ZT%p zOph12$j>KJoIj<3`E<qS>H25<W*jd8vYmg%e4hUbU@5Q+s05G#qzb48mIEt*8ek>x z81Ojo1h5KN4Xgp41l9si0S2%Rs0G#oPXil(I-nkC02+af0N31X*K9w7wijr#dF^(c z(nPV9iw4SdSh374UoZWRAz#J*X?Vot(yPiZegp52yhh*X3Wh_*zePLL8iE>qa}rLv zO)JB@h6{dr5#=)ZOg*`x%5BO6As7&23o5>qoW~#bJ+I1IRW3uR$ych+FN)I!-~1L* z$+zFN4}x3kL<}5}poHOD_dSJNp`NZSt&j=k*xlVd-F=<=rqtP)kUx_KW^riJAfF3U z{6BKzbJv;Vv++4<Ci(v_e*!u+xILR3JvUi;NX+FoX5lwy;cv{sFMoi4!G&`bmn3UX zyhPPi@iJ9c$4gbcJibWPE8_0ttMFY-&cgqHMMs|2gGWp=)<%xYKEI0NBWIc~aE?s- zIh<h)zpI)Ki1eS=<aZfmBu@-dP|6aFxD4|goEd?j{}J>b)()>-mLwSYzrlN=E+;j- zDe9A20A)bd-ePV*uFx@<j$EMsg>-ROcB)Z067ogo4zF+1R_~_Pw&y~vzRmvK+xypp zyU*|6>i4y`w)q>ncD~r->l}F9>-9B4=Gg(i*L&CuCvgkW<pdVVj1<yq05oi31|qqb zwyf~xxi7p`U=fG0ZK|?LEy#o6?tXmh$Nhu79RrFV2gjieG?FCcB%WL?-Kcsrsq&PP zU4g{44q2<KuC{+<%sgiFm~R+;k+I--bDueUJRFSH*0uTSI%|;3klN;v>kST@MqTe| zHNhEG)?qR2ie@_M)7lMapKiHvs^vzaqcN?0NoujR!vKG$q*-g$oc>O&$x9e}vAm^p zDB3$qn9)HlW_Qclmc4ZsZOQg+Rf|?B<XL`^;@z|FhSoUzM~O;R-jrS{Jh2BHC_6#r z@+lpyQc4nDG%KZ4`JX1`32R0QqzJ23{n&@Ml<lr+`BGg^11TZAUtl~nG$!CrWEc)O zoH8eE#>~i0g>@0p7O0E39?3;gT2D8xk#1gSJ#X`(&p+l>Qv^`H0Cy%S^QxBRKWG-s zJ6{ASq<OvR=0*6;+q~#gNb_pA8I<4{^F(`eW){3Js#13G&ar<a6pb8<48@G@6CpEf zY~9?_9~?BpVH1f_WXH(RkoC%F^~t+LfUzdcyQkG*7IBF0wR4GqYwGNWx9=P{;`!t~ zU7G5@_?c1i3gAS~J!msE_1e56sQJAn4luHv19)%y0AQw^0C<193~<Jod)8fy(RP0@ z8XFlMH(oZQW5Hld-O;k~*_ZdO0N_x-X`oi^HA{DSXRh&mK;l1rbcSs-AE0de=Nzu< z-(SDjy4rK$eeA#a&Zj%UbI;)&0+07h4o+~*?907n<KuCWYz-9h`;XH9oHLk7(R_nc zj)>|Ne0_?_Q5jU<p^jz}e<-gS)~3CA4xFt1&<^&)Ngfc8CS90$3^&{ZSi`8r%%kM| z+z;m_<<hkYLVImN4fBS@%%xjKnZ=mjn%OEd3e91*;6K0Bklb=mj${90xbgDa-(GwL z98xwRCx)AF1f1;DV9(E(p6mWwA$!vv(v3SoL_%r}ruqVz-+Hz@!v1}jJ7&*ch$>(G Lr+<I@ujl_8Jv@<w literal 0 HcmV?d00001 diff --git a/tests/data/batch_input.xlsx b/tests/data/batch_input.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b2a5a87674b7eb49eed8c7ed53e227762e8bf17f GIT binary patch literal 6536 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 ImjL?fAMkY{&j0`b literal 0 HcmV?d00001 diff --git a/tests/data/image.zip b/tests/data/image.zip new file mode 100644 index 0000000000000000000000000000000000000000..df09158894dfb403f0edb2e5dc24a2749bee6c0d GIT binary patch literal 87562 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 literal 0 HcmV?d00001 diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py index 6f0b4c4e..6470eb46 100644 --- a/tests/test_scheduler.py +++ b/tests/test_scheduler.py @@ -30,12 +30,10 @@ class TestScheduler(MutalyzerTest): """ fixtures = (database, ) - @staticmethod - def _batch_job(variants, expected, job_type, argument=None): + def _batch_job(self, batch_file, expected, job_type, argument=None): file_instance = File.File(output.Output('test')) scheduler = Scheduler.Scheduler() - batch_file = io.BytesIO(('\n'.join(variants) + '\n').encode('utf-8')) job, columns = file_instance.parseBatchFile(batch_file) result_id = scheduler.addJob('test@test.test', job, columns, job_type, argument=argument) @@ -43,7 +41,7 @@ class TestScheduler(MutalyzerTest): batch_job = BatchJob.query.filter_by(result_id=result_id).one() left = batch_job.batch_queue_items.count() - assert left == len(variants) + assert left == len(expected) scheduler.process() @@ -56,6 +54,10 @@ class TestScheduler(MutalyzerTest): next(result) # Header. assert expected == [line.strip().split('\t') for line in result] + def _batch_job_plain_text(self, variants, expected, job_type, argument=None): + batch_file = io.BytesIO(('\n'.join(variants) + '\n').encode('utf-8')) + self._batch_job(batch_file, expected, job_type, argument=argument) + def test_syntax_checker(self): """ Simple syntax checker batch job. @@ -66,7 +68,7 @@ class TestScheduler(MutalyzerTest): 'OK'], ['AL449423.14(CDKN2A_v002):c.5_400del', 'OK']] - self._batch_job(variants, expected, 'syntax-checker') + self._batch_job_plain_text(variants, expected, 'syntax-checker') @fix(cache('AB026906.1', 'NM_000059.3')) def test_name_checker(self): @@ -112,7 +114,7 @@ class TestScheduler(MutalyzerTest): 'NM_000059.3(BRCA2_i001):p.(Asp224Tyr)', '', 'BspHI,CviAII,FatI,Hpy188III,NlaIII']] - self._batch_job(variants, expected, 'name-checker') + self._batch_job_plain_text(variants, expected, 'name-checker') def test_name_checker_altered(self): """ @@ -189,7 +191,7 @@ class TestScheduler(MutalyzerTest): return bz2.BZ2File(path) with patch.object(Entrez, 'efetch', mock_efetch): - self._batch_job(variants, expected, 'name-checker') + self._batch_job_plain_text(variants, expected, 'name-checker') @fix(cache('NM_000059.3')) def test_name_checker_skipped(self): @@ -230,7 +232,7 @@ class TestScheduler(MutalyzerTest): raise IOError() with patch.object(Entrez, 'efetch', mock_efetch): - self._batch_job(variants, expected, 'name-checker') + self._batch_job_plain_text(variants, expected, 'name-checker') @fix(hg19, hg19_transcript_mappings) def test_position_converter(self): @@ -244,4 +246,77 @@ class TestScheduler(MutalyzerTest): 'NM_003002.2:c.274G>T', 'NM_012459.2:c.-2203C>A', 'NR_028383.1:n.-2173C>A']] - self._batch_job(variants, expected, 'position-converter', 'hg19') + self._batch_job_plain_text(variants, expected, 'position-converter', 'hg19') + + def test_ods_file(self): + """ + OpenDocument Spreadsheet input for batch job. + """ + path = os.path.join(os.path.dirname(os.path.realpath(__file__)), + 'data', + 'batch_input.ods') + batch_file = open(path, 'rb') + expected = [['AB026906.1:c.274G>T', + 'OK'], + ['AL449423.14(CDKN2A_v002):c.5_400del', + 'OK']] + + self._batch_job(batch_file, expected, 'syntax-checker') + + def test_sxc_file(self): + """ + OpenOffice.org 1.x Calc spreadsheet input for batch job. + """ + path = os.path.join(os.path.dirname(os.path.realpath(__file__)), + 'data', + 'batch_input.sxc') + batch_file = open(path, 'rb') + expected = [['AB026906.1:c.274G>T', + 'OK'], + ['AL449423.14(CDKN2A_v002):c.5_400del', + 'OK']] + + self._batch_job(batch_file, expected, 'syntax-checker') + + def test_xls_file(self): + """ + Microsoft Excel 97/2000/XP/2003 input for batch job. + """ + path = os.path.join(os.path.dirname(os.path.realpath(__file__)), + 'data', + 'batch_input.xls') + batch_file = open(path, 'rb') + expected = [['AB026906.1:c.274G>T', + 'OK'], + ['AL449423.14(CDKN2A_v002):c.5_400del', + 'OK']] + + self._batch_job(batch_file, expected, 'syntax-checker') + + def test_xlsx_file(self): + """ + Office Open XML Spreadsheet input for batch job. + """ + path = os.path.join(os.path.dirname(os.path.realpath(__file__)), + 'data', + 'batch_input.xlsx') + batch_file = open(path, 'rb') + expected = [['AB026906.1:c.274G>T', + 'OK'], + ['AL449423.14(CDKN2A_v002):c.5_400del', + 'OK']] + + self._batch_job(batch_file, expected, 'syntax-checker') + + def test_invalid_zip_file(self): + """ + Random zip file input for batch job (invalid). + """ + path = os.path.join(os.path.dirname(os.path.realpath(__file__)), + 'data', + 'image.zip') + batch_file = open(path, 'rb') + + file_instance = File.File(output.Output('test')) + job, columns = file_instance.parseBatchFile(batch_file) + assert job is None -- GitLab