From 23f2db700575786bc111a28a963e2e240d90c534 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Mon, 29 Apr 2013 22:12:07 +0200 Subject: Mat now correctly handle empty files This is necessary beccause hachoir crashes on empty files... --- MAT/mat.py | 5 +++++ test/clitest.py | 7 +++++++ test/libtest.py | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/MAT/mat.py b/MAT/mat.py index 3a0938a..8c92a33 100644 --- a/MAT/mat.py +++ b/MAT/mat.py @@ -125,6 +125,11 @@ def create_class_file(name, backup, **kwargs): logging.error('%s is not writtable' % name) return None + if not os.path.getsize(name): + #check if the file is not empty (hachoir crash on empty files) + logging.error('%s is empty' % name) + return None + filename = '' try: filename = hachoir_core.cmd_line.unicodeFilename(name) diff --git a/test/clitest.py b/test/clitest.py index bc0a7fd..d877698 100644 --- a/test/clitest.py +++ b/test/clitest.py @@ -94,6 +94,13 @@ class TestFileAttributes(unittest.TestCase): stdout, _ = proc.communicate() self.assertEqual(str(stdout).strip('\n'), 'Unable to process %s' % 'ilikecookies') + def test_empty(self): + ''' test MAT's behaviour on empty file''' + proc = subprocess.Popen(['../mat', 'empty_file'], + stdout=subprocess.PIPE) + stdout, _ = proc.communicate() + self.assertEqual(str(stdout).strip('\n'), 'Unable to process %s' % 'ilikecookies') + def get_tests(): ''' Return every clitests''' diff --git a/test/libtest.py b/test/libtest.py index 7b31e3e..ffec63a 100644 --- a/test/libtest.py +++ b/test/libtest.py @@ -72,11 +72,16 @@ class TestFileAttributes(unittest.TestCase): test various stuffs about files (readable, writable, exist, ...) ''' def test_not_writtable(self): + ''' test MAT's behaviour on non-writable file''' self.assertFalse(mat.create_class_file('not_writtable', False, add2archive=True, low_pdf_quality=True)) def test_not_exist(self): + ''' test MAT's behaviour on non-existent file''' self.assertFalse(mat.create_class_file('ilikecookies', False, add2archive=True, low_pdf_quality=True)) + def test_empty(self): + ''' test MAT's behaviour on empty file''' + self.assertFalse(mat.create_class_file('empty_file', False, add2archive=True, low_pdf_quality=True)) def get_tests(): ''' Return every libtests''' -- cgit v1.3