diff mbox

Recognize parameters surrounded by quotes v2

Message ID 1296343341-21198-1-git-send-email-lmr@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Lucas Meneghel Rodrigues Jan. 29, 2011, 11:22 p.m. UTC
None
diff mbox

Patch

diff --git a/client/bin/job.py b/client/bin/job.py
index 3d5d937..3e285c6 100644
--- a/client/bin/job.py
+++ b/client/bin/job.py
@@ -135,6 +135,11 @@  class base_client_job(base_job.base_job):
         return autodir, clientdir, None
 
 
+    @classmethod
+    def _parse_args(cls, args):
+        return re.findall("[^\s]*?['|\"].*?['|\"]|[^\s]+", args)
+
+
     def _find_resultdir(self, options):
         """
         Determine the directory for storing results. On a client this is
@@ -243,7 +248,7 @@  class base_client_job(base_job.base_job):
 
         self.args = []
         if options.args:
-            self.args = options.args.split()
+            self.args = self._parse_args(options.args)
 
         if options.user:
             self.user = options.user
diff --git a/client/bin/job_unittest.py b/client/bin/job_unittest.py
index dba7e08..0e5aede 100755
--- a/client/bin/job_unittest.py
+++ b/client/bin/job_unittest.py
@@ -694,5 +694,18 @@  class test_base_job(unittest.TestCase):
         self.god.check_playback()
 
 
+    def test_parse_args(self):
+        test_set = {"a='foo bar baz' b='moo apt'":
+                    ["a='foo bar baz'", "b='moo apt'"],
+                    "a='foo bar baz' only=gah":
+                    ["a='foo bar baz'", "only=gah"],
+                    "a='b c d' no=argh":
+                    ["a='b c d'", "no=argh"]}
+        for t in test_set:
+            parsed_args = job.base_client_job._parse_args(t)
+            expected_args = test_set[t]
+            self.assertEqual(parsed_args, expected_args)
+
+
 if __name__ == "__main__":
     unittest.main()