[Twisted-Python] Re: [Twisted-commits] r18220 - Make tests clean up after themselves

Jean-Paul Calderone exarkun at divmod.com
Fri Sep 22 08:58:36 EDT 2006


On Thu, 21 Sep 2006 21:32:47 -0600, Jonathan Lange <jml at wolfwood.twistedmatrix.com> wrote:
>Author: jml
>Date: Thu Sep 21 21:32:47 2006
>New Revision: 18220
>
>Modified:
>   trunk/twisted/web/test/test_distrib.py
>   trunk/twisted/web2/test/test_static.py
>   trunk/twisted/words/test/test_service.py
>Log:
>Make tests clean up after themselves
>
> * Fixes #1883
> * Author: jml
> * Reviewer: MFen
>
>Although not apparent to the naked eye, these tests previous did not
>correctly clean up after themselves. Instead, they relied on a couple
>of spins of the reactor to do their cleaning for them. This has been
>corrected.
>
>
>
>Modified: trunk/twisted/web/test/test_distrib.py
>==============================================================================
>--- trunk/twisted/web/test/test_distrib.py	(original)
>+++ trunk/twisted/web/test/test_distrib.py	Thu Sep 21 21:32:47 2006
>@@ -15,16 +15,26 @@
>                 self.logFile.close()
>             del self.logFile
>
>+
>+class PBServerFactory(pb.PBServerFactory):

Docstring?

>+    def buildProtocol(self, addr):
>+        self.proto = pb.PBServerFactory.buildProtocol(self, addr)
>+        return self.proto
>+
>+
> class DistribTest(unittest.TestCase):
>     port1 = None
>     port2 = None
>     sub = None
>
>     def tearDown(self):

Docstring?

>+        dl = [defer.Deferred(), defer.Deferred()]
>+        self.f1.proto.notifyOnDisconnect(lambda: dl[0].callback(None))
>         if self.sub is not None:
>+            self.sub.publisher.broker.notifyOnDisconnect(
>+                lambda: dl[1].callback(None))
>             self.sub.publisher.broker.transport.loseConnection()
>         http._logDateTimeStop()
>-        dl = []
>         if self.port1 is not None:
>             dl.append(self.port1.stopListening())
>         if self.port2 is not None:
>@@ -36,8 +46,8 @@
>         r1 = resource.Resource()
>         r1.putChild("there", static.Data("root", "text/plain"))
>         site1 = server.Site(r1)
>-        f1 = pb.PBServerFactory(distrib.ResourcePublisher(site1))
>-        self.port1 = reactor.listenTCP(0, f1)
>+        self.f1 = PBServerFactory(distrib.ResourcePublisher(site1))
>+        self.port1 = reactor.listenTCP(0, self.f1)
>         self.sub = distrib.ResourceSubscription("127.0.0.1",
>                                                 self.port1.getHost().port)
>         r2 = resource.Resource()
>
>Modified: trunk/twisted/web2/test/test_static.py
>==============================================================================
>--- trunk/twisted/web2/test/test_static.py	(original)
>+++ trunk/twisted/web2/test/test_static.py	Thu Sep 21 21:32:47 2006
>@@ -11,7 +11,6 @@
>         self.text = "Hello, World\n"
>         self.data = static.Data(self.text, "text/plain")
>
>-
>     def test_dataState(self):
>         """
>         Test the internal state of the Data object
>@@ -42,7 +41,6 @@
>                          http_headers.MimeType("text", "plain"))
>         def checkStream(data):
>             self.assertEquals(str(data), self.text)
>-
>         return stream.readStream(iweb.IResponse(self.data.render(None)).stream,
>                                  checkStream)
>
>@@ -58,7 +56,8 @@
>                               maxBytes=16)
>         self.root.addSlash = True
>
>-    def uploadFile(self, fieldname, filename, mimetype, content, resrc=None, host='foo', path='/'):
>+    def uploadFile(self, fieldname, filename, mimetype, content, resrc=None,
>+                   host='foo', path='/'):
>         if not resrc:
>             resrc = self.root
>
>@@ -102,32 +101,33 @@
>         return d
>
>     def test_enforcesMaxBytes(self):

Docstring?

>-        return self.assertInResponse(self.uploadFile('FileNameOne', 'myfilename',
>-                                         'text/html', 'X'*32),
>-                              (200, {}, 'exceeds maximum length'))
>+        return self.assertInResponse(
>+            self.uploadFile('FileNameOne', 'myfilename', 'text/html', 'X'*32),
>+            (200, {}, 'exceeds maximum length'))
>
>     def test_enforcesMimeType(self):

Docstring?

>-        return self.assertInResponse(self.uploadFile('FileNameOne', 'myfilename',
>-                                              'application/x-python', 'X'),
>-                              (200, {}, 'type not allowed'))
>+        return self.assertInResponse(
>+            self.uploadFile('FileNameOne', 'myfilename',
>+                            'application/x-python', 'X'),
>+            (200, {}, 'type not allowed'))
>
>     def test_invalidField(self):

Docstring?

>-        return self.assertInResponse(self.uploadFile('NotARealField', 'myfilename',
>-                                              'text/html', 'X'),
>-                              (200, {}, 'not a valid field'))
>+        return self.assertInResponse(

Docstring?

>+            self.uploadFile('NotARealField', 'myfilename', 'text/html', 'X'),
>+            (200, {}, 'not a valid field'))
>
>     def test_reportFileSave(self):

Docstring?

>-        return self.assertInResponse(self.uploadFile('FileNameOne', 'myfilename',
>-                                              'text/plain',
>-                                              'X'),
>-                              (200, {}, 'Saved file'))
>+        return self.assertInResponse(
>+            self.uploadFile('FileNameOne', 'myfilename', 'text/plain', 'X'),
>+            (200, {}, 'Saved file'))
>
>     def test_compareFileContents(self):

Docstring?

>         def gotFname(fname):
>             contents = file(fname, 'r').read()
>             self.assertEquals(contents, 'Test contents')
>-
>-        return self.uploadFile('FileNameOne', 'myfilename', 'text/plain',
>-                               'Test contents').addCallback(
>-            self.fileNameFromResponse
>-            ).addCallback(gotFname)
>+
>+        d = self.uploadFile('FileNameOne', 'myfilename', 'text/plain',
>+                            'Test contents')
>+        d.addCallback(self.fileNameFromResponse)
>+        d.addCallback(gotFname)
>+        return d
>
>Modified: trunk/twisted/words/test/test_service.py
>==============================================================================
>--- trunk/twisted/words/test/test_service.py	(original)
>+++ trunk/twisted/words/test/test_service.py	Thu Sep 21 21:32:47 2006
>@@ -875,21 +875,26 @@
>         self.portal = portal.Portal(
>             self.realm, [self.checker])
>         self.serverFactory = pb.PBServerFactory(self.portal)
>+        self.serverFactory.protocol = self._protocolFactory
>         self.serverFactory.unsafeTracebacks = True
>         self.clientFactory = pb.PBClientFactory()
>         self.clientFactory.unsafeTracebacks = True
>-
>         self.serverPort = reactor.listenTCP(0, self.serverFactory)
>         self.clientConn = reactor.connectTCP(
>             '127.0.0.1',
>             self.serverPort.getHost().port,
>             self.clientFactory)
>
>+    def _protocolFactory(self, *args, **kw):

Docstring?

>+        self._serverProtocol = pb.Broker(0)
>+        return self._serverProtocol
>
>     def tearDown(self):

Docstring?

>+        d3 = Deferred()
>+        self._serverProtocol.notifyOnDisconnect(lambda: d3.callback(None))
>         return DeferredList([
>             maybeDeferred(self.serverPort.stopListening),
>-            maybeDeferred(self.clientConn.disconnect)])
>+            maybeDeferred(self.clientConn.disconnect), d3])
>
>     def _loggedInAvatar(self, name, password, mind):
>         creds = credentials.UsernamePassword(name, password)
>
>_______________________________________________
>Twisted-commits mailing list
>Twisted-commits at twistedmatrix.com
>http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-commits
>




More information about the Twisted-Python mailing list