#
# 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
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):
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$')
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')