comparison pydershell/pydershell.py @ 20:8dd18f864351

pydershell now exits with a nonzero return code if the script it calls throws an exception.
author Atul Varma <varmaa@toolness.com>
date Mon, 07 Sep 2009 12:59:13 -0700
parents 057260102960
children 1950b0b5bcd8
comparison
equal deleted inserted replaced
19:057260102960 20:8dd18f864351
293 else: 293 else:
294 # It's a primitive value. 294 # It's a primitive value.
295 return jsvalue 295 return jsvalue
296 296
297 def run_script(self, filename): 297 def run_script(self, filename):
298 retval = -1
298 contents = open(filename).read() 299 contents = open(filename).read()
299 cx = self.cx 300 cx = self.cx
300 try: 301 try:
301 cx.evaluate_script(self.root.wrapped_jsobject, contents, 302 cx.evaluate_script(self.root.wrapped_jsobject, contents,
302 filename, 1) 303 filename, 1)
304 retval = 0
303 except pydermonkey.error, e: 305 except pydermonkey.error, e:
304 print format_stack(self.js_stack) 306 print format_stack(self.js_stack)
305 print e.args[1] 307 print e.args[1]
306 except InternalError, e: 308 except InternalError, e:
307 print "An internal error occurred." 309 print "An internal error occurred."
308 traceback.print_tb(e.exc_info[2]) 310 traceback.print_tb(e.exc_info[2])
309 print e.exc_info[1] 311 print e.exc_info[1]
312 return retval
310 313
311 if __name__ == '__main__': 314 if __name__ == '__main__':
312 sandbox = JSSandbox() 315 sandbox = JSSandbox()
313 316
314 def bar(obj): 317 def bar(obj):
321 324
322 def jsprint(string): 325 def jsprint(string):
323 print string 326 print string
324 sandbox.root['print'] = jsprint 327 sandbox.root['print'] = jsprint
325 328
326 sandbox.run_script('test.js') 329 retval = sandbox.run_script('test.js')
327 330
328 sandbox.finish() 331 sandbox.finish()
329 del sandbox 332 del sandbox
330 333
331 import gc 334 import gc
332 gc.collect() 335 gc.collect()
333 if pydermonkey.get_debug_info()['runtime_count']: 336 if pydermonkey.get_debug_info()['runtime_count']:
334 print "WARNING: JS runtime was not destroyed." 337 print "WARNING: JS runtime was not destroyed."
338
339 sys.exit(retval)