|
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