14965: Fixes test for checking the arvmount version
authorEric Biagiotti <ebiagiotti@veritasgenetics.com>
Tue, 2 Jul 2019 15:59:26 +0000 (11:59 -0400)
committerEric Biagiotti <ebiagiotti@veritasgenetics.com>
Tue, 2 Jul 2019 15:59:26 +0000 (11:59 -0400)
Arvados-DCO-1.1-Signed-off-by:  <ebiagiotti@veritasgenetics.com>

services/fuse/arvados_fuse/command.py
services/fuse/tests/test_command_args.py

index 76449729dbf9875a5bdae7efcea9b82eae2b860d..5283367532b6e78956bf0721b4267c8eaea4afe3 100644 (file)
@@ -34,7 +34,7 @@ class ArgumentParser(argparse.ArgumentParser):
     with "--".
             """)
         self.add_argument('--version', action='version',
-                          version="%s %s" % (sys.argv[0], __version__),
+                          version=u"%s %s" % (sys.argv[0], __version__),
                           help='Print version and exit.')
         self.add_argument('mountpoint', type=str, help="""Mount point.""")
         self.add_argument('--allow-other', action='store_true',
index bc18749f5589b4b2e191032d93db58aaf43fb879..1962c0339022390094100629d5fc26adf541a8b9 100644 (file)
@@ -3,6 +3,7 @@
 # SPDX-License-Identifier: AGPL-3.0
 
 from __future__ import absolute_import
+from __future__ import print_function
 import arvados
 import arvados_fuse
 import arvados_fuse.command
@@ -185,11 +186,20 @@ class MountArgsTest(unittest.TestCase):
         self.assertEqual(True, self.mnt.listen_for_events)
 
     def test_version_argument(self):
-        orig, sys.stderr = sys.stderr, io.BytesIO()
+        # The argparse version action prints to stderr in Python 2 and stdout
+        # in Python 3.4 and up. Write both to the same stream so the test can pass 
+        # in both cases. 
+        origerr = sys.stderr
+        origout = sys.stdout
+        sys.stderr = io.StringIO()
+        sys.stdout = sys.stderr
+
         with self.assertRaises(SystemExit):
             args = arvados_fuse.command.ArgumentParser().parse_args(['--version'])
-        self.assertRegexpMatches(sys.stderr.getvalue(), "[0-9]+\.[0-9]+\.[0-9]+")
-        sys.stderr = orig
+        self.assertRegexpMatches(sys.stdout.getvalue(), "[0-9]+\.[0-9]+\.[0-9]+")
+        sys.stderr.close()
+        sys.stderr = origerr
+        sys.stdout = origout
 
     @noexit
     @mock.patch('arvados.events.subscribe')