X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/5bcba288077488791daa43a15d5fd5fb0c6e653c..0eb72b526bf8bbb011551ecf019f604e17a534f1:/sdk/python/tests/test_arv_ls.py diff --git a/sdk/python/tests/test_arv_ls.py b/sdk/python/tests/test_arv_ls.py index 90bbacfe5a..491fa86393 100644 --- a/sdk/python/tests/test_arv_ls.py +++ b/sdk/python/tests/test_arv_ls.py @@ -1,17 +1,24 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 -import hashlib -import io +from __future__ import absolute_import +from builtins import str +from builtins import range +import os import random - +import sys import mock +import tempfile import arvados.errors as arv_error import arvados.commands.ls as arv_ls -import run_test_server +from . import run_test_server + +from . import arvados_testutil as tutil +from .arvados_testutil import str_keep_locator, redirected_streams, StringIO -class ArvLsTestCase(run_test_server.TestCaseWithServers): +class ArvLsTestCase(run_test_server.TestCaseWithServers, tutil.VersionChecker): FAKE_UUID = 'zzzzz-4zz18-12345abcde12345' def newline_join(self, seq): @@ -24,8 +31,7 @@ class ArvLsTestCase(run_test_server.TestCaseWithServers): def mock_api_for_manifest(self, manifest_lines, uuid=FAKE_UUID): manifest_text = self.newline_join(manifest_lines) - pdh = '{}+{}'.format(hashlib.md5(manifest_text).hexdigest(), - len(manifest_text)) + pdh = str_keep_locator(manifest_text) coll_info = {'uuid': uuid, 'portable_data_hash': pdh, 'manifest_text': manifest_text} @@ -33,10 +39,10 @@ class ArvLsTestCase(run_test_server.TestCaseWithServers): api_client.collections().get().execute.return_value = coll_info return coll_info, api_client - def run_ls(self, args, api_client): - self.stdout = io.BytesIO() - self.stderr = io.BytesIO() - return arv_ls.main(args, self.stdout, self.stderr, api_client) + def run_ls(self, args, api_client, logger=None): + self.stdout = StringIO() + self.stderr = StringIO() + return arv_ls.main(args, self.stdout, self.stderr, api_client, logger) def test_plain_listing(self): collection, api_client = self.mock_api_for_manifest( @@ -74,7 +80,16 @@ class ArvLsTestCase(run_test_server.TestCaseWithServers): def test_locator_failure(self): api_client = mock.MagicMock(name='mock_api_client') + error_mock = mock.MagicMock() + logger = mock.MagicMock() + logger.error = error_mock api_client.collections().get().execute.side_effect = ( arv_error.NotFoundError) - self.assertNotEqual(0, self.run_ls([self.FAKE_UUID], api_client)) - self.assertNotEqual('', self.stderr.getvalue()) + self.assertNotEqual(0, self.run_ls([self.FAKE_UUID], api_client, logger)) + self.assertEqual(1, error_mock.call_count) + + def test_version_argument(self): + with redirected_streams(stdout=StringIO, stderr=StringIO) as (out, err): + with self.assertRaises(SystemExit): + self.run_ls(['--version'], None) + self.assertVersionOutput(out, err)