[py-svn] r35337 - in py/dist/py/test/rsession: . testing
fijal at codespeak.net
fijal at codespeak.net
Tue Dec 5 21:20:27 CET 2006
Author: fijal
Date: Tue Dec 5 21:20:23 2006
New Revision: 35337
Modified:
py/dist/py/test/rsession/testing/test_web.py
py/dist/py/test/rsession/web.py
Log:
Added stuff which prevents strange errors when reloading and closing browser window (thx samuele and armin).
Modified: py/dist/py/test/rsession/testing/test_web.py
==============================================================================
--- py/dist/py/test/rsession/testing/test_web.py (original)
+++ py/dist/py/test/rsession/testing/test_web.py Tue Dec 5 21:20:23 2006
@@ -89,4 +89,3 @@
result = mq.get(4567)
assert result == 2
assert mq.empty()
-
Modified: py/dist/py/test/rsession/web.py
==============================================================================
--- py/dist/py/test/rsession/web.py (original)
+++ py/dist/py/test/rsession/web.py Tue Dec 5 21:20:23 2006
@@ -11,6 +11,7 @@
import Queue
import os
import sys
+import socket
import py
from py.__.test.rsession.rsession import RSession, session_options
@@ -87,6 +88,13 @@
q.put(item)
finally:
self._lock.release()
+
+ def _del(self, sessid):
+ self._lock.acquire()
+ try:
+ del self._session_queues[sessid]
+ finally:
+ self._lock.release()
def get(self, sessid):
self._lock.acquire()
@@ -178,6 +186,18 @@
return json.write(sessid)
show_sessid = described(retval="aa")(show_sessid)
+ def failed(self, **kwargs):
+ if not 'sessid' in kwargs:
+ return
+ sessid = kwargs['sessid']
+ to_del = -1
+ for num, i in enumerate(self._sessids):
+ if i == sessid:
+ to_del = num
+ if to_del != -1:
+ del self._sessids[to_del]
+ self.pending_events._del(kwargs['sessid'])
+
def show_all_statuses(self, sessid=-1):
retlist = [self.show_status_change(sessid)]
while not self.pending_events.empty_queue(sessid):
@@ -321,8 +341,12 @@
if exec_meth is None:
self.send_error(404, "File %s not found" % path)
else:
- self.serve_data('text/json',
+ try:
+ self.serve_data('text/json',
exec_meth(**self.parse_args(getargs)))
+ except socket.error:
+ # client happily disconnected
+ exported_methods.failed(**self.parse_args(getargs))
else:
method_to_call()
More information about the pytest-commit
mailing list