summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2024-04-18 17:01:55 (GMT)
committerGitHub <noreply@github.com>2024-04-18 17:01:55 (GMT)
commit8f25cc992021d6ffc62bb110545b97a92f7cb295 (patch)
treea5e7d68d60ea298be5bd36e34f42a6dc7a26ceb9
parentccdcd1d95a9d6eda4df86811c4539f204beef817 (diff)
downloadcpython-8f25cc992021d6ffc62bb110545b97a92f7cb295.zip
cpython-8f25cc992021d6ffc62bb110545b97a92f7cb295.tar.gz
cpython-8f25cc992021d6ffc62bb110545b97a92f7cb295.tar.bz2
gh-102402: Fix logging test_relativeCreated_has_higher_precision() leak (#117985)
Fix a reference leak in test_relativeCreated_has_higher_precision() of test_logging: don't reimport the logging the logging module.
-rw-r--r--Lib/test/test_logging.py32
1 files changed, 15 insertions, 17 deletions
diff --git a/Lib/test/test_logging.py b/Lib/test/test_logging.py
index 826b738..d8ae607 100644
--- a/Lib/test/test_logging.py
+++ b/Lib/test/test_logging.py
@@ -4598,27 +4598,25 @@ class FormatterTest(unittest.TestCase, AssertErrorMessage):
self.assertEqual(record.msecs, want)
self.assertEqual(record.created, ns / 1e9)
+ # The test overrides a private attribute
+ @support.cpython_only
def test_relativeCreated_has_higher_precision(self):
# See issue gh-102402
ns = 1_677_903_920_000_998_503 # approx. 2023-03-04 04:25:20 UTC
offsets_ns = (200, 500, 12_354, 99_999, 1_677_903_456_999_123_456)
- orig_modules = import_helper._save_and_remove_modules(['logging'])
- try:
- with patch("time.time_ns") as patched_ns:
- # mock for module import
- patched_ns.return_value = ns
- import logging
- for offset_ns in offsets_ns:
- new_ns = ns + offset_ns
- # mock for log record creation
- patched_ns.return_value = new_ns
- record = logging.makeLogRecord({'msg': 'test'})
- self.assertAlmostEqual(record.created, new_ns / 1e9, places=6)
- # After PR gh-102412, precision (places) increases from 3 to 7
- self.assertAlmostEqual(record.relativeCreated, offset_ns / 1e6, places=7)
- finally:
- import_helper._save_and_remove_modules(['logging'])
- sys.modules.update(orig_modules)
+
+ with (patch("time.time_ns") as time_ns_mock,
+ support.swap_attr(logging, '_startTime', ns)):
+ for offset_ns in offsets_ns:
+ # mock for log record creation
+ new_ns = ns + offset_ns
+ time_ns_mock.return_value = new_ns
+
+ record = logging.makeLogRecord({'msg': 'test'})
+ self.assertAlmostEqual(record.created, new_ns / 1e9, places=6)
+
+ # After PR gh-102412, precision (places) increases from 3 to 7
+ self.assertAlmostEqual(record.relativeCreated, offset_ns / 1e6, places=7)
class TestBufferingFormatter(logging.BufferingFormatter):