Kaydet (Commit) 2ed94eb5 authored tarafından Antoine Pitrou's avatar Antoine Pitrou

Do not print additional shutdown message when gc.DEBUG_SAVEALL is set

üst 0055c421
...@@ -482,8 +482,7 @@ class GCTests(unittest.TestCase): ...@@ -482,8 +482,7 @@ class GCTests(unittest.TestCase):
x.x = x x.x = x
x.y = X('second') x.y = X('second')
del x del x
if %d: gc.set_debug(%s)
gc.set_debug(gc.DEBUG_UNCOLLECTABLE)
""" """
def run_command(code): def run_command(code):
p = subprocess.Popen([sys.executable, "-c", code], p = subprocess.Popen([sys.executable, "-c", code],
...@@ -494,13 +493,19 @@ class GCTests(unittest.TestCase): ...@@ -494,13 +493,19 @@ class GCTests(unittest.TestCase):
self.assertEqual(stdout.strip(), b"") self.assertEqual(stdout.strip(), b"")
return strip_python_stderr(stderr) return strip_python_stderr(stderr)
stderr = run_command(code % 0) stderr = run_command(code % "0")
self.assertIn(b"gc: 2 uncollectable objects at shutdown", stderr) self.assertIn(b"gc: 2 uncollectable objects at shutdown", stderr)
self.assertNotIn(b"[<X 'first'>, <X 'second'>]", stderr) self.assertNotIn(b"[<X 'first'>, <X 'second'>]", stderr)
# With DEBUG_UNCOLLECTABLE, the garbage list gets printed # With DEBUG_UNCOLLECTABLE, the garbage list gets printed
stderr = run_command(code % 1) stderr = run_command(code % "gc.DEBUG_UNCOLLECTABLE")
self.assertIn(b"gc: 2 uncollectable objects at shutdown", stderr) self.assertIn(b"gc: 2 uncollectable objects at shutdown", stderr)
self.assertIn(b"[<X 'first'>, <X 'second'>]", stderr) self.assertIn(b"[<X 'first'>, <X 'second'>]", stderr)
# With DEBUG_SAVEALL, no additional message should get printed
# (because gc.garbage also contains normally reclaimable cyclic
# references, and its elements get printed at runtime anyway).
stderr = run_command(code % "gc.DEBUG_SAVEALL")
self.assertNotIn(b"uncollectable objects at shutdown", stderr)
class GCTogglingTests(unittest.TestCase): class GCTogglingTests(unittest.TestCase):
def setUp(self): def setUp(self):
......
...@@ -1366,7 +1366,8 @@ PyGC_Collect(void) ...@@ -1366,7 +1366,8 @@ PyGC_Collect(void)
void void
_PyGC_Fini(void) _PyGC_Fini(void)
{ {
if (garbage != NULL && PyList_GET_SIZE(garbage) > 0) { if (!(debug & DEBUG_SAVEALL)
&& garbage != NULL && PyList_GET_SIZE(garbage) > 0) {
PySys_WriteStderr( PySys_WriteStderr(
"gc: " "gc: "
"%" PY_FORMAT_SIZE_T "d uncollectable objects at shutdown:\n", "%" PY_FORMAT_SIZE_T "d uncollectable objects at shutdown:\n",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment