1 # Copyright 2013 The Chromium Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 from __future__ import print_function 6 7 import logging 8 import os 9 import sys 10 11 def EnableLogging(name): 12 '''Returns the output of the log with |name| to stdout. 13 ''' 14 return _ReplaceLogging(name, lambda message: print(message)) 15 16 def DisableLogging(name): 17 '''Disables the log with |name| for the duration of the decorated function. 18 ''' 19 return _ReplaceLogging(name, lambda _: None) 20 21 def _ReplaceLogging(name, replacement): 22 def decorator(fn): 23 def impl(*args, **optargs): 24 saved = getattr(logging, name) 25 setattr(logging, name, replacement) 26 try: 27 return fn(*args, **optargs) 28 finally: 29 setattr(logging, name, saved) 30 return impl 31 return decorator 32 33 # TODO(kalman): Use this everywhere. A lot of tests are doing this. 34 def ReadFile(name): 35 with open(os.path.join(sys.path[0], os.pardir, os.pardir, name)) as f: 36 return f.read() 37