14965: Mocks FreshBase _poll_time to avoid comparing mock and int
[arvados.git] / services / fuse / tests / test_command_args.py
index 0d85df33d8c8e95dc14ac735751a62c81d7e0a87..9f6555de33278efb1b83648826a17f527a85bc66 100644 (file)
@@ -2,6 +2,8 @@
 #
 # 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
@@ -13,14 +15,14 @@ import llfuse
 import logging
 import mock
 import os
-import run_test_server
+from . import run_test_server
 import sys
 import tempfile
 import unittest
 
 def noexit(func):
     """If argparse or arvados_fuse tries to exit, fail the test instead"""
-    class SystemExitCaught(StandardError):
+    class SystemExitCaught(Exception):
         pass
     @functools.wraps(func)
     def wrapper(*args, **kwargs):
@@ -78,12 +80,12 @@ class MountArgsTest(unittest.TestCase):
         e = self.check_ent_type(arvados_fuse.MagicDirectory, 'by_id')
 
         e = self.check_ent_type(arvados_fuse.StringFile, 'README')
-        readme = e.readfrom(0, -1)
+        readme = e.readfrom(0, -1).decode()
         self.assertRegexpMatches(readme, r'active-user@arvados\.local')
         self.assertRegexpMatches(readme, r'\n$')
 
         e = self.check_ent_type(arvados_fuse.StringFile, 'by_id', 'README')
-        txt = e.readfrom(0, -1)
+        txt = e.readfrom(0, -1).decode()
         self.assertRegexpMatches(txt, r'portable data hash')
         self.assertRegexpMatches(txt, r'\n$')
 
@@ -184,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')