[py-svn] r35592 - in py/branch/rsession-cleanup/py/test/rsession: . testing

fijal at codespeak.net fijal at codespeak.net
Mon Dec 11 19:39:21 CET 2006


Author: fijal
Date: Mon Dec 11 19:39:15 2006
New Revision: 35592

Modified:
   py/branch/rsession-cleanup/py/test/rsession/box.py
   py/branch/rsession-cleanup/py/test/rsession/testing/test_boxing.py
Log:
Reviewed semantics to a more friendly async mode.


Modified: py/branch/rsession-cleanup/py/test/rsession/box.py
==============================================================================
--- py/branch/rsession-cleanup/py/test/rsession/box.py	(original)
+++ py/branch/rsession-cleanup/py/test/rsession/box.py	Mon Dec 11 19:39:15 2006
@@ -18,7 +18,7 @@
 from StringIO import StringIO
 
 class SimpleBox(object):
-    def __init__(self, fun, args = [], kwargs = {}, info=None):
+    def __init__(self, fun, args = [], kwargs = {}):
         self.fun = fun
         self.args = args
         self.info = info
@@ -40,17 +40,16 @@
 class FileBox(object):
     count = 0
     
-    def __init__(self, fun, args=None, kwargs=None, info=None):
+    def __init__(self, fun, args=None, kwargs=None):
         if args is None:
             args = []
         if kwargs is None:
             kwargs = {}
         self.fun = fun
-        self.info = info
         self.args = args
         self.kwargs = kwargs
     
-    def run(self):
+    def run(self, continuation=False):
         tempdir = py.test.ensuretemp("box%d" % self.count)
         self.count += 1
         self.tempdir = tempdir
@@ -61,9 +60,10 @@
         nice_level = py.test.remote.nice_level
         pid = os.fork()
         if pid:
-            if self.info is not None:
-                self.info.pid = pid
-            self.parent(pid)
+            if not continuation:
+                self.parent(pid)
+            else:
+                return self.parent, pid
         else:
             try:
                 outcome = self.children(nice_level)

Modified: py/branch/rsession-cleanup/py/test/rsession/testing/test_boxing.py
==============================================================================
--- py/branch/rsession-cleanup/py/test/rsession/testing/test_boxing.py	(original)
+++ py/branch/rsession-cleanup/py/test/rsession/testing/test_boxing.py	Mon Dec 11 19:39:15 2006
@@ -84,22 +84,8 @@
     def box_fun():
         time.sleep(300) # we don't want to last forever here
     
-    b = RealBox(box_fun, info=info)
-    import thread
-    def f():
-        b.run()
-        lock.release()
-    lock = thread.allocate_lock()
-    lock.acquire()
-    thread.start_new_thread(f, ())
-    count = 0
-    while count < 3000:
-        # we don't want to wait forever
-        time.sleep(.1)
-        if hasattr(info, 'pid'):
-            os.kill(info.pid, 15)
-            break
-        count += 1
-    lock.acquire()
-    assert count < 3000
+    b = RealBox(box_fun)
+    par, pid = b.run(continuation=True)
+    os.kill(pid, 15)
+    par(pid)
     assert b.signal == 15



More information about the pytest-commit mailing list