Mercurial > scratch
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) |