Author: Tim Felgentreff <timfelgentr...@gmail.com>
Branch: 
Changeset: r145:55b027170225
Date: 2013-03-08 13:40 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/55b027170225/

Log:    fix wrapper tests that should now raise a ProcessSwitch to expect
        that raise and to use wrapped context objects

diff --git a/spyvm/test/test_wrapper.py b/spyvm/test/test_wrapper.py
--- a/spyvm/test/test_wrapper.py
+++ b/spyvm/test/test_wrapper.py
@@ -1,11 +1,14 @@
 import py
-from spyvm import wrapper
-from spyvm import model
+from spyvm import wrapper, model, interpreter, objspace
 from spyvm.error import WrapperException, FatalError
-from spyvm import objspace
+
+from spyvm.test.test_interpreter import new_frame as new_frame_tuple
 
 space = objspace.ObjSpace()
 
+def new_frame():
+    return new_frame_tuple("")[0]
+
 def test_simpleread():
     w_o = model.W_PointersObject(None, 2)
     w = wrapper.Wrapper(space, w_o)
@@ -143,20 +146,20 @@
         assert process.my_list() is space.w_nil
 
     def test_suspend_active(self):
-        process, old_process = self.make_processes(4, 2, space.w_false)
-        w_fake_context = model.W_Object()
-        old_process.suspend(w_fake_context)
+        suspended_context = new_frame()
+        process, old_process = self.make_processes(4, 2, suspended_context)
+        current_context = new_frame()
+        with py.test.raises(interpreter.ProcessSwitch):
+            old_process.suspend(current_context)
         process_list = 
wrapper.scheduler(space).get_process_list(old_process.priority())
         assert process_list.first_link() is process_list.last_link()
         assert process_list.first_link() is space.w_nil
         assert old_process.my_list() is space.w_nil
-        assert old_process.suspended_context() is w_fake_context
+        assert old_process.suspended_context() is current_context
         assert wrapper.scheduler(space).active_process() is process._w_self
 
-    def new_process_consistency(self, process, old_process, w_active_context,
-                                    old_active_context, new_active_context):
+    def new_process_consistency(self, process, old_process, w_active_context):
         scheduler = wrapper.scheduler(space)
-        assert w_active_context is new_active_context
         assert scheduler.active_process() is process._w_self
         priority_list = 
wrapper.scheduler(space).get_process_list(process.priority())
         assert priority_list.first_link() is priority_list.last_link()
@@ -182,23 +185,29 @@
 
 
     def test_activate(self):
-        process, old_process = self.make_processes(4, 2, space.w_false)
-        w_frame = process.activate()
-        self.new_process_consistency(process, old_process, w_frame,
-                                         space.w_true, space.w_false)
+        sleepingcontext = new_frame()
+        process, old_process = self.make_processes(4, 2, sleepingcontext)
+        try:
+            process.activate()
+        except interpreter.ProcessSwitch, e:
+            w_frame = e.s_new_context._w_self
+        self.new_process_consistency(process, old_process, w_frame)
 
     def test_resume(self):
-        process, old_process = self.make_processes(4, 2, space.w_false)
-        w_frame = process.resume(space.w_true)
-        self.new_process_consistency(process, old_process, w_frame,
-                                         space.w_true, space.w_false)
-        self.old_process_consistency(old_process, space.w_true)
+        sleepingcontext = new_frame()
+        currentcontext = new_frame()
+        process, old_process = self.make_processes(4, 2, sleepingcontext)
+        try:
+            process.resume(currentcontext)
+        except interpreter.ProcessSwitch, e:
+            w_frame = e.s_new_context._w_self
+        self.new_process_consistency(process, old_process, w_frame)
+        self.old_process_consistency(old_process, currentcontext)
 
         # Does not reactivate old_process because lower priority
         w_frame = old_process.resume(w_frame)
-        self.new_process_consistency(process, old_process, w_frame,
-                                         space.w_true, space.w_false)
-        self.old_process_consistency(old_process, space.w_true)
+        self.new_process_consistency(process, old_process, w_frame)
+        self.old_process_consistency(old_process, currentcontext)
 
     def test_semaphore_excess_signal(self):
         semaphore = new_semaphore()
@@ -219,8 +228,11 @@
 
     def test_semaphore_wait(self):
         semaphore = new_semaphore()
-        process, old_process = self.make_processes(4, 2, space.w_false)
-        semaphore.wait(space.w_true)
+        suspendedcontext = new_frame()
+        currentcontext = new_frame()
+        process, old_process = self.make_processes(4, 2, suspendedcontext)
+        with py.test.raises(interpreter.ProcessSwitch):
+            semaphore.wait(currentcontext)
         assert semaphore.first_link() is old_process._w_self
         assert wrapper.scheduler(space).active_process() is process._w_self
 
@@ -228,11 +240,14 @@
         semaphore = new_semaphore()
         self.space = space
         semaphore.signal(self)
-        process, old_process = self.make_processes(4, 2, space.w_false)
-        semaphore.wait(space.w_true)
+        suspendedcontext = new_frame()
+        currentcontext = new_frame()
+        process, old_process = self.make_processes(4, 2, suspendedcontext)
+        semaphore.wait(currentcontext)
         assert semaphore.is_empty_list()
         assert wrapper.scheduler(space).active_process() is old_process._w_self
-        semaphore.wait(space.w_true)
+        with py.test.raises(interpreter.ProcessSwitch):
+            semaphore.wait(currentcontext)
         assert semaphore.first_link() is old_process._w_self
         assert wrapper.scheduler(space).active_process() is process._w_self
 
@@ -240,21 +255,28 @@
 
     def test_semaphore_wait_signal(self):
         semaphore = new_semaphore()
-        process, old_process = self.make_processes(4, 2, space.w_false)
+        suspendedcontext = new_frame()
+        currentcontext = new_frame()
+        process, old_process = self.make_processes(4, 2, suspendedcontext)
 
-        semaphore.wait(space.w_true)
+        with py.test.raises(interpreter.ProcessSwitch):
+            semaphore.wait(currentcontext)
+            
         assert wrapper.scheduler(space).active_process() is process._w_self
-        semaphore.signal(space.w_true)
+        semaphore.signal(currentcontext)
         assert wrapper.scheduler(space).active_process() is process._w_self
         process_list = 
wrapper.scheduler(space).get_process_list(old_process.priority())
         assert process_list.remove_first_link_of_list() is old_process._w_self
 
         process.write(2, space.wrap_int(1))
-        old_process.resume(space.w_true)
+        with py.test.raises(interpreter.ProcessSwitch):
+            old_process.resume(currentcontext)
         assert wrapper.scheduler(space).active_process() is old_process._w_self
-        semaphore.wait(space.w_true)
+        with py.test.raises(interpreter.ProcessSwitch):
+            semaphore.wait(currentcontext)
         assert wrapper.scheduler(space).active_process() is process._w_self
-        semaphore.signal(space.w_true)
+        with py.test.raises(interpreter.ProcessSwitch):
+            semaphore.signal(currentcontext)
         assert wrapper.scheduler(space).active_process() is old_process._w_self
 
         process_list = 
wrapper.scheduler(space).get_process_list(process.priority())
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to