Skip to content

Commit

Permalink
Backport enterContext()
Browse files Browse the repository at this point in the history
  • Loading branch information
adamchainz committed Oct 28, 2024
1 parent 5f01538 commit e9dbdd9
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
37 changes: 37 additions & 0 deletions tests/compat.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
from __future__ import annotations

import sys
from contextlib import AbstractContextManager
from typing import Any
from typing import Callable
from typing import TypeVar

from django import test

_T = TypeVar("_T")

if sys.version_info < (3, 11):

def _enter_context(cm: Any, addcleanup: Callable[..., None]) -> Any:
# We look up the special methods on the type to match the with
# statement.
cls = type(cm)
try:
enter = cls.__enter__
exit = cls.__exit__
except AttributeError:
raise TypeError(
f"'{cls.__module__}.{cls.__qualname__}' object does "
f"not support the context manager protocol"
) from None
result = enter(cm)
addcleanup(exit, cm, None, None, None)
return result


class SimpleTestCase(test.SimpleTestCase):
if sys.version_info < (3, 11):

def enterContext(self, cm: AbstractContextManager[_T]) -> _T:
result: _T = _enter_context(cm, self.addCleanup)
return result
2 changes: 1 addition & 1 deletion tests/test_django_watchfiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
import tempfile
from pathlib import Path

from django.test import SimpleTestCase
from django.utils import autoreload

from django_watchfiles import MutableWatcher
from django_watchfiles import WatchfilesReloader
from tests.compat import SimpleTestCase


class MutableWatcherTests(SimpleTestCase):
Expand Down

0 comments on commit e9dbdd9

Please sign in to comment.