Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_datetime.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | 01e5d0771824 |
| children |
| rev | line source |
|---|---|
|
63184
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
1 import unittest |
|
61996
cac00cbbe770
Merged revisions 81556 via svnmerge from
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
61953
diff
changeset
|
2 import sys |
|
63184
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
3 from test.support import import_fresh_module, run_unittest |
|
75086
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
4 |
|
63184
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
5 TESTS = 'test.datetimetester' |
|
75086
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
6 |
|
63184
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
7 # XXX: import_fresh_module() is supposed to leave sys.module cache untouched, |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
8 # XXX: but it does not, so we have to save and restore it ourselves. |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
9 save_sys_modules = sys.modules.copy() |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
10 try: |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
11 pure_tests = import_fresh_module(TESTS, fresh=['datetime', '_strptime'], |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
12 blocked=['_datetime']) |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
13 fast_tests = import_fresh_module(TESTS, fresh=['datetime', |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
14 '_datetime', '_strptime']) |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
15 finally: |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
16 sys.modules.clear() |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
17 sys.modules.update(save_sys_modules) |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
18 test_modules = [pure_tests, fast_tests] |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
19 test_suffixes = ["_Pure", "_Fast"] |
|
75086
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
20 # XXX(gb) First run all the _Pure tests, then all the _Fast tests. You might |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
21 # not believe this, but in spite of all the sys.modules trickery running a _Pure |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
22 # test last will leave a mix of pure and native datetime stuff lying around. |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
23 test_classes = [] |
|
26673
5b715cad34d0
datetime escapes the sandbox. The Windows build is all set. I leave it
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
24 |
|
63184
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
25 for module, suffix in zip(test_modules, test_suffixes): |
|
afdb53323065
Issue #7989: Added pure python implementation of the datetime module.
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
62837
diff
changeset
|
26 for name, cls in module.__dict__.items(): |
|
75086
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
27 if not (isinstance(cls, type) and issubclass(cls, unittest.TestCase)): |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
28 continue |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
29 cls.__name__ = name + suffix |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
30 @classmethod |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
31 def setUpClass(cls_, module=module): |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
32 cls_._save_sys_modules = sys.modules.copy() |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
33 sys.modules[TESTS] = module |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
34 sys.modules['datetime'] = module.datetime_module |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
35 sys.modules['_strptime'] = module._strptime |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
36 @classmethod |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
37 def tearDownClass(cls_): |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
38 sys.modules.clear() |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
39 sys.modules.update(cls_._save_sys_modules) |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
40 cls.setUpClass = setUpClass |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
41 cls.tearDownClass = tearDownClass |
|
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
42 test_classes.append(cls) |
|
33498
abbdbba56a8b
SF bug #1028306: date-datetime comparison
Tim Peters <tim.peters@gmail.com>
parents:
32388
diff
changeset
|
43 |
|
26673
5b715cad34d0
datetime escapes the sandbox. The Windows build is all set. I leave it
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
44 def test_main(): |
|
75086
01e5d0771824
Fix obscure failures of datetime-related tests due to the datetime tests failing to restore the system state completely after testing the pure-Python versions.
Georg Brandl <georg@python.org>
parents:
68586
diff
changeset
|
45 run_unittest(*test_classes) |
|
26673
5b715cad34d0
datetime escapes the sandbox. The Windows build is all set. I leave it
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
46 |
|
5b715cad34d0
datetime escapes the sandbox. The Windows build is all set. I leave it
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
47 if __name__ == "__main__": |
|
5b715cad34d0
datetime escapes the sandbox. The Windows build is all set. I leave it
Tim Peters <tim.peters@gmail.com>
parents:
diff
changeset
|
48 test_main() |
