From c49c60a9b643dc1391d02bd84c8ef312c4ba0c17 Mon Sep 17 00:00:00 2001
From: Stefan Bienert <stefan.bienert@unibas.ch>
Date: Tue, 18 Aug 2015 16:39:17 +0200
Subject: [PATCH] Simplifying handling fasta

---
 core/pymod/core/pm3argparse.py | 11 ++++++-----
 core/tests/test_pm3argparse.py | 12 ++++++------
 2 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/core/pymod/core/pm3argparse.py b/core/pymod/core/pm3argparse.py
index a606c81f..dd4c981f 100644
--- a/core/pymod/core/pm3argparse.py
+++ b/core/pymod/core/pm3argparse.py
@@ -229,6 +229,12 @@ class PM3OptionsNamespace(object):
             helper.MsgErrorAndExit("'--fasta %s' requires " % ' '.join(argstr)+
                                    "one argument prefixed with 'trg:' marking "+
                                    "the target sequence name", 11)
+        # check that 'trg:' has a string attached
+        if not len(trgname):
+            helper.MsgErrorAndExit("'--fasta %s' requires " % ' '.join(argstr)+
+                                   "argument 'trg:' defining the "+
+                                   "target sequence name, empty one "+
+                                   "found: '%s'" % ' '.join(argstr), 14)
         return trgname, seqfile
 
     def _PostProcessAlignment(self):
@@ -242,11 +248,6 @@ class PM3OptionsNamespace(object):
         if self.fasta:
             for src in self.fasta:
                 trgname, seqfile = self._FetchAlnFromFastaOpt(src)
-                if not len(trgname):
-                    helper.MsgErrorAndExit("'--fasta' requires argument "+
-                                           "'trg:' defining the "+
-                                           "target sequence name, empty one "+
-                                           "found: '%s'" % ' '.join(src), 14)
                 helper.FileExists("Alignment", 12, seqfile)
                 is_gz = helper.FileGzip("Alignment", 13, seqfile)
                 readfile = seqfile
diff --git a/core/tests/test_pm3argparse.py b/core/tests/test_pm3argparse.py
index 10ad2777..c8c54c59 100644
--- a/core/tests/test_pm3argparse.py
+++ b/core/tests/test_pm3argparse.py
@@ -100,9 +100,9 @@ class PM3ArgParseTests(unittest.TestCase):
         with self.assertRaises(SystemExit) as ecd:
             parser.Parse(['--fasta', 'trg:', 'bar'])
         self.assertEqual(ecd.exception.code, 14)
-        self.assertEqual(self.log.messages['ERROR'][0], "'--fasta' requires "+
-                         "argument 'trg:' defining the target sequence name, "+
-                         "empty one found: 'trg: bar'")
+        self.assertEqual(self.log.messages['ERROR'][0], "'--fasta trg: bar' "+
+                         "requires argument 'trg:' defining the target "+
+                         "sequence name, empty one found: 'trg: bar'")
 
     def testAddAlignemntSwapTrgPfx(self):
         # checking that we fail on empty 'trg:' prefix for arguments of
@@ -113,9 +113,9 @@ class PM3ArgParseTests(unittest.TestCase):
         with self.assertRaises(SystemExit) as ecd:
             parser.Parse(['--fasta', 'bar', 'trg:'])
         self.assertEqual(ecd.exception.code, 14)
-        self.assertEqual(self.log.messages['ERROR'][0], "'--fasta' requires "+
-                         "argument 'trg:' defining the target sequence name, "+
-                         "empty one found: 'bar trg:'")
+        self.assertEqual(self.log.messages['ERROR'][0], "'--fasta bar trg:' "+
+                         "requires argument 'trg:' defining the target "+
+                         "sequence name, empty one found: 'bar trg:'")
 
     def testAddAlignmentNoFile(self):
         # check that we throw an error if a non-exisiting file is given
-- 
GitLab