|
52 | 52 | pass
|
53 | 53 | #
|
54 | 54 |
|
55 |
| -# This is copied from test_import/__init__.py. |
56 |
| -def no_rerun(reason): |
57 |
| - """Skip rerunning for a particular test. |
58 |
| -
|
59 |
| - WARNING: Use this decorator with care; skipping rerunning makes it |
60 |
| - impossible to find reference leaks. Provide a clear reason for skipping the |
61 |
| - test using the 'reason' parameter. |
62 |
| - """ |
63 |
| - def deco(func): |
64 |
| - _has_run = False |
65 |
| - def wrapper(self): |
66 |
| - nonlocal _has_run |
67 |
| - if _has_run: |
68 |
| - self.skipTest(reason) |
69 |
| - func(self) |
70 |
| - _has_run = True |
71 |
| - return wrapper |
72 |
| - return deco |
73 |
| - |
74 | 55 | pickle_loads = {pickle.loads, pickle._loads}
|
75 | 56 |
|
76 | 57 | pickle_choices = [(pickle, pickle, proto)
|
@@ -6420,7 +6401,6 @@ class IranTest(ZoneInfoTest):
|
6420 | 6401 |
|
6421 | 6402 |
|
6422 | 6403 | @unittest.skipIf(_testcapi is None, 'need _testcapi module')
|
6423 |
| -@no_rerun("the encapsulated datetime C API does not support reloading") |
6424 | 6404 | class CapiTest(unittest.TestCase):
|
6425 | 6405 | def setUp(self):
|
6426 | 6406 | # Since the C API is not present in the _Pure tests, skip all tests
|
@@ -6889,6 +6869,38 @@ def pickle_fake_date(datetime_) -> Type[FakeDate]:
|
6889 | 6869 | """)
|
6890 | 6870 | script_helper.assert_python_ok('-c', script)
|
6891 | 6871 |
|
| 6872 | + def test_update_type_cache(self): |
| 6873 | + # gh-120782 |
| 6874 | + script = textwrap.dedent(""" |
| 6875 | + import sys |
| 6876 | + for i in range(5): |
| 6877 | + import _datetime |
| 6878 | + assert _datetime.date.max > _datetime.date.min |
| 6879 | + assert _datetime.time.max > _datetime.time.min |
| 6880 | + assert _datetime.datetime.max > _datetime.datetime.min |
| 6881 | + assert _datetime.timedelta.max > _datetime.timedelta.min |
| 6882 | + assert _datetime.date.__dict__["min"] is _datetime.date.min |
| 6883 | + assert _datetime.date.__dict__["max"] is _datetime.date.max |
| 6884 | + assert _datetime.date.__dict__["resolution"] is _datetime.date.resolution |
| 6885 | + assert _datetime.time.__dict__["min"] is _datetime.time.min |
| 6886 | + assert _datetime.time.__dict__["max"] is _datetime.time.max |
| 6887 | + assert _datetime.time.__dict__["resolution"] is _datetime.time.resolution |
| 6888 | + assert _datetime.datetime.__dict__["min"] is _datetime.datetime.min |
| 6889 | + assert _datetime.datetime.__dict__["max"] is _datetime.datetime.max |
| 6890 | + assert _datetime.datetime.__dict__["resolution"] is _datetime.datetime.resolution |
| 6891 | + assert _datetime.timedelta.__dict__["min"] is _datetime.timedelta.min |
| 6892 | + assert _datetime.timedelta.__dict__["max"] is _datetime.timedelta.max |
| 6893 | + assert _datetime.timedelta.__dict__["resolution"] is _datetime.timedelta.resolution |
| 6894 | + assert _datetime.timezone.__dict__["min"] is _datetime.timezone.min |
| 6895 | + assert _datetime.timezone.__dict__["max"] is _datetime.timezone.max |
| 6896 | + assert _datetime.timezone.__dict__["utc"] is _datetime.timezone.utc |
| 6897 | + assert isinstance(_datetime.timezone.min, _datetime.tzinfo) |
| 6898 | + assert isinstance(_datetime.timezone.max, _datetime.tzinfo) |
| 6899 | + assert isinstance(_datetime.timezone.utc, _datetime.tzinfo) |
| 6900 | + del sys.modules['_datetime'] |
| 6901 | + """) |
| 6902 | + script_helper.assert_python_ok('-c', script) |
| 6903 | + |
6892 | 6904 |
|
6893 | 6905 | def load_tests(loader, standard_tests, pattern):
|
6894 | 6906 | standard_tests.addTest(ZoneInfoCompleteTest())
|
|
0 commit comments