Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace unittest2 with unittest #420

Merged
merged 6 commits into from
Feb 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions .codeclimate.yml

This file was deleted.

322 changes: 145 additions & 177 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

31 changes: 0 additions & 31 deletions UPGRADE_FROM_RATCHET.md

This file was deleted.

19 changes: 0 additions & 19 deletions default.nix

This file was deleted.

26 changes: 23 additions & 3 deletions rollbar/test/__init__.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,33 @@
import unittest2
import unittest
import sys


SNOWMAN = b'\xe2\x98\x83'
SNOWMAN_UNICODE = SNOWMAN.decode('utf8')


class BaseTest(unittest2.TestCase):
class BaseTest(unittest.TestCase):
pass


class SkipAsyncTestLoader(unittest.TestLoader):
"""
Python 2 does not have the async keyword, so when tests are run under python 2.7 the loader
will fail with a syntaxerror. This loader class does the following:
- try to load as normal
- if loading fails because of a syntax error in python < 3.4, skip the file.
"""
def _get_module_from_name(self, name):
try:
return super(SkipAsyncTestLoader, self)._get_module_from_name(name)
except SyntaxError as e:
if sys.version_info < (3, 5):
return None
else:
raise


def discover():
return unittest2.defaultTestLoader.discover(__name__)
loader = SkipAsyncTestLoader()
suite = loader.discover(__name__)
return suite
4 changes: 2 additions & 2 deletions rollbar/test/asgi_tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import sys
import unittest2
import unittest


def _load_tests(loader, tests, pattern):
return unittest2.TestSuite()
return unittest.TestSuite()


if sys.version_info < (3, 5):
Expand Down
6 changes: 6 additions & 0 deletions rollbar/test/asgi_tests/test_integration.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
import unittest
import sys

from rollbar.test import BaseTest

ALLOWED_PYTHON_VERSION = sys.version_info >= (3, 5)


@unittest.skipUnless(ALLOWED_PYTHON_VERSION, 'ASGI implementation requires Python3.5+')
class IntegrationTest(BaseTest):
def test_should_integrate_if__integrate_defined(self):
from rollbar.contrib.asgi.integration import IntegrationBase
Expand Down
10 changes: 5 additions & 5 deletions rollbar/test/asgi_tests/test_middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
except ImportError:
import mock

import unittest2
import unittest

import rollbar
from rollbar.lib._async import AsyncMock
Expand All @@ -17,7 +17,7 @@
ASYNC_REPORT_ENABLED = sys.version_info >= (3, 6)


@unittest2.skipUnless(ALLOWED_PYTHON_VERSION, 'ASGI implementation requires Python3.5+')
@unittest.skipUnless(ALLOWED_PYTHON_VERSION, 'ASGI implementation requires Python3.5+')
class ReporterMiddlewareTest(BaseTest):
default_settings = copy.deepcopy(rollbar.SETTINGS)

Expand Down Expand Up @@ -62,7 +62,7 @@ def test_should_add_framework_name_to_payload(self, mock_send_payload, *mocks):

self.assertIn('asgi', payload['data']['framework'])

@unittest2.skipUnless(ASYNC_REPORT_ENABLED, 'Requires Python 3.6+')
@unittest.skipUnless(ASYNC_REPORT_ENABLED, 'Requires Python 3.6+')
@mock.patch('rollbar.lib._async.report_exc_info', new_callable=AsyncMock)
@mock.patch('rollbar.report_exc_info')
def test_should_use_async_report_exc_info_if_default_handler(
Expand All @@ -81,7 +81,7 @@ def test_should_use_async_report_exc_info_if_default_handler(
self.assertTrue(async_report_exc_info.called)
self.assertFalse(sync_report_exc_info.called)

@unittest2.skipUnless(ASYNC_REPORT_ENABLED, 'Requires Python 3.6+')
@unittest.skipUnless(ASYNC_REPORT_ENABLED, 'Requires Python 3.6+')
@mock.patch('rollbar.lib._async.report_exc_info', new_callable=AsyncMock)
@mock.patch('rollbar.report_exc_info')
def test_should_use_async_report_exc_info_if_any_async_handler(
Expand All @@ -100,7 +100,7 @@ def test_should_use_async_report_exc_info_if_any_async_handler(
self.assertTrue(async_report_exc_info.called)
self.assertFalse(sync_report_exc_info.called)

@unittest2.skipUnless(ASYNC_REPORT_ENABLED, 'Requires Python 3.6+')
@unittest.skipUnless(ASYNC_REPORT_ENABLED, 'Requires Python 3.6+')
@mock.patch('logging.Logger.warning')
@mock.patch('rollbar.lib._async.report_exc_info', new_callable=AsyncMock)
@mock.patch('rollbar.report_exc_info')
Expand Down
4 changes: 2 additions & 2 deletions rollbar/test/asgi_tests/test_spec.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import inspect
import sys

import unittest2
import unittest

from rollbar.test import BaseTest

ALLOWED_PYTHON_VERSION = sys.version_info >= (3, 5)


@unittest2.skipUnless(ALLOWED_PYTHON_VERSION, 'ASGI implementation requires Python3.5+')
@unittest.skipUnless(ALLOWED_PYTHON_VERSION, 'ASGI implementation requires Python3.5+')
class ASGISpecTest(BaseTest):
def test_asgi_v3_middleware_is_single_callable_coroutine(self):
from rollbar.contrib.asgi import ReporterMiddleware
Expand Down
4 changes: 2 additions & 2 deletions rollbar/test/async_tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import sys
import unittest2
import unittest


def _load_tests(loader, tests, pattern):
return unittest2.TestSuite()
return unittest.TestSuite()


if sys.version_info < (3, 6):
Expand Down
4 changes: 2 additions & 2 deletions rollbar/test/async_tests/test_async.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
except ImportError:
import mock

import unittest2
import unittest

import rollbar
from rollbar.lib._async import AsyncMock
Expand All @@ -15,7 +15,7 @@
ALLOWED_PYTHON_VERSION = sys.version_info >= (3, 6)


@unittest2.skipUnless(ALLOWED_PYTHON_VERSION, 'Async support requires Python3.6+')
@unittest.skipUnless(ALLOWED_PYTHON_VERSION, 'Async support requires Python3.6+')
class AsyncLibTest(BaseTest):
default_settings = copy.deepcopy(rollbar.SETTINGS)

Expand Down
4 changes: 2 additions & 2 deletions rollbar/test/fastapi_tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import sys
import unittest2
import unittest


def _load_tests(loader, tests, pattern):
return unittest2.TestSuite()
return unittest.TestSuite()


if sys.version_info < (3, 6):
Expand Down
4 changes: 2 additions & 2 deletions rollbar/test/fastapi_tests/test_logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@
except ImportError:
FASTAPI_INSTALLED = False

import unittest2
import unittest

import rollbar
from rollbar.test import BaseTest

ALLOWED_PYTHON_VERSION = sys.version_info >= (3, 6)


@unittest2.skipUnless(
@unittest.skipUnless(
FASTAPI_INSTALLED and ALLOWED_PYTHON_VERSION,
'FastAPI LoggerMiddleware requires Python3.6+',
)
Expand Down
8 changes: 4 additions & 4 deletions rollbar/test/fastapi_tests/test_middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
except ImportError:
FASTAPI_INSTALLED = False

import unittest2
import unittest

import rollbar
from rollbar.lib._async import AsyncMock
Expand All @@ -23,7 +23,7 @@
ALLOWED_PYTHON_VERSION = sys.version_info >= (3, 6)


@unittest2.skipUnless(
@unittest.skipUnless(
FASTAPI_INSTALLED and ALLOWED_PYTHON_VERSION, 'FastAPI requires Python3.6+'
)
class ReporterMiddlewareTest(BaseTest):
Expand Down Expand Up @@ -258,7 +258,7 @@ async def root():
'Failed to report asynchronously. Trying to report synchronously.'
)

@unittest2.skipUnless(
@unittest.skipUnless(
sys.version_info >= (3, 6), 'Global request access requires Python 3.6+'
)
@mock.patch('rollbar.contrib.starlette.middleware.store_current_request')
Expand Down Expand Up @@ -305,7 +305,7 @@ async def read_root():
scope = store_current_request.call_args[0][0]
self.assertDictContainsSubset(expected_scope, scope)

@unittest2.skipUnless(
@unittest.skipUnless(
sys.version_info >= (3, 6), 'Global request access is supported in Python 3.6+'
)
def test_should_return_current_request(self):
Expand Down
12 changes: 6 additions & 6 deletions rollbar/test/fastapi_tests/test_routing.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
FASTAPI_INSTALLED = False
ALLOWED_FASTAPI_VERSION = False

import unittest2
import unittest

import rollbar
from rollbar.lib._async import AsyncMock
Expand All @@ -27,7 +27,7 @@
ALLOWED_PYTHON_VERSION = sys.version_info >= (3, 6)


@unittest2.skipUnless(
@unittest.skipUnless(
FASTAPI_INSTALLED and ALLOWED_PYTHON_VERSION, 'FastAPI requires Python3.6+'
)
class LoggingRouteUnsupportedFastAPIVersionTest(BaseTest):
Expand Down Expand Up @@ -64,10 +64,10 @@ def test_should_disable_loading_route_handler_if_fastapi_is_too_old(self):
fastapi.__version__ = fastapi_version


@unittest2.skipUnless(
@unittest.skipUnless(
FASTAPI_INSTALLED and ALLOWED_PYTHON_VERSION, 'FastAPI requires Python3.6+'
)
@unittest2.skipUnless(ALLOWED_FASTAPI_VERSION, 'FastAPI v0.41.0+ is required')
@unittest.skipUnless(ALLOWED_FASTAPI_VERSION, 'FastAPI v0.41.0+ is required')
class LoggingRouteTest(BaseTest):
default_settings = copy.deepcopy(rollbar.SETTINGS)

Expand Down Expand Up @@ -686,7 +686,7 @@ def test_should_warn_if_middleware_in_use(self):
' This can cause in duplicate occurrences.'
)

@unittest2.skipUnless(
@unittest.skipUnless(
sys.version_info >= (3, 6), 'Global request access requires Python 3.6+'
)
@mock.patch('rollbar.contrib.fastapi.routing.store_current_request')
Expand Down Expand Up @@ -733,7 +733,7 @@ async def read_root():
scope = store_current_request.call_args[0][0]
self.assertDictContainsSubset(expected_scope, scope)

@unittest2.skipUnless(
@unittest.skipUnless(
sys.version_info >= (3, 6), 'Global request access is supported in Python 3.6+'
)
def test_should_return_current_request(self):
Expand Down
6 changes: 3 additions & 3 deletions rollbar/test/fastapi_tests/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
except ImportError:
FASTAPI_INSTALLED = False

import unittest2
import unittest

from rollbar.test import BaseTest

ALLOWED_PYTHON_VERSION = sys.version_info >= (3, 6)


@unittest2.skipUnless(
@unittest.skipUnless(
FASTAPI_INSTALLED and ALLOWED_PYTHON_VERSION, 'FastAPI requires Python3.6+'
)
class UtilsMiddlewareTest(BaseTest):
Expand Down Expand Up @@ -66,7 +66,7 @@ def test_should_return_empty_list_if_rollbar_middlewares_not_installed(self):
self.assertListEqual(middlewares, [])


@unittest2.skipUnless(
@unittest.skipUnless(
FASTAPI_INSTALLED and ALLOWED_PYTHON_VERSION, 'FastAPI requires Python3.6+'
)
class UtilsBareRoutingTest(BaseTest):
Expand Down
4 changes: 2 additions & 2 deletions rollbar/test/starlette_tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import sys
import unittest2
import unittest


def _load_tests(loader, tests, pattern):
return unittest2.TestSuite()
return unittest.TestSuite()


if sys.version_info < (3, 6):
Expand Down
4 changes: 2 additions & 2 deletions rollbar/test/starlette_tests/test_logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@
except ImportError:
STARLETTE_INSTALLED = False

import unittest2
import unittest

import rollbar
from rollbar.test import BaseTest

ALLOWED_PYTHON_VERSION = sys.version_info >= (3, 6)


@unittest2.skipUnless(
@unittest.skipUnless(
STARLETTE_INSTALLED and ALLOWED_PYTHON_VERSION,
'Starlette LoggerMiddleware requires Python3.6+',
)
Expand Down
Loading