Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 2.1.1, 2.1.2, and tip

stable thg: reintroduce stderr capture (closes #856)

Changeset 40846ddb2223

Parent 4a3a25bf7513

by Steve Borho

Changes to one file · Browse files at 40846ddb2223 Showing diff from parent 4a3a25bf7513 Diff from another changeset...

Change 1 of 1 Show Entire File thg Stacked
 
70
71
72
73
74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
71
72
 
 
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
@@ -70,5 +70,36 @@
  qtrun(run, ui.ui(), **opts)   sys.exit(1)   -ret = tortoisehg.hgqt.run.dispatch(sys.argv[1:]) -sys.exit(ret) +if 'THGDEBUG' in os.environ or '--profile' in sys.argv: + sys.exit(tortoisehg.hgqt.run.dispatch(sys.argv[1:])) +else: + import cStringIO + mystderr = cStringIO.StringIO() + origstderr = sys.stderr + sys.stderr = mystderr + ret = 0 + try: + ret = tortoisehg.hgqt.run.dispatch(sys.argv[1:]) + sys.stderr = origstderr + stderrout = mystderr.getvalue() + errors = ('Traceback', 'TypeError', 'NameError', 'AttributeError', + 'NotImplementedError') + for l in stderrout.splitlines(): + if l.startswith(errors): + from mercurial import ui + from tortoisehg.hgqt.bugreport import run + from tortoisehg.hgqt.run import qtrun + opts = {} + opts['cmd'] = ' '.join(sys.argv[1:]) + opts['error'] = 'Recoverable error (stderr):\n' + stderrout + opts['nofork'] = True + qtrun(run, ui.ui(), **opts) + break + sys.exit(ret) + except: + if sys.exc_info()[0] not in [SystemExit, KeyboardInterrupt]: + import traceback + sys.stderr = origstderr + traceback.print_exc() + else: + raise SystemExit(ret)