summaryrefslogtreecommitdiff
path: root/openstackclient/tests
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2019-04-13 03:15:46 +0000
committerGerrit Code Review <review@openstack.org>2019-04-13 03:15:46 +0000
commit3b5dd14b80209278c53b4c08e60b9a115229eabb (patch)
tree4e87d70f37606155ae6ca3c43bbce994ac058801 /openstackclient/tests
parentee193e67a9eef8e124dd572f6df064e5c0259717 (diff)
parent415b48056d9d021e04ec972029040a89a6b13928 (diff)
downloadpython-openstackclient-3b5dd14b80209278c53b4c08e60b9a115229eabb.tar.gz
Merge "Before writing object data to stdout, re-open it in binary mode"
Diffstat (limited to 'openstackclient/tests')
-rw-r--r--openstackclient/tests/unit/object/v1/test_object_all.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/openstackclient/tests/unit/object/v1/test_object_all.py b/openstackclient/tests/unit/object/v1/test_object_all.py
index 363f2ea2..08a7534d 100644
--- a/openstackclient/tests/unit/object/v1/test_object_all.py
+++ b/openstackclient/tests/unit/object/v1/test_object_all.py
@@ -241,7 +241,25 @@ class TestObjectSave(TestObjectAll):
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- with mock.patch('sys.stdout', new=six.BytesIO()) as fake_stdout:
+ class FakeStdout(six.BytesIO):
+ def __init__(self):
+ six.BytesIO.__init__(self)
+ self.context_manager_calls = []
+
+ def __enter__(self):
+ self.context_manager_calls.append('__enter__')
+ return self
+
+ def __exit__(self, *a):
+ self.context_manager_calls.append('__exit__')
+
+ with mock.patch('sys.stdout') as fake_stdout, mock.patch(
+ 'os.fdopen', return_value=FakeStdout()) as fake_fdopen:
+ fake_stdout.fileno.return_value = 123
self.cmd.take_action(parsed_args)
- self.assertEqual(fake_stdout.getvalue(), object_fakes.object_1_content)
+ self.assertEqual(fake_fdopen.return_value.getvalue(),
+ object_fakes.object_1_content)
+ self.assertEqual(fake_fdopen.mock_calls, [mock.call(123, 'wb')])
+ self.assertEqual(fake_fdopen.return_value.context_manager_calls,
+ ['__enter__', '__exit__'])