summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_asyncore.py
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2014-06-27 21:52:03 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2014-06-27 21:52:03 (GMT)
commit4d4c69dc35154a9c21fed1b6b4088e741fbc6ae6 (patch)
treef4ca0640823595c1beca048f262ee5035166ec14 /Lib/test/test_asyncore.py
parent252d40ef1ee627148ae12ab9cbf812cfeeb27655 (diff)
downloadcpython-4d4c69dc35154a9c21fed1b6b4088e741fbc6ae6.zip
cpython-4d4c69dc35154a9c21fed1b6b4088e741fbc6ae6.tar.gz
cpython-4d4c69dc35154a9c21fed1b6b4088e741fbc6ae6.tar.bz2
Issue #11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper
object is destroyed. The destructor now closes the file if needed. The close() method can now be called twice: the second call does nothing.
Diffstat (limited to 'Lib/test/test_asyncore.py')
-rw-r--r--Lib/test/test_asyncore.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/Lib/test/test_asyncore.py b/Lib/test/test_asyncore.py
index 7defe65..6cfe580 100644
--- a/Lib/test/test_asyncore.py
+++ b/Lib/test/test_asyncore.py
@@ -436,6 +436,22 @@ class FileWrapperTest(unittest.TestCase):
asyncore.loop(timeout=0.01, use_poll=True, count=2)
self.assertEqual(b"".join(data), self.d)
+ def test_resource_warning(self):
+ # Issue #11453
+ fd = os.open(support.TESTFN, os.O_RDONLY)
+ f = asyncore.file_wrapper(fd)
+ with support.check_warnings(('', ResourceWarning)):
+ f = None
+ support.gc_collect()
+
+ def test_close_twice(self):
+ fd = os.open(support.TESTFN, os.O_RDONLY)
+ f = asyncore.file_wrapper(fd)
+ f.close()
+ self.assertEqual(f.fd, -1)
+ # calling close twice should not fail
+ f.close()
+
class BaseTestHandler(asyncore.dispatcher):