ipython/ipython — pull request #2924 by bfroehle (2013-02-12 22:28:15+00:00)
Title: safe_run_module: Silence SystemExit codes 0 and None.

In `safe_execfile` we ignore SystemExit exceptions with codes 0 and 1. We don't do this for `safe_run_module` which leads to the following mismatch of tracebacks between Python and IPython:

```
$ cat > exit0.py
import sys
sys.exit(0)

$ python -m exit0

$ ipython -m exit0
---------------------------------------------------------------------------
SystemExit Traceback (most recent call last)
/usr/lib/python2.7/runpy.pyc in run_module(mod_name, init_globals, run_name, alter_sys)
174 if alter_sys:
175 return _run_module_code(code, init_globals, run_name,
--> 176 fname, loader, pkg_name)
177 else:
178 # Leave the sys module alone

/usr/lib/python2.7/runpy.pyc in _run_module_code(code, init_globals, mod_name, mod_fname, mod_loader, pkg_name)
80 mod_globals = temp_module.module.__dict__
81 _run_code(code, mod_globals, init_globals,
---> 82 mod_name, mod_fname, mod_loader, pkg_name)
83 # Copy the globals of the temporary module, as they
84 # may be cleared when the temporary module goes away

/usr/lib/python2.7/runpy.pyc in _run_code(code, run_globals, init_globals, mod_name, mod_fname, mod_loader, pkg_name)
70 __loader__ = mod_loader,
71 __package__ = pkg_name)
---> 72 exec code in run_globals
73 return run_globals
74

/tmp/exit0.py in ()
1 import sys
----> 2 sys.exit(0)

SystemExit: 0
WARNING: Unknown failure executing module:
```

The attached pull request silences SystemExit exceptions with codes 0 and None.