summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Merickel <michael@merickel.org>2019-04-10 04:00:22 -0500
committerMichael Merickel <michael@merickel.org>2019-04-10 04:00:22 -0500
commit827e16d4095aa207164e7e6227cbb350b6cba160 (patch)
treeaa2b0cb3bff4105503d68461a49af1965b946684
parent5583715063c30fda571ab0e0169b0068403dc53d (diff)
downloadwaitress-resource-warnings.tar.gz
fix resource warningsresource-warnings
-rw-r--r--waitress/tests/fixtureapps/filewrapper.py3
-rw-r--r--waitress/tests/test_buffers.py60
-rw-r--r--waitress/tests/test_functional.py8
3 files changed, 65 insertions, 6 deletions
diff --git a/waitress/tests/fixtureapps/filewrapper.py b/waitress/tests/fixtureapps/filewrapper.py
index be35b02..60b9165 100644
--- a/waitress/tests/fixtureapps/filewrapper.py
+++ b/waitress/tests/fixtureapps/filewrapper.py
@@ -40,7 +40,8 @@ def app(environ, start_response): # pragma: no cover
('Content-Type', 'image/jpeg'),
]
else:
- data = open(fn, 'rb').read()
+ with open(fn, 'rb') as fp:
+ data = fp.read()
cl = len(data)
f = KindaFilelike(data)
if path_info == '/notfilelike':
diff --git a/waitress/tests/test_buffers.py b/waitress/tests/test_buffers.py
index 46a215e..a7c3427 100644
--- a/waitress/tests/test_buffers.py
+++ b/waitress/tests/test_buffers.py
@@ -5,7 +5,16 @@ class TestFileBasedBuffer(unittest.TestCase):
def _makeOne(self, file=None, from_buffer=None):
from waitress.buffers import FileBasedBuffer
- return FileBasedBuffer(file, from_buffer=from_buffer)
+ buf = FileBasedBuffer(file, from_buffer=from_buffer)
+ self.buffers_to_close.append(buf)
+ return buf
+
+ def setUp(self):
+ self.buffers_to_close = []
+
+ def tearDown(self):
+ for buf in self.buffers_to_close:
+ buf.close()
def test_ctor_from_buffer_None(self):
inst = self._makeOne('file')
@@ -110,17 +119,28 @@ class TestFileBasedBuffer(unittest.TestCase):
inst = self._makeOne(f)
inst.close()
self.assertTrue(f.closed)
+ self.buffers_to_close.remove(inst)
class TestTempfileBasedBuffer(unittest.TestCase):
def _makeOne(self, from_buffer=None):
from waitress.buffers import TempfileBasedBuffer
- return TempfileBasedBuffer(from_buffer=from_buffer)
+ buf = TempfileBasedBuffer(from_buffer=from_buffer)
+ self.buffers_to_close.append(buf)
+ return buf
+
+ def setUp(self):
+ self.buffers_to_close = []
+
+ def tearDown(self):
+ for buf in self.buffers_to_close:
+ buf.close()
def test_newfile(self):
inst = self._makeOne()
r = inst.newfile()
self.assertTrue(hasattr(r, 'fileno')) # file
+ r.close()
class TestBytesIOBasedBuffer(unittest.TestCase):
@@ -147,7 +167,16 @@ class TestReadOnlyFileBasedBuffer(unittest.TestCase):
def _makeOne(self, file, block_size=8192):
from waitress.buffers import ReadOnlyFileBasedBuffer
- return ReadOnlyFileBasedBuffer(file, block_size)
+ buf = ReadOnlyFileBasedBuffer(file, block_size)
+ self.buffers_to_close.append(buf)
+ return buf
+
+ def setUp(self):
+ self.buffers_to_close = []
+
+ def tearDown(self):
+ for buf in self.buffers_to_close:
+ buf.close()
def test_prepare_not_seekable(self):
f = KindaFilelike(b'abc')
@@ -235,7 +264,16 @@ class TestOverflowableBuffer(unittest.TestCase):
def _makeOne(self, overflow=10):
from waitress.buffers import OverflowableBuffer
- return OverflowableBuffer(overflow)
+ buf = OverflowableBuffer(overflow)
+ self.buffers_to_close.append(buf)
+ return buf
+
+ def setUp(self):
+ self.buffers_to_close = []
+
+ def tearDown(self):
+ for buf in self.buffers_to_close:
+ buf.close()
def test___len__buf_is_None(self):
inst = self._makeOne()
@@ -245,6 +283,7 @@ class TestOverflowableBuffer(unittest.TestCase):
inst = self._makeOne()
inst.buf = b'abc'
self.assertEqual(len(inst), 3)
+ self.buffers_to_close.remove(inst)
def test___nonzero__(self):
inst = self._makeOne()
@@ -252,6 +291,7 @@ class TestOverflowableBuffer(unittest.TestCase):
self.assertEqual(bool(inst), True)
inst.buf = b''
self.assertEqual(bool(inst), False)
+ self.buffers_to_close.remove(inst)
def test___nonzero___on_int_overflow_buffer(self):
inst = self._makeOne()
@@ -264,6 +304,7 @@ class TestOverflowableBuffer(unittest.TestCase):
self.assertEqual(bool(inst), True)
inst.buf = b''
self.assertEqual(bool(inst), False)
+ self.buffers_to_close.remove(inst)
def test__create_buffer_large(self):
from waitress.buffers import TempfileBasedBuffer
@@ -293,6 +334,7 @@ class TestOverflowableBuffer(unittest.TestCase):
# we don't want this to throw an OverflowError on Python 2 (see
# https://github.com/Pylons/waitress/issues/47)
self.assertEqual(result, None)
+ self.buffers_to_close.remove(inst)
def test_append_buf_None_not_longer_than_srtbuf_limit(self):
inst = self._makeOne()
@@ -366,6 +408,7 @@ class TestOverflowableBuffer(unittest.TestCase):
inst.buf = Buf()
inst.prune()
self.assertEqual(inst.buf.pruned, True)
+ self.buffers_to_close.remove(inst)
def test_prune_with_buf_overflow(self):
inst = self._makeOne()
@@ -376,6 +419,8 @@ class TestOverflowableBuffer(unittest.TestCase):
return True
def __len__(self):
return 5
+ def close(self):
+ pass
buf = DummyBuffer(b'data')
inst.buf = buf
inst.overflowed = True
@@ -411,6 +456,7 @@ class TestOverflowableBuffer(unittest.TestCase):
inst = self._makeOne()
inst.buf = None
self.assertEqual(inst.close(), None) # doesnt raise
+ self.buffers_to_close.remove(inst)
def test_close_withbuf(self):
class Buffer(object):
@@ -421,6 +467,7 @@ class TestOverflowableBuffer(unittest.TestCase):
inst.buf = buf
inst.close()
self.assertTrue(buf.closed)
+ self.buffers_to_close.remove(inst)
class KindaFilelike(object):
@@ -428,7 +475,7 @@ class KindaFilelike(object):
self.bytes = bytes
self.tellresults = tellresults
if close is not None:
- self.close = close
+ self.close = lambda: close
class Filelike(KindaFilelike):
@@ -451,3 +498,6 @@ class DummyBuffer(object):
def prune(self):
pass
+
+ def close(self):
+ pass
diff --git a/waitress/tests/test_functional.py b/waitress/tests/test_functional.py
index 0571ce6..fd86a43 100644
--- a/waitress/tests/test_functional.py
+++ b/waitress/tests/test_functional.py
@@ -75,6 +75,7 @@ class SubprocessTests(object):
self.sock.close()
# This give us one FD back ...
self.queue.close()
+ self.proc.join()
def assertline(self, line, status, reason, version):
v, s, r = (x.strip() for x in line.split(None, 2))
@@ -125,6 +126,7 @@ class SleepyThreadTests(TcpTests, unittest.TestCase):
for proc in procs:
if proc.returncode is not None: # pragma: no cover
proc.terminate()
+ proc.wait()
# the notsleepy response should always be first returned (it sleeps
# for 2 seconds, then returns; the notsleepy response should be
# processed in the meantime)
@@ -193,16 +195,20 @@ class EchoTests(object):
self.assertEqual(response_body, b'')
def test_multiple_requests_with_body(self):
+ orig_sock = self.sock
for x in range(3):
self.sock = self.create_socket()
self.test_send_with_body()
self.sock.close()
+ self.sock = orig_sock
def test_multiple_requests_without_body(self):
+ orig_sock = self.sock
for x in range(3):
self.sock = self.create_socket()
self.test_send_empty_body()
self.sock.close()
+ self.sock = orig_sock
def test_without_crlf(self):
data = "Echo\nthis\r\nplease"
@@ -252,6 +258,8 @@ class EchoTests(object):
responses.append(response)
for response in responses:
response.read()
+ for h in conns:
+ h.close()
def test_chunking_request_without_content(self):
header = tobytes(