##// END OF EJS Templates
Fix in *tests* for recent traceback bug fix....
Fernando Perez -
Show More
@@ -202,29 +202,36 b' class ITaskControllerTestCase(TaskTestBase):'
202 # frames that actually belong to user code.
202 # frames that actually belong to user code.
203 return result.failure.getBriefTraceback().split('\n<string>:')[1:]
203 return result.failure.getBriefTraceback().split('\n<string>:')[1:]
204
204
205 def test_traceback(self):
205
206 def check_traceback(self, cmd, nframes, exception=IOError):
206 """Ensure that we have a traceback object in task failures."""
207 """Ensure that we have a traceback object in task failures."""
207
208
208 self.addEngine(1)
209 self.addEngine(1)
209 cmd = """
210 def fail():
211 raise IOError('failure test')
212
213 result = fail()
214 """
215 t1 = task.StringTask(cmd)
210 t1 = task.StringTask(cmd)
216 d = self.tc.run(t1)
211 d = self.tc.run(t1)
217 d.addCallback(self.tc.get_task_result, block=True)
212 d.addCallback(self.tc.get_task_result, block=True)
218 # Sanity check, that the right exception is raised
213 # Sanity check, that the right exception is raised
219 d.addCallback(lambda tr: self.assertRaises(IOError, tr.raise_exception))
214 d.addCallback(lambda r: self.assertRaises(exception, r.raise_exception))
220 # Rerun the same task, this time we check for the traceback to have two
215 # Rerun the same task, this time we check for the traceback to have the
221 # frames
216 # right number of frames
222 d.addCallback(lambda r: self.tc.run(t1))
217 d.addCallback(lambda r: self.tc.run(t1))
223 d.addCallback(self.tc.get_task_result, block=True)
218 d.addCallback(self.tc.get_task_result, block=True)
224 d.addCallback(self.get_traceback_frames)
219 d.addCallback(self.get_traceback_frames)
225 d.addCallback(lambda frames: self.assertEquals(len(frames), 2))
220 d.addCallback(lambda frames: self.assertEquals(len(frames), nframes))
221 return d
222
223 # Check traceback structure with 2 and 4 frame-deep stacks
224 def test_traceback(self):
225 cmd = """
226 def fail():
227 raise IOError('failure test')
228
229 result = fail()
230 """
231 return self.check_traceback(cmd, 2)
232
226
233
227 # And repeat with a deeper stack, just to be safe
234 def test_traceback2(self):
228 cmd = """
235 cmd = """
229 def boom():
236 def boom():
230 raise IOError('failure test')
237 raise IOError('failure test')
@@ -237,10 +244,4 b' def fail():'
237
244
238 result = fail()
245 result = fail()
239 """
246 """
240 t1 = task.StringTask(cmd)
247 return self.check_traceback(cmd, 4)
241 d.addCallback(lambda r: self.tc.run(t1))
242 d.addCallback(self.tc.get_task_result, block=True)
243 d.addCallback(self.get_traceback_frames)
244 d.addCallback(lambda frames: self.assertEquals(len(frames), 4))
245
246 return d
General Comments 0
You need to be logged in to leave comments. Login now