NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

support.py (3032B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\distutils\tests\support.py
      2 import os
      3 import shutil
      4 import tempfile
      5 from copy import deepcopy
      6 import warnings
      7 from distutils import log
      8 from distutils.log import DEBUG, INFO, WARN, ERROR, FATAL
      9 from distutils.core import Distribution
     10 
     11 def capture_warnings(func):
     12 
     13     def _capture_warnings(*args, **kw):
     14         with warnings.catch_warnings():
     15             warnings.simplefilter('ignore')
     16             return func(*args, **kw)
     17 
     18     return _capture_warnings
     19 
     20 
     21 class LoggingSilencer(object):
     22 
     23     def setUp(self):
     24         super(LoggingSilencer, self).setUp()
     25         self.threshold = log.set_threshold(log.FATAL)
     26         self._old_log = log.Log._log
     27         log.Log._log = self._log
     28         self.logs = []
     29 
     30     def tearDown(self):
     31         log.set_threshold(self.threshold)
     32         log.Log._log = self._old_log
     33         super(LoggingSilencer, self).tearDown()
     34 
     35     def _log(self, level, msg, args):
     36         if level not in (DEBUG,
     37          INFO,
     38          WARN,
     39          ERROR,
     40          FATAL):
     41             raise ValueError('%s wrong log level' % str(level))
     42         self.logs.append((level, msg, args))
     43 
     44     def get_logs(self, *levels):
     45 
     46         def _format(msg, args):
     47             if len(args) == 0:
     48                 return msg
     49             return msg % args
     50 
     51         return [ _format(msg, args) for level, msg, args in self.logs if level in levels ]
     52 
     53     def clear_logs(self):
     54         self.logs = []
     55 
     56 
     57 class TempdirManager(object):
     58 
     59     def setUp(self):
     60         super(TempdirManager, self).setUp()
     61         self.tempdirs = []
     62 
     63     def tearDown(self):
     64         super(TempdirManager, self).tearDown()
     65         while self.tempdirs:
     66             d = self.tempdirs.pop()
     67             shutil.rmtree(d, os.name in ('nt', 'cygwin'))
     68 
     69     def mkdtemp(self):
     70         d = tempfile.mkdtemp()
     71         self.tempdirs.append(d)
     72         return d
     73 
     74     def write_file(self, path, content = 'xxx'):
     75         if isinstance(path, (list, tuple)):
     76             path = os.path.join(*path)
     77         f = open(path, 'w')
     78         try:
     79             f.write(content)
     80         finally:
     81             f.close()
     82 
     83     def create_dist(self, pkg_name = 'foo', **kw):
     84         tmp_dir = self.mkdtemp()
     85         pkg_dir = os.path.join(tmp_dir, pkg_name)
     86         os.mkdir(pkg_dir)
     87         dist = Distribution(attrs=kw)
     88         return (pkg_dir, dist)
     89 
     90 
     91 class DummyCommand:
     92 
     93     def __init__(self, **kwargs):
     94         for kw, val in kwargs.items():
     95             setattr(self, kw, val)
     96 
     97     def ensure_finalized(self):
     98         pass
     99 
    100 
    101 class EnvironGuard(object):
    102 
    103     def setUp(self):
    104         super(EnvironGuard, self).setUp()
    105         self.old_environ = deepcopy(os.environ)
    106 
    107     def tearDown(self):
    108         for key, value in self.old_environ.items():
    109             if os.environ.get(key) != value:
    110                 os.environ[key] = value
    111 
    112         for key in os.environ.keys():
    113             if key not in self.old_environ:
    114                 del os.environ[key]
    115 
    116         super(EnvironGuard, self).tearDown()