diff options
| -rwxr-xr-x | mat-cli | 4 | ||||
| -rw-r--r-- | mat/mat.py | 16 | ||||
| -rw-r--r-- | test/clitest.py | 21 | ||||
| -rw-r--r-- | test/libtest.py | 13 |
4 files changed, 50 insertions, 4 deletions
| @@ -152,8 +152,10 @@ def main(): | |||
| 152 | for filename in filenames: | 152 | for filename in filenames: |
| 153 | class_file = mat.create_class_file(filename, args.backup, | 153 | class_file = mat.create_class_file(filename, args.backup, |
| 154 | args.add2archive) | 154 | args.add2archive) |
| 155 | if class_file is not None: | 155 | if class_file is not False: |
| 156 | func(class_file, filename, args.force) | 156 | func(class_file, filename, args.force) |
| 157 | else: | ||
| 158 | print('Unable to process %s' % filename) | ||
| 157 | 159 | ||
| 158 | if __name__ == '__main__': | 160 | if __name__ == '__main__': |
| 159 | main() | 161 | main() |
| @@ -108,7 +108,17 @@ def create_class_file(name, backup, add2archive): | |||
| 108 | if not os.path.isfile(name): | 108 | if not os.path.isfile(name): |
| 109 | # check if the file exists | 109 | # check if the file exists |
| 110 | logging.error('%s is not a valid file' % name) | 110 | logging.error('%s is not a valid file' % name) |
| 111 | return | 111 | return False |
| 112 | |||
| 113 | if not os.access(name, os.R_OK): | ||
| 114 | #check read permissions | ||
| 115 | logging.error('%s is is not readable' % name) | ||
| 116 | return False | ||
| 117 | |||
| 118 | if not os.access(name, os.W_OK): | ||
| 119 | #check write permission | ||
| 120 | logging.error('%s is not writtable' % name) | ||
| 121 | return False | ||
| 112 | 122 | ||
| 113 | filename = '' | 123 | filename = '' |
| 114 | try: | 124 | try: |
| @@ -119,7 +129,7 @@ def create_class_file(name, backup, add2archive): | |||
| 119 | parser = hachoir_parser.createParser(filename) | 129 | parser = hachoir_parser.createParser(filename) |
| 120 | if not parser: | 130 | if not parser: |
| 121 | logging.info('Unable to parse %s' % filename) | 131 | logging.info('Unable to parse %s' % filename) |
| 122 | return | 132 | return False |
| 123 | 133 | ||
| 124 | mime = parser.mime_type | 134 | mime = parser.mime_type |
| 125 | 135 | ||
| @@ -135,6 +145,6 @@ def create_class_file(name, backup, add2archive): | |||
| 135 | stripper_class = strippers.STRIPPERS[mime] | 145 | stripper_class = strippers.STRIPPERS[mime] |
| 136 | except KeyError: | 146 | except KeyError: |
| 137 | logging.info('Don\'t have stripper for %s format' % mime) | 147 | logging.info('Don\'t have stripper for %s format' % mime) |
| 138 | return | 148 | return False |
| 139 | 149 | ||
| 140 | return stripper_class(filename, parser, mime, backup, add2archive) | 150 | return stripper_class(filename, parser, mime, backup, add2archive) |
diff --git a/test/clitest.py b/test/clitest.py index cb615ce..db54843 100644 --- a/test/clitest.py +++ b/test/clitest.py | |||
| @@ -72,6 +72,27 @@ class TestisCleancli(test.MATTest): | |||
| 72 | stdout, _ = proc.communicate() | 72 | stdout, _ = proc.communicate() |
| 73 | self.assertEqual(stdout.strip('\n'), '[+] %s is not clean' % dirty) | 73 | self.assertEqual(stdout.strip('\n'), '[+] %s is not clean' % dirty) |
| 74 | 74 | ||
| 75 | class TestFileAttributes(unittest.TestCase): | ||
| 76 | ''' | ||
| 77 | test various stuffs about files (readable, writable, exist, ...) | ||
| 78 | ''' | ||
| 79 | def test_not_readable(self): | ||
| 80 | proc = subprocess.Popen(['../mat-cli', 'not_readable'], | ||
| 81 | stdout=subprocess.PIPE) | ||
| 82 | stdout, _ = proc.communicate() | ||
| 83 | self.assertEqual(stdout.strip('\n'), 'Unable to pocess %s' % 'not_readable') | ||
| 84 | |||
| 85 | def test_not_writtable(self): | ||
| 86 | proc = subprocess.Popen(['../mat-cli', 'not_writtable'], | ||
| 87 | stdout=subprocess.PIPE) | ||
| 88 | stdout, _ = proc.communicate() | ||
| 89 | self.assertEqual(stdout.strip('\n'), 'Unable to pocess %s' % 'not_writtable') | ||
| 90 | |||
| 91 | def test_not_exist(self): | ||
| 92 | proc = subprocess.Popen(['../mat-cli', 'ilikecookies'], | ||
| 93 | stdout=subprocess.PIPE) | ||
| 94 | stdout, _ = proc.communicate() | ||
| 95 | self.assertEqual(stdout.strip('\n'), 'Unable to pocess %s' % 'ilikecookies') | ||
| 75 | 96 | ||
| 76 | if __name__ == '__main__': | 97 | if __name__ == '__main__': |
| 77 | suite = unittest.TestSuite() | 98 | suite = unittest.TestSuite() |
diff --git a/test/libtest.py b/test/libtest.py index ecbc03e..0df584f 100644 --- a/test/libtest.py +++ b/test/libtest.py | |||
| @@ -64,11 +64,24 @@ class TestisCleanlib(test.MATTest): | |||
| 64 | current_file = mat.create_class_file(clean, False, True) | 64 | current_file = mat.create_class_file(clean, False, True) |
| 65 | self.assertTrue(current_file.is_clean()) | 65 | self.assertTrue(current_file.is_clean()) |
| 66 | 66 | ||
| 67 | class TestFileAttributes(unittest.TestCase): | ||
| 68 | ''' | ||
| 69 | test various stuffs about files (readable, writable, exist, ...) | ||
| 70 | ''' | ||
| 71 | def test_not_readable(self): | ||
| 72 | self.assertFalse(mat.create_class_file('not_readable', False, True)) | ||
| 73 | |||
| 74 | def test_not_writtable(self): | ||
| 75 | self.assertFalse(mat.create_class_file('not_writtable', False, True)) | ||
| 76 | |||
| 77 | def test_not_exist(self): | ||
| 78 | self.assertFalse(mat.create_class_file('ilikecookies', False, True)) | ||
| 67 | 79 | ||
| 68 | if __name__ == '__main__': | 80 | if __name__ == '__main__': |
| 69 | Suite = unittest.TestSuite() | 81 | Suite = unittest.TestSuite() |
| 70 | Suite.addTest(unittest.makeSuite(TestRemovelib)) | 82 | Suite.addTest(unittest.makeSuite(TestRemovelib)) |
| 71 | Suite.addTest(unittest.makeSuite(TestListlib)) | 83 | Suite.addTest(unittest.makeSuite(TestListlib)) |
| 72 | Suite.addTest(unittest.makeSuite(TestisCleanlib)) | 84 | Suite.addTest(unittest.makeSuite(TestisCleanlib)) |
| 85 | Suite.addTest(unittest.makeSuite(TestFileAttributes)) | ||
| 73 | unittest.TextTestRunner(verbosity=test.VERBOSITY).run(Suite) | 86 | unittest.TextTestRunner(verbosity=test.VERBOSITY).run(Suite) |
| 74 | 87 | ||
