Skip to content

Commit

Permalink
Remove usage of unittest2
Browse files Browse the repository at this point in the history
from comments when it was last touched it looks like workarounds for
unittest2 might be able to be dropped.

related: mtreinish/stestr#265

simplify the workaround logic around unittest2 TestCase logic

Change-Id: Ibac9d0c2fa2f30605dd44ee58b84946464ea6449
  • Loading branch information
yazug committed Jan 24, 2022
1 parent eb860bc commit 1ff7748
Show file tree
Hide file tree
Showing 6 changed files with 3 additions and 62 deletions.
1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,3 @@ stevedore>=1.20.0 # Apache-2.0
PrettyTable>=0.7.1 # BSD
urllib3>=1.21.1 # MIT
debtcollector>=1.2.0 # Apache-2.0
unittest2>=1.1.0 # BSD
31 changes: 0 additions & 31 deletions tempest/lib/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,29 +14,11 @@
# under the License.

import os
import sys

import fixtures
import pkg_resources
import testtools


def _handle_skip_exception():
try:
stestr_version = pkg_resources.parse_version(
pkg_resources.get_distribution("stestr").version)
stestr_min = pkg_resources.parse_version('2.5.0')
new_stestr = (stestr_version >= stestr_min)
import unittest
import unittest2
if sys.version_info >= (3, 5) and new_stestr:
testtools.TestCase.skipException = unittest.case.SkipTest
else:
testtools.TestCase.skipException = unittest2.case.SkipTest
except Exception:
pass


class BaseTestCase(testtools.testcase.WithAttributes, testtools.TestCase):
setUpClassCalled = False

Expand All @@ -51,26 +33,13 @@ def setUpClass(cls):
if hasattr(super(BaseTestCase, cls), 'setUpClass'):
super(BaseTestCase, cls).setUpClass()
cls.setUpClassCalled = True
# TODO(gmann): cls.handle_skip_exception is really workaround for
# testtools bug- https://github.com/testing-cabal/testtools/issues/272
# stestr which is used by Tempest internally to run the test switch
# the customize test runner(which use stdlib unittest) for >=py3.5
# else testtools.run.- https://github.com/mtreinish/stestr/pull/265
# These two test runner are not compatible due to skip exception
# handling(due to unittest2). testtools.run treat unittestt.SkipTest
# as error and stdlib unittest treat unittest2.case.SkipTest raised
# by testtools.TestCase.skipException.
# The below workaround can be removed once testtools fix issue# 272.
cls.orig_skip_exception = testtools.TestCase.skipException
_handle_skip_exception()

@classmethod
def tearDownClass(cls):
if hasattr(super(BaseTestCase, cls), 'tearDownClass'):
super(BaseTestCase, cls).tearDownClass()

def setUp(self):
testtools.TestCase.skipException = self.orig_skip_exception
super(BaseTestCase, self).setUp()
if not self.setUpClassCalled:
raise RuntimeError("setUpClass does not calls the super's "
Expand Down
16 changes: 0 additions & 16 deletions tempest/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
from tempest.common import credentials_factory as credentials
from tempest.common import utils
from tempest import config
from tempest.lib import base as lib_base
from tempest.lib.common import api_microversion_fixture
from tempest.lib.common import fixed_network
from tempest.lib.common import profiler
Expand Down Expand Up @@ -142,19 +141,6 @@ def setUpClass(cls):
# It should never be overridden by descendants
if hasattr(super(BaseTestCase, cls), 'setUpClass'):
super(BaseTestCase, cls).setUpClass()
# All the configuration checks that may generate a skip
# TODO(gmann): cls.handle_skip_exception is really workaround for
# testtools bug- https://github.com/testing-cabal/testtools/issues/272
# stestr which is used by Tempest internally to run the test switch
# the customize test runner(which use stdlib unittest) for >=py3.5
# else testtools.run.- https://github.com/mtreinish/stestr/pull/265
# These two test runner are not compatible due to skip exception
# handling(due to unittest2). testtools.run treat unittestt.SkipTest
# as error and stdlib unittest treat unittest2.case.SkipTest raised
# by testtools.TestCase.skipException.
# The below workaround can be removed once testtools fix issue# 272.
orig_skip_exception = testtools.TestCase.skipException
lib_base._handle_skip_exception()
try:
cls.skip_checks()

Expand Down Expand Up @@ -182,8 +168,6 @@ def setUpClass(cls):
raise value.with_traceback(trace)
finally:
del trace # to avoid circular refs
finally:
testtools.TestCase.skipException = orig_skip_exception

@classmethod
def tearDownClass(cls):
Expand Down
7 changes: 1 addition & 6 deletions tempest/test_discover/test_discover.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,10 @@
# under the License.

import os
import sys
import unittest

from tempest.test_discover import plugins

if sys.version_info >= (2, 7):
import unittest
else:
import unittest2 as unittest


def load_tests(loader, tests, pattern):
ext_plugins = plugins.TempestTestPluginManager()
Expand Down
2 changes: 1 addition & 1 deletion tempest/tests/lib/test_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class TestSetUpClass(base.BaseTestCase):
@classmethod
def setUpClass(cls): # noqa
"""Simulate absence of super() call."""
cls.orig_skip_exception = cls.skipException
pass

def setUp(self):
try:
Expand Down
8 changes: 1 addition & 7 deletions tempest/tests/test_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# under the License.

import os
import sys
import unittest
from unittest import mock

from oslo_config import cfg
Expand All @@ -34,12 +34,6 @@
from tempest.tests.lib.services import registry_fixture


if sys.version_info >= (2, 7):
import unittest
else:
import unittest2 as unittest


class LoggingTestResult(testtools.TestResult):

def __init__(self, log, *args, **kwargs):
Expand Down

0 comments on commit 1ff7748

Please sign in to comment.