Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: recipe_engine/util.py

Issue 2253943003: Formally define step config, pass to stream. (Closed) Base URL: https://github.com/luci/recipes-py@nest-single-event
Patch Set: Rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright 2013 The LUCI Authors. All rights reserved. 1 # Copyright 2013 The LUCI Authors. All rights reserved.
2 # Use of this source code is governed under the Apache License, Version 2.0 2 # Use of this source code is governed under the Apache License, Version 2.0
3 # that can be found in the LICENSE file. 3 # that can be found in the LICENSE file.
4 4
5 import contextlib 5 import contextlib
6 import functools 6 import functools
7 import os 7 import os
8 import sys 8 import sys
9 import traceback 9 import traceback
10 import urllib 10 import urllib
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 except Exception as e: 155 except Exception as e:
156 if isinstance(e, exc_cls): 156 if isinstance(e, exc_cls):
157 raise 157 raise
158 else: 158 else:
159 # Print right away in case the bug is in the stream_engine. 159 # Print right away in case the bug is in the stream_engine.
160 traceback.print_exc() 160 traceback.print_exc()
161 print '@@@STEP_EXCEPTION@@@' 161 print '@@@STEP_EXCEPTION@@@'
162 162
163 if stream_engine: 163 if stream_engine:
164 # Now do it a little nicer with annotations. 164 # Now do it a little nicer with annotations.
165 with stream_engine.new_step_stream('Recipe engine bug') as stream: 165 with stream_engine.make_step_stream('Recipe engine bug') as stream:
166 stream.set_step_status('EXCEPTION') 166 stream.set_step_status('EXCEPTION')
167 with stream.new_log_stream('exception') as log: 167 with stream.new_log_stream('exception') as log:
168 log.write_split(traceback.format_exc()) 168 log.write_split(traceback.format_exc())
169 stream.add_step_link('file a bug', BUG_LINK) 169 stream.add_step_link('file a bug', BUG_LINK)
170 sys.stdout.flush() 170 sys.stdout.flush()
171 sys.stderr.flush() 171 sys.stderr.flush()
172 os._exit(2) 172 os._exit(2)
173 173
174 174
175 class StringListIO(object): 175 class StringListIO(object):
176 def __init__(self): 176 def __init__(self):
177 self.lines = [StringIO()] 177 self.lines = [StringIO()]
178 178
179 def write(self, s): 179 def write(self, s):
180 while s: 180 while s:
181 i = s.find('\n') 181 i = s.find('\n')
182 if i == -1: 182 if i == -1:
183 self.lines[-1].write(s) 183 self.lines[-1].write(s)
184 break 184 break
185 self.lines[-1].write(s[:i]) 185 self.lines[-1].write(s[:i])
186 self.lines[-1] = self.lines[-1].getvalue() 186 self.lines[-1] = self.lines[-1].getvalue()
187 self.lines.append(StringIO()) 187 self.lines.append(StringIO())
188 s = s[i+1:] 188 s = s[i+1:]
189 189
190 def close(self): 190 def close(self):
191 if not isinstance(self.lines[-1], basestring): 191 if not isinstance(self.lines[-1], basestring):
192 self.lines[-1] = self.lines[-1].getvalue() 192 self.lines[-1] = self.lines[-1].getvalue()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698