Skip to content

Commit

Permalink
Revert "Revert "Switch to unittest.mock from mock""
Browse files Browse the repository at this point in the history
This reverts commit c743e68f72af45b24f783a271368aa07923c00d9.

Change-Id: Ia5a87ec7a65703692cba2edf8aa01202dab68173
  • Loading branch information
cybertron committed Apr 3, 2020
1 parent cdee551 commit 21beb15
Show file tree
Hide file tree
Showing 9 changed files with 31 additions and 25 deletions.
1 change: 0 additions & 1 deletion lower-constraints.txt
Expand Up @@ -15,7 +15,6 @@ keystoneauth1==3.4.0
linecache2==1.0.0
MarkupSafe==1.0
mccabe==0.2.1
mock==2.0.0
netaddr==0.7.18
openstackdocstheme==1.18.1
oslo.config==5.2.0
Expand Down
2 changes: 1 addition & 1 deletion oslotest/base.py
Expand Up @@ -16,14 +16,14 @@
"""Common utilities used in testing"""

import logging
from unittest import mock

import fixtures
from oslotest import createfile
from oslotest import log
from oslotest import output
from oslotest import timeout

from six.moves import mock
import testtools

LOG = logging.getLogger(__name__)
Expand Down
37 changes: 22 additions & 15 deletions oslotest/mock_fixture.py
Expand Up @@ -15,9 +15,9 @@
# under the License.

import functools
from unittest import mock

import fixtures
import mock


def _lazy_autospec_method(mocked_method, original_method, eat_self):
Expand Down Expand Up @@ -72,8 +72,10 @@ def __getattr__(self, name):
original_attr = getattr(original_spec, name)
if callable(original_attr):
# lazily autospec callable attribute.
eat_self = mock.mock._must_skip(original_spec, name,
isinstance(original_spec, type))
eat_self = mock._must_skip(
original_spec, name,
isinstance(original_spec, type)
)

_lazy_autospec_method(attr, original_attr, eat_self)

Expand Down Expand Up @@ -110,15 +112,17 @@ def setUp(self):
super(MockAutospecFixture, self).setUp()

# patch both external and internal usage of Mock / MagicMock.
self.useFixture(fixtures.MonkeyPatch('mock.Mock', _AutospecMock))
self.useFixture(fixtures.MonkeyPatch('mock.mock.Mock', _AutospecMock))
self.useFixture(fixtures.MonkeyPatch('mock.MagicMock',
_AutospecMagicMock))
self.useFixture(fixtures.MonkeyPatch('mock.mock.MagicMock',
_AutospecMagicMock))
self.useFixture(
fixtures.MonkeyPatch(
'unittest.mock.Mock',
_AutospecMock))
self.useFixture(
fixtures.MonkeyPatch(
'unittest.mock.MagicMock',
_AutospecMagicMock))


class _patch(mock.mock._patch):
class _patch(mock._patch):
"""Patch class with working autospec functionality.
Currently, mock.patch functionality doesn't handle the autospec parameter
Expand Down Expand Up @@ -159,8 +163,11 @@ def __enter__(self):
if autospec:
target = self.getter()
original_attr = getattr(target, self.attribute)
eat_self = mock.mock._must_skip(target, self.attribute,
isinstance(target, type))
eat_self = mock._must_skip(
target,
self.attribute,
isinstance(target, type)
)

new = super(_patch, self).__enter__()

Expand All @@ -186,11 +193,11 @@ def wrapper(*args, **kwargs):

def patch_mock_module():
"""Replaces the mock.patch class."""
mock.mock._patch = _patch
mock._patch = _patch

# NOTE(claudiub): mock cannot autospec partial functions properly,
# especially those created by LazyLoader objects (scheduler client),
# as it will try to copy the partial function's __name__ (which they do
# not have).
mock.mock._copy_func_details = _safe_attribute_error_wrapper(
mock.mock._copy_func_details)
mock._copy_func_details = _safe_attribute_error_wrapper(
mock._copy_func_details)
2 changes: 1 addition & 1 deletion oslotest/tests/unit/test_base.py
Expand Up @@ -17,10 +17,10 @@
import logging
import os
import unittest
from unittest import mock

import fixtures
import six
from six.moves import mock
import testtools

from oslotest import base
Expand Down
2 changes: 1 addition & 1 deletion oslotest/tests/unit/test_log.py
Expand Up @@ -15,8 +15,8 @@
# under the License.

import logging
from unittest import mock

from six.moves import mock
import testtools

from oslotest import log
Expand Down
2 changes: 1 addition & 1 deletion oslotest/tests/unit/test_mock_fixture.py
Expand Up @@ -13,8 +13,8 @@
# License for the specific language governing permissions and limitations
# under the License.

import mock
import testtools
from unittest import mock

from oslotest import mock_fixture

Expand Down
6 changes: 3 additions & 3 deletions oslotest/tests/unit/test_output.py
Expand Up @@ -13,12 +13,12 @@
# under the License.

import sys
from unittest import mock

from oslotest import output

from six.moves import mock
import testtools

from oslotest import output


class CaptureOutputTest(testtools.TestCase):

Expand Down
3 changes: 2 additions & 1 deletion oslotest/tests/unit/test_timeout.py
Expand Up @@ -12,7 +12,8 @@
# License for the specific language governing permissions and limitations
# under the License.

from six.moves import mock
from unittest import mock

import testtools

from oslotest import timeout
Expand Down
1 change: 0 additions & 1 deletion requirements.txt
Expand Up @@ -6,4 +6,3 @@ fixtures>=3.0.0 # Apache-2.0/BSD
python-subunit>=1.0.0 # Apache-2.0/BSD
six>=1.10.0 # MIT
testtools>=2.2.0 # MIT
mock>=2.0.0 # BSD

0 comments on commit 21beb15

Please sign in to comment.