mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
Do not print additional shutdown message when gc.DEBUG_SAVEALL is set
This commit is contained in:
parent
0055c421fe
commit
2ed94eb520
2 changed files with 11 additions and 5 deletions
|
@ -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):
|
||||||
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)
|
||||||
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",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue