Skip to content

Commit

Permalink
pythongh-102402: Fix logging test_relativeCreated_has_higher_precisio…
Browse files Browse the repository at this point in the history
…n() leak (python#117985)

Fix a reference leak in test_relativeCreated_has_higher_precision()
of test_logging: don't reimport the logging the logging module.
  • Loading branch information
vstinner authored Apr 18, 2024
1 parent ccdcd1d commit 8f25cc9
Showing 1 changed file with 15 additions and 17 deletions.
32 changes: 15 additions & 17 deletions Lib/test/test_logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -4598,27 +4598,25 @@ def test_msecs_has_no_floating_point_precision_loss(self):
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):
Expand Down

0 comments on commit 8f25cc9

Please sign in to comment.