Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 2569

Show
Ignore:
Timestamp:
01/28/10 13:13:46
Author:
jtate
Message:

Update coverage support to 3.2. Should be a little bit faster.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/cherrypy-3.1.x/cherrypy/lib/covercp.py

    r1814 r2569  
    3131    import StringIO 
    3232 
     33the_coverage = None 
    3334try: 
    34     from coverage import the_coverage as coverage 
     35    from coverage import coverage 
     36    the_coverage = coverage(data_file=localFile) 
    3537    def start(threadid=None): 
    36         coverage.start() 
     38        the_coverage.start() 
     39 
     40    def save(threadid=None): 
     41        the_coverage.save() 
    3742except ImportError: 
    3843    # Setting coverage to None will raise errors 
    3944    # that need to be trapped downstream. 
    40     coverage = None 
     45    the_coverage = None 
    4146     
    4247    import warnings 
     
    4449     
    4550    def start(threadid=None): 
     51        pass 
     52    def save(threadid=None): 
    4653        pass 
    4754start.priority = 20 
     
    188195    return 0 
    189196 
    190 def _show_branch(root, base, path, pct=0, showpct=False, exclude=""): 
     197def _show_branch(root, base, path, pct=0, showpct=False, exclude="", 
     198                 coverage=the_coverage): 
    191199     
    192200    # Show the directory name and any of our children 
     
    202210                   (newpath, urllib.quote_plus(exclude), name) 
    203211         
    204         for chunk in _show_branch(root[name], base, newpath, pct, showpct, exclude): 
     212        for chunk in _show_branch(root[name], base, newpath, pct, showpct, exclude, coverage=coverage): 
    205213            yield chunk 
    206214     
     
    254262            d = d.setdefault(node, {}) 
    255263 
    256 def get_tree(base, exclude): 
     264def get_tree(base, exclude, coverage=the_coverage): 
    257265    """Return covered module names as a nested dict.""" 
    258266    tree = {} 
    259     coverage.get_ready() 
    260     runs = coverage.cexecuted.keys() 
    261     if runs: 
    262         for path in runs: 
    263             if not _skip_file(path, exclude) and not os.path.isdir(path): 
    264                 _graft(path, tree) 
     267    runs = coverage.data.executed_files() 
     268    for path in runs: 
     269        if not _skip_file(path, exclude) and not os.path.isdir(path): 
     270            _graft(path, tree) 
    265271    return tree 
    266272 
    267273class CoverStats(object): 
     274    def __init__(self, coverage): 
     275        self.coverage = coverage 
    268276     
    269277    def index(self): 
     
    294302         
    295303        # Then display the tree 
    296         tree = get_tree(base, exclude
     304        tree = get_tree(base, exclude, self.coverage
    297305        if not tree: 
    298306            yield "<p>No modules covered.</p>" 
    299307        else: 
    300308            for chunk in _show_branch(tree, base, "/", pct, 
    301                                       showpct=='checked', exclude): 
     309                                      showpct=='checked', exclude, coverage=self.coverage): 
    302310                yield chunk 
    303311         
     
    329337     
    330338    def report(self, name): 
    331         coverage.get_ready() 
    332         filename, statements, excluded, missing, _ = coverage.analysis2(name) 
     339        filename, statements, excluded, missing, _ = self.coverage.analysis2(name) 
    333340        pc = _percent(statements, missing) 
    334341        yield TEMPLATE_COVERAGE % dict(name=os.path.basename(name), 
     
    346353 
    347354def serve(path=localFile, port=8080): 
    348     if coverage is None: 
     355    if the_coverage is None: 
    349356        raise ImportError("The coverage module could not be imported.") 
    350     coverage.cache_default = path 
     357    from coverage import coverage 
     358    cov = coverage(data_file = path) 
     359    cov.load() 
    351360     
    352361    import cherrypy 
     
    355364                            'environment': "production", 
    356365                            }) 
    357     cherrypy.quickstart(CoverStats()) 
     366    cherrypy.quickstart(CoverStats(cov)) 
    358367 
    359368if __name__ == "__main__": 
  • branches/cherrypy-3.1.x/cherrypy/test/test.py

    r2483 r2569  
    230230        """ 
    231231        try: 
    232             from coverage import the_coverage as coverage 
    233             c = os.path.join(os.path.dirname(__file__), "../lib/coverage.cache") 
    234             coverage.cache_default = c 
    235             if c and os.path.exists(c): 
    236                 os.remove(c) 
    237             coverage.start() 
     232            from coverage import coverage 
     233            if self.basedir: 
     234                c = os.path.join(self.basedir, 'coverage.cache') 
     235            else: 
     236                c = os.path.join(os.path.dirname(__file__), "../lib/coverage.cache") 
     237            cov = coverage(data_file=c) 
     238            #start coverage before importing cherrypy 
     239            cov.erase() 
     240            cov.start() 
    238241            import cherrypy 
    239242            from cherrypy.lib import covercp 
     243            covercp.the_coverage = cov 
    240244            cherrypy.engine.subscribe('start', covercp.start) 
    241245            cherrypy.engine.subscribe('start_thread', covercp.start) 
    242246        except ImportError: 
    243             coverage = None 
    244         self.coverage = coverage 
     247            cov = None 
     248        self.coverage = cov 
    245249     
    246250    def stop_coverage(self): 
     
    268272        basedir = basedir.lower() 
    269273         
    270         self.coverage.get_ready() 
    271         morfs = [x for x in self.coverage.cexecuted 
     274        self.coverage.load() 
     275        morfs = [x for x in self.coverage.data.executed_files() 
    272276                 if x.lower().startswith(basedir)] 
    273277         

Hosted by WebFaction

Log in as guest/cpguest to create tickets