10587: Added tests to Python commands to check for the --version argument.
[arvados.git] / sdk / python / tests / test_arv_ws.py
index 5a018273a4d0c8aa6b35970cbb151227083e0a47..17706c19b655c66eb063cc046691bcd86143d143 100644 (file)
@@ -1,6 +1,11 @@
 #!/usr/bin/env python
 
+import multiprocessing
+import os
+import sys
+import tempfile
 import unittest
+
 import arvados.errors as arv_error
 import arvados.commands.ws as arv_ws
 
@@ -8,6 +13,31 @@ class ArvWsTestCase(unittest.TestCase):
     def run_ws(self, args):
         return arv_ws.main(args)
 
+    def run_ws_process(self, args=[], api_client=None):
+        _, stdout_path = tempfile.mkstemp()
+        _, stderr_path = tempfile.mkstemp()
+        def wrap():
+            def wrapper(*args, **kwargs):
+                sys.stdout = open(stdout_path, 'w')
+                sys.stderr = open(stderr_path, 'w')
+                arv_ws.main(*args, **kwargs)
+            return wrapper
+        p = multiprocessing.Process(target=wrap(), args=(args,))
+        p.start()
+        p.join()
+        out = open(stdout_path, 'r').read()
+        err = open(stderr_path, 'r').read()
+        os.unlink(stdout_path)
+        os.unlink(stderr_path)
+        return p.exitcode, out, err
+
     def test_unsupported_arg(self):
         with self.assertRaises(SystemExit):
             self.run_ws(['-x=unknown'])
+
+    def test_version_argument(self):
+        exitcode, out, err = self.run_ws_process(['--version'])
+        self.assertEqual(0, exitcode)
+        self.assertEqual('', out)
+        self.assertNotEqual('', err)
+        self.assertRegexpMatches(err, "[0-9]+\.[0-9]+\.[0-9]+")