# -*- coding: utf-8 -*-
import io
+import os
import random
-
+import sys
import mock
+import tempfile
+import multiprocessing
import arvados.errors as arv_error
import arvados.commands.ls as arv_ls
self.stderr = io.BytesIO()
return arv_ls.main(args, self.stdout, self.stderr, api_client)
+ def run_ls_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_ls.main(*args, **kwargs)
+ return wrapper
+ p = multiprocessing.Process(target=wrap(),
+ args=(args, sys.stdout, sys.stderr, api_client))
+ 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_plain_listing(self):
collection, api_client = self.mock_api_for_manifest(
['. {} 0:3:one.txt 3:4:two.txt'.format(self.random_blocks(5, 2)),
arv_error.NotFoundError)
self.assertNotEqual(0, self.run_ls([self.FAKE_UUID], api_client))
self.assertNotEqual('', self.stderr.getvalue())
+
+ def test_version_argument(self):
+ _, api_client = self.mock_api_for_manifest([''])
+ exitcode, out, err = self.run_ls_process(['--version'])
+ self.assertEqual(0, exitcode)
+ self.assertEqual('', out)
+ self.assertNotEqual('', err)
+ self.assertRegexpMatches(err, "[0-9]+\.[0-9]+\.[0-9]+")