From 265862fcc86add3588e9fdcd784798ca2ae8f660 Mon Sep 17 00:00:00 2001
From: Stefan Bienert <stefan.bienert@unibas.ch>
Date: Thu, 24 Jul 2014 16:24:57 +0200
Subject: [PATCH] Extended error message

---
 core/pymod/core/argcheck.py | 16 +++++++++++++---
 core/tests/test_argcheck.py |  9 ++++++---
 extras/pre-commit           |  6 +++---
 3 files changed, 22 insertions(+), 9 deletions(-)

diff --git a/core/pymod/core/argcheck.py b/core/pymod/core/argcheck.py
index 4d926736..c8173512 100644
--- a/core/pymod/core/argcheck.py
+++ b/core/pymod/core/argcheck.py
@@ -68,10 +68,16 @@ def FileExtension(prefix, exit_status, file, extensions, gz=False):
     is_gz = True
     filename, fileext = os.path.splitext(filename)
     if not gz:
-      sys.stderr.write('%s file extension not supported: %s\n' % (prefix, file))
+      extension_string = ', '.join(extensions)
+      sys.stderr.write('%s file extension not supported: %s. ' % (prefix, file)
+                       +'Allowed extensions are: %s\n' % extension_string)
       sys.exit(exit_status)
   if fileext == '':
-    sys.stderr.write('%s file extension not supported: %s\n' % (prefix, file))
+    extension_string = ', '.join(extensions)
+    if gz:
+      extension_string += ', ' + '.gz, '.join(extensions) + '.gz'
+    sys.stderr.write('%s file extension not supported: %s. ' % (prefix, file)
+                     +'Allowed extensions are: %s\n' % extension_string)
     sys.exit(exit_status)
   fileext = fileext[1:].lower()
   for ext in extensions:
@@ -80,7 +86,11 @@ def FileExtension(prefix, exit_status, file, extensions, gz=False):
         return os.path.basename(filename), fileext, is_gz
       else:
         return os.path.basename(filename), fileext
-  sys.stderr.write('%s file extension not supported: %s\n' % (prefix, file))
+  extension_string = ', '.join(extensions)
+  if gz:
+    extension_string += ', ' + '.gz, '.join(extensions) + '.gz'
+  sys.stderr.write('%s file extension not supported: %s. ' % (prefix, file)
+                   +'Allowed extensions are: %s\n' % extension_string)
   sys.exit(exit_status)
 
 __all__ = (
diff --git a/core/tests/test_argcheck.py b/core/tests/test_argcheck.py
index 51e8a8ac..06b7f9d8 100644
--- a/core/tests/test_argcheck.py
+++ b/core/tests/test_argcheck.py
@@ -66,7 +66,8 @@ class ArgcheckTests(unittest.TestCase):
                                            'noextension', ['py'])
     self.assertEqual(ec.exception.code, 27)
     self.assertEqual(err.getvalue().strip(),
-                     'Argcheck test file extension not supported: noextension')
+                     'Argcheck test file extension not supported: noextension. '
+                     +'Allowed extensions are: py')
 
   def testFileExtensionFalseGZ(self):
     # make sure we fail outside gz mode if a gz extension is provided
@@ -76,7 +77,8 @@ class ArgcheckTests(unittest.TestCase):
                                            'wrongname.gz', ['py'])
     self.assertEqual(ec.exception.code, 26)
     self.assertEqual(err.getvalue().strip(),
-                     'Argcheck test file extension not supported: wrongname.gz')
+                     'Argcheck test file extension not supported: wrongname.gz.'
+                     +' Allowed extensions are: py')
 
   def testFileExtensionFalse(self):
     # check file name with unknown extension
@@ -86,7 +88,8 @@ class ArgcheckTests(unittest.TestCase):
                                            'unknown.ext', ['py'])
     self.assertEqual(ec.exception.code, 25)
     self.assertEqual(err.getvalue().strip(),
-                     'Argcheck test file extension not supported: unknown.ext')
+                     'Argcheck test file extension not supported: unknown.ext. '
+                     +'Allowed extensions are: py')
 
 if __name__ == "__main__":
   from ost import testutils
diff --git a/extras/pre-commit b/extras/pre-commit
index 2f15dd49..f7380481 100755
--- a/extras/pre-commit
+++ b/extras/pre-commit
@@ -94,14 +94,14 @@ def CheckWithespaces():
         FailMsg("Found trailing whitespace(s):\n%s" % '\n'.join(output), 8)
 
 def GetFileType(filepath):
+  if filepath.endswith('.py'):
+    return "python"
   try:
     fo = subprocess.check_output(['file', filepath], shell=False)
   except Exception, e:
     FailMsg("Failed to run 'file %s': '%s'" % (filepath, str(e)), 11)
   fo = fo.strip()
-  if fo.endswith('.py'):
-    return "python"
-  elif fo == "%s: a python script text executable" % filepath:
+  if fo == "%s: a python script text executable" % filepath:
     return "python"
   elif fo == "%s: a ost script text executable" % filepath:
     return "python"
-- 
GitLab