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

Changeset 474

Show
Ignore:
Timestamp:
07/16/05 21:37:15
Author:
fumanchu
Message:

1. Removed log() before config read.
2. Moved some things around in the test suite to make them easier to reuse by CP apps.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/config.py

    r465 r474  
    6262reset() 
    6363 
    64 def update(updateMap=None, file=None, override = True): 
     64def update(updateMap=None, file=None, override=True): 
    6565    """ Update the configMap from a dictionary or a config file. 
    6666        If override is True then the update will not modify 
     
    158158        that raises an exception if the file cannot be read 
    159159    """ 
     160     
    160161    def optionxform(self, optionstr): 
    161162        return optionstr 
     163     
    162164    def read(self, filenames): 
    163165        if isinstance(filenames, basestring): 
     
    172174            fp.close() 
    173175 
    174 def _load(configFile = None, override = True): 
    175     """ Convert an INI file to a dictionary. If override is false 
    176         Values allready in the configMap will not be changed. 
     176def _load(configFile, override=True): 
     177    """ Convert an INI file to a dictionary. If override is false, 
     178        values already in the configMap will not be changed. 
    177179    """ 
    178180     
     
    180182    configParser = CaseSensitiveConfigParser() 
    181183    if hasattr(configFile, 'read'): 
    182         cherrypy.log("Reading infos from configFile stream", 'CONFIG') 
    183184        configParser.readfp(configFile) 
    184185    else: 
    185         cherrypy.log("Reading infos from configFile: %s" % configFile, 'CONFIG') 
    186186        configParser.read(configFile) 
    187187     
  • trunk/cherrypy/test/helper.py

    r471 r474  
    2828 
    2929import os, os.path 
     30import sys 
    3031import time 
    3132import socket 
     
    116117        else: 
    117118            webtest.WebCase.getPage(self, url, headers, method, body) 
     119 
     120CPTestLoader = webtest.ReloadingTestLoader() 
     121CPTestRunner = webtest.TerseTestRunner(verbosity=2) 
     122 
     123 
     124def report_coverage(coverage, basedir=None): 
     125    if not basedir: 
     126        localDir = os.path.dirname(__file__) 
     127        basedir = os.path.normpath(os.path.join(os.getcwd(), localDir, '../')) 
     128     
     129    coverage.get_ready() 
     130    morfs = [x for x in coverage.cexecuted if x.startswith(basedir.lower())] 
     131     
     132    total_statements = 0 
     133    total_executed = 0 
     134     
     135    print 
     136    print "CODE COVERAGE (this might take a while)", 
     137    for morf in morfs: 
     138        sys.stdout.write(".") 
     139        sys.stdout.flush() 
     140        name = os.path.split(morf)[1] 
     141        try: 
     142            _, statements, _, missing, readable  = coverage.analysis2(morf) 
     143            n = len(statements) 
     144            m = n - len(missing) 
     145            total_statements = total_statements + n 
     146            total_executed = total_executed + m 
     147        except KeyboardInterrupt: 
     148            raise 
     149        except: 
     150            # No, really! We truly want to ignore any other errors. 
     151            pass 
     152     
     153    pc = 100.0 
     154    if total_statements > 0: 
     155        pc = 100.0 * total_executed / total_statements 
     156     
     157    print ("\nTotal: %s Covered: %s Percent: %2d%%" 
     158           % (total_statements, total_executed, pc)) 
     159 
     160 
     161def run_test_suite(moduleNames, server, conf): 
     162    if isinstance(conf, basestring): 
     163        # assume it's a filename 
     164        cherrypy.config.update(file=conf) 
     165    else: 
     166        cherrypy.config.update(conf.copy()) 
     167    startServer(server) 
     168    for testmod in moduleNames: 
     169        # Must run each module in a separate suite, 
     170        # because each module uses/overwrites cherrypy globals. 
     171        cherrypy.config.reset() 
     172        if isinstance(conf, basestring): 
     173            cherrypy.config.update(file=conf) 
     174        else: 
     175            cherrypy.config.update(conf.copy()) 
     176        cherrypy._cputil._cpInitDefaultFilters() 
     177         
     178        suite = CPTestLoader.loadTestsFromName(testmod) 
     179        CPTestRunner.run(suite) 
     180    stopServer() 
     181 
     182 
     183def testmain(server=None, conf={}): 
     184    if isinstance(conf, basestring): 
     185        # assume it's a filename 
     186        cherrypy.config.update(file=conf) 
     187    else: 
     188        cherrypy.config.update(conf.copy()) 
     189     
     190    startServer(server) 
     191    try: 
     192        cherrypy._cputil._cpInitDefaultFilters() 
     193        webtest.main() 
     194    finally: 
     195        # webtest.main == unittest.main, which raises SystemExit, 
     196        # so put stopServer in a finally clause 
     197        stopServer() 
     198 
  • trunk/cherrypy/test/test.py

    r467 r474  
    3636    from sets import Set as set 
    3737 
    38  
    39 CPTestLoader = webtest.ReloadingTestLoader() 
    40 CPTestRunner = webtest.TerseTestRunner(verbosity=2) 
    41  
    42  
    43 def report_coverage(coverage): 
    44     localDir = os.path.dirname(__file__) 
    45     curpath = os.path.normpath(os.path.join(os.getcwd(), localDir)) 
    46     basedir = os.path.normpath(os.path.join(curpath, '../')) 
    47      
    48     coverage.get_ready() 
    49     morfs = [x for x in coverage.cexecuted if x.startswith(basedir.lower())] 
    50      
    51     total_statements = 0 
    52     total_executed = 0 
    53      
    54     print 
    55     print "CODE COVERAGE (this might take a while)", 
    56     for morf in morfs: 
    57         sys.stdout.write(".") 
    58         sys.stdout.flush() 
    59         name = os.path.split(morf)[1] 
    60         try: 
    61             _, statements, _, missing, readable  = coverage.analysis2(morf) 
    62             n = len(statements) 
    63             m = n - len(missing) 
    64             total_statements = total_statements + n 
    65             total_executed = total_executed + m 
    66         except KeyboardInterrupt: 
    67             raise 
    68         except: 
    69             pass 
    70      
    71     pc = 100.0 
    72     if total_statements > 0: 
    73         pc = 100.0 * total_executed / total_statements 
    74      
    75     print ("\nTotal: %s Covered: %s Percent: %2d%%" 
    76            % (total_statements, total_executed, pc)) 
    77  
    78  
    79 def run_test_suite(moduleNames, server, conf): 
    80     cherrypy.config.update({'global': conf.copy()}) 
    81     helper.startServer(server) 
    82     for testmod in moduleNames: 
    83         # Must run each module in a separate suite, 
    84         # because each module uses/overwrites cherrypy globals. 
    85         cherrypy.config.reset() 
    86         cherrypy.config.update({'global': conf.copy()}) 
    87         cherrypy._cputil._cpInitDefaultFilters() 
    88         suite = CPTestLoader.loadTestsFromName(testmod) 
    89          
    90         CPTestRunner.run(suite) 
    91     helper.stopServer() 
    9238 
    9339testDict = { 
     
    10652} 
    10753 
     54 
    10855def help(): 
    10956    print """CherryPy Test Program 
     
    167114 
    168115 
    169 def runTests(servers, testList, cover=False, profile=False): 
     116def main(servers, testList, cover=False, profile=False): 
    170117    # Place our current directory's parent (cherrypy/) at the beginning 
    171118    # of sys.path, so that all imports are from our current directory. 
     
    175122     
    176123    if cover: 
    177         # Start the coverage tool before importing cherrypy, so module-level 
    178         # global statements are covered. 
     124        # Start the coverage tool before importing cherrypy, 
     125        # so module-level global statements are covered. 
    179126        try: 
    180127            from coverage import the_coverage as coverage 
     
    187134            coverage = None 
    188135     
    189     global cherrypy, helper 
     136    import cherrypy 
    190137    print "Python version used to run this test script:", sys.version.split()[0] 
    191     try: 
    192         import cherrypy 
    193         from cherrypy.test import helper 
    194     except ImportError: 
    195         print "Error: couldn't find CherryPy !" 
    196         os._exit(-1) 
    197138    print "CherryPy version", cherrypy.__version__ 
    198139    print 
     140     
     141    from cherrypy.test import helper 
    199142     
    200143    class NotReadyTest(helper.CPWebCase): 
     
    205148            cherrypy.root = Root() 
    206149            self.assertRaises(cherrypy.NotReady, self.getPage, "/") 
    207     CPTestRunner.run(NotReadyTest("testNotReadyError")) 
    208      
    209     server_conf = {'server.socketHost': helper.HOST, 
    210                    'server.socketPort': helper.PORT, 
    211                    'server.threadPool': 10, 
    212                    'server.logToScreen': False, 
    213                    'server.environment': "production", 
     150    helper.CPTestRunner.run(NotReadyTest("testNotReadyError")) 
     151     
     152    server_conf = {'global': {'server.socketHost': helper.HOST, 
     153                              'server.socketPort': helper.PORT, 
     154                              'server.threadPool': 10, 
     155                              'server.logToScreen': False, 
     156                              'server.environment': "production", 
     157                              } 
    214158                   } 
    215159     
     
    223167        print 
    224168        print "Running testList: Serverless" 
    225         run_test_suite(testList, None, server_conf) 
     169        helper.run_test_suite(testList, None, server_conf) 
    226170     
    227171    if 'native' in servers: 
    228172        print 
    229173        print "Running testList: Native HTTP Server" 
    230         run_test_suite(testList, "cherrypy._cphttpserver.embedded_server", server_conf) 
     174        helper.run_test_suite(testList, "cherrypy._cphttpserver.embedded_server", server_conf) 
    231175     
    232176    if 'wsgi' in servers: 
    233177        print 
    234178        print "Running testList: Native WSGI Server" 
    235         run_test_suite(testList, "cherrypy._cpwsgi.WSGIServer", server_conf) 
     179        helper.run_test_suite(testList, "cherrypy._cpwsgi.WSGIServer", server_conf) 
    236180     
    237181    if profile or cover: 
     
    246190        if coverage: 
    247191            coverage.save() 
    248             report_coverage(coverage) 
     192            helper.report_coverage(coverage) 
    249193            print "run /cherrypy/lib/covercp.py as a script to serve coverage results on port 8080" 
    250194     
     
    261205        print argError 
    262206    else: 
    263         runTests(servers, testList, cover, profile) 
     207        main(servers, testList, cover, profile) 
  • trunk/cherrypy/test/test_baseurl_filter.py

    r471 r474  
    4646}) 
    4747 
    48 import unittest 
    4948import helper 
    5049 
     
    5756 
    5857if __name__ == '__main__': 
    59     cherrypy.server.start(initOnly=True) 
    60     unittest.main() 
     58    helper.testmain() 
    6159 
  • trunk/cherrypy/test/test_cache_filter.py

    r471 r474  
    5151 
    5252 
    53 import unittest 
    5453import helper 
    5554 
     
    6261 
    6362if __name__ == '__main__': 
    64     cherrypy.server.start(initOnly=True) 
    65     unittest.main() 
     63    helper.testmain() 
  • trunk/cherrypy/test/test_combinedfilters.py

    r471 r474  
    4848    } 
    4949}) 
    50 cherrypy.server.start(initOnly=True) 
    5150 
    52 import unittest 
    5351import helper 
    5452 
     
    6765 
    6866if __name__ == '__main__': 
    69     unittest.main() 
     67    helper.testmain() 
  • trunk/cherrypy/test/test_core.py

    r471 r474  
    230230    }, 
    231231}) 
    232 cherrypy.server.start(initOnly=True) 
    233  
    234 import unittest 
     232 
    235233import helper 
    236234import os 
     
    437435 
    438436if __name__ == '__main__': 
    439     unittest.main() 
     437    helper.testmain() 
  • trunk/cherrypy/test/test_decodingencoding_filter.py

    r471 r474  
    4545    } 
    4646}) 
    47 cherrypy.server.start(initOnly=True) 
    4847 
    4948 
    50 import unittest 
    5149import helper 
    5250 
     
    6159 
    6260if __name__ == "__main__": 
    63     unittest.main() 
     61    helper.testmain() 
  • trunk/cherrypy/test/test_gzip_filter.py

    r471 r474  
    5151}) 
    5252 
    53 cherrypy.server.start(initOnly=True) 
    5453 
    55  
    56 import unittest 
    5754import helper 
    5855 
     
    8178 
    8279if __name__ == "__main__": 
    83     unittest.main() 
    84  
     80    helper.testmain() 
  • trunk/cherrypy/test/test_logdebuginfo_filter.py

    r471 r474  
    4848    } 
    4949}) 
    50 cherrypy.server.start(initOnly=True) 
    5150 
    5251 
    53 import unittest 
    5452import helper 
    5553 
     
    6563 
    6664if __name__ == "__main__": 
    67     unittest.main() 
     65    helper.testmain() 
  • trunk/cherrypy/test/test_objectmapping.py

    r471 r474  
    9999    } 
    100100}) 
    101 cherrypy.server.start(initOnly=True) 
    102101 
    103102 
    104 import unittest 
    105103import helper 
    106104 
     
    144142 
    145143if __name__ == "__main__": 
    146     unittest.main() 
    147  
     144    helper.testmain() 
  • trunk/cherrypy/test/test_session_filter.py

    r471 r474  
    199199        pass 
    200200     
    201     cherrypy.server.start(initOnly = True) 
    202     unittest.main() 
     201    helper.testmain() 
  • trunk/cherrypy/test/test_static_filter.py

    r471 r474  
    4848    } 
    4949}) 
    50 cherrypy.server.start(initOnly=True) 
    5150 
    52  
    53 import unittest 
    5451import helper 
    5552 
     
    7067 
    7168if __name__ == "__main__": 
    72     unittest.main() 
     69    helper.testmain() 
  • trunk/cherrypy/test/test_tutorials.py

    r471 r474  
    180180 
    181181if __name__ == "__main__": 
    182     unittest.main() 
    183  
     182    helper.testmain() 
  • trunk/cherrypy/test/test_virtualhost_filter.py

    r471 r474  
    4343    }, 
    4444}) 
    45 cherrypy.server.start(initOnly=True) 
    4645 
    47  
    48 import unittest 
    4946import helper 
    5047 
     
    5754 
    5855if __name__ == "__main__": 
    59     unittest.main() 
     56    helper.testmain() 

Hosted by WebFaction

Log in as guest/cpguest to create tickets