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