diff options
author | Bert JW Regeer <xistence@0x58.com> | 2019-04-11 22:06:39 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-11 22:06:39 +0100 |
commit | 3030b4ac084014192be3fb6be43578d9ade855df (patch) | |
tree | d88689aae27163e60aeabe9ade1c431af1ac5a47 | |
parent | bf008d7c107c2f9f03fc088bd3af4fa94ad9ad10 (diff) | |
parent | 827e16d4095aa207164e7e6227cbb350b6cba160 (diff) | |
download | waitress-3030b4ac084014192be3fb6be43578d9ade855df.tar.gz |
Merge pull request #251 from Pylons/resource-warnings
fix resource warnings
-rw-r--r-- | waitress/tests/fixtureapps/filewrapper.py | 3 | ||||
-rw-r--r-- | waitress/tests/test_buffers.py | 60 | ||||
-rw-r--r-- | waitress/tests/test_functional.py | 8 |
3 files changed, 65 insertions, 6 deletions
diff --git a/waitress/tests/fixtureapps/filewrapper.py b/waitress/tests/fixtureapps/filewrapper.py index d4e9a51..f38c606 100644 --- a/waitress/tests/fixtureapps/filewrapper.py +++ b/waitress/tests/fixtureapps/filewrapper.py @@ -58,7 +58,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 25414ef..f3170b9 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( |