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

Side by Side Diff: appengine/components/tool_support/local_app.py

Issue 1390773002: Add an assert to ensure UTF-8 locale when handling file paths. (Closed) Base URL: git@github.com:luci/luci-py.git@master
Patch Set: More fixes Created 5 years, 2 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 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2014 The Swarming Authors. All rights reserved. 2 # Copyright 2014 The Swarming Authors. All rights reserved.
3 # Use of this source code is governed by the Apache v2.0 license that can be 3 # Use of this source code is governed by the Apache v2.0 license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Tools to control application running via dev_appserver.py. 6 """Tools to control application running via dev_appserver.py.
7 7
8 Useful for smoke and integration tests. 8 Useful for smoke and integration tests.
9 """ 9 """
10 10
11 import collections 11 import collections
12 import cookielib 12 import cookielib
13 import ctypes 13 import ctypes
14 import json 14 import json
15 import logging 15 import logging
16 import os 16 import os
17 import shutil 17 import shutil
18 import socket 18 import socket
19 import subprocess 19 import subprocess
20 import sys 20 import sys
21 import tempfile 21 import tempfile
22 import time 22 import time
23 import urllib2 23 import urllib2
24 24
25 from . import gae_sdk_utils 25 from . import gae_sdk_utils
26 26
27 from utils import file_path
28
27 29
28 def terminate_with_parent(): 30 def terminate_with_parent():
29 """Sets up current process to receive SIGTERM when its parent dies. 31 """Sets up current process to receive SIGTERM when its parent dies.
30 32
31 Works on Linux only. On Win and Mac it's noop. 33 Works on Linux only. On Win and Mac it's noop.
32 """ 34 """
33 try: 35 try:
34 libc = ctypes.CDLL('libc.so.6') 36 libc = ctypes.CDLL('libc.so.6')
35 except OSError: 37 except OSError:
36 return 38 return
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 while self._proc.poll() is None and time.time() < deadline: 203 while self._proc.poll() is None and time.time() < deadline:
202 time.sleep(0.05) 204 time.sleep(0.05)
203 exit_code = self._proc.poll() 205 exit_code = self._proc.poll()
204 if exit_code is None: 206 if exit_code is None:
205 logging.error('Leaking PID %d', self._proc.pid) 207 logging.error('Leaking PID %d', self._proc.pid)
206 finally: 208 finally:
207 with open(os.path.join(self._temp_root, 'dev_appserver.log'), 'r') as f: 209 with open(os.path.join(self._temp_root, 'dev_appserver.log'), 'r') as f:
208 self._log = f.read() 210 self._log = f.read()
209 if not leak: 211 if not leak:
210 try: 212 try:
211 shutil.rmtree(self._temp_root) 213 file_path.rmtree(self._temp_root)
212 except OSError as e: 214 except OSError as e:
213 # Log but ignore it to not mask other errors. 215 # Log but ignore it to not mask other errors.
214 print >> sys.stderr, str(e) 216 print >> sys.stderr, str(e)
215 self._client = None 217 self._client = None
216 self._port = None 218 self._port = None
217 self._proc = None 219 self._proc = None
218 self._serving = False 220 self._serving = False
219 self._temp_root = None 221 self._temp_root = None
220 return exit_code 222 return exit_code
221 223
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 295
294 It only works with apps that use 'auth' component. 296 It only works with apps that use 'auth' component.
295 """ 297 """
296 if self._xsrf_token is None: 298 if self._xsrf_token is None:
297 resp = self.json_request( 299 resp = self.json_request(
298 '/auth/api/v1/accounts/self/xsrf_token', 300 '/auth/api/v1/accounts/self/xsrf_token',
299 body={}, 301 body={},
300 headers={'X-XSRF-Token-Request': '1'}) 302 headers={'X-XSRF-Token-Request': '1'})
301 self._xsrf_token = resp.body['xsrf_token'].encode('ascii') 303 self._xsrf_token = resp.body['xsrf_token'].encode('ascii')
302 return self._xsrf_token 304 return self._xsrf_token
OLDNEW
« no previous file with comments | « appengine/components/tests/endpoints_smoke_test.py ('k') | appengine/swarming/local_smoke_test.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698