Changeset 1832


Ignore:
Timestamp:
06/22/10 17:24:11 (4 years ago)
Author:
wehart
Message:

Augmenting the command-line API of main(), which allows this to replace unittest.main()
in test scripts.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pyutilib.testdriver/trunk/pyutilib/testdriver/driver.py

    r1824 r1832  
    2020import pyutilib.th as unittest 
    2121import copy 
     22import types 
    2223try: 
    2324    from nose.tools import nottest 
     
    129130    _globals[suite]._options[None] = options 
    130131    setattr(_globals[suite],'_test_driver', _globals['test_driver']) 
     132    setattr(_globals[suite],'suite_categories', config['suites'][suite].get('categories',[])) 
    131133    # 
    132134    # Create test functions 
     
    167169 
    168170 
    169 def main(): 
     171def main(_globals=None): 
    170172 
    171173    parser = optparse.OptionParser() 
     
    181183        dest='verbose', 
    182184        default=False, 
    183         help='Set flag for verbose output') 
     185        help='Verbose output') 
    184186 
    185187    parser.add_option('-q','--quiet', 
     
    187189        dest='quiet', 
    188190        default=False, 
    189         help='Set flag for quiet output') 
    190  
    191     parser.add_option('--category', 
     191        help='Minimal output') 
     192 
     193    parser.add_option('-f','--failfast', 
     194        action='store_true', 
     195        dest='failfast', 
     196        default=False, 
     197        help='Stop on first failure') 
     198 
     199    parser.add_option('-c','--catch', 
     200        action='store_true', 
     201        dest='catch', 
     202        default=False, 
     203        help='Catch control-C and display results') 
     204 
     205    parser.add_option('-b','--buffer', 
     206        action='store_true', 
     207        dest='buffer', 
     208        default=False, 
     209        help='Buffer stdout and stderr durring test runs') 
     210 
     211    parser.add_option('--cat', '--category', 
    192212        action='store', 
    193213        dest='category', 
     
    195215        help='Define the category of the test suite that is executed') 
    196216    
     217    parser.add_option('--help-suites', 
     218        action='store_true', 
     219        dest='help_suites', 
     220        default=False, 
     221        help='Print the list of test suites that can be executed') 
     222    
     223    parser.add_option('--help-categories', 
     224        action='store_true', 
     225        dest='help_categories', 
     226        default=False, 
     227        help='Print the list of test suite categories that can be specified') 
     228    
    197229    _options, args = parser.parse_args(sys.argv) 
    198  
    199     if len(args) == 1: 
    200         parser.print_help() 
    201         return 
     230    if _globals is None: 
     231        _globals=globals() 
    202232 
    203233    options = Options() 
     
    207237    options.category = _options.category 
    208238    for file in args[1:]: 
    209         create_test_suites(filename=file, _globals=globals(), options=options) 
     239        create_test_suites(filename=file, _globals=_globals, options=options) 
     240 
     241    if _options.help_suites and not _globals is None: 
     242        suites = [] 
     243        for key in _globals.keys(): 
     244            if type(_globals[key]) is types.TypeType: 
     245                suites.append(key) 
     246        print "" 
     247        if len(suites) > 0: 
     248            print "Test suites defined in %s:" % os.path.basename(sys.argv[0]) 
     249            for suite in suites: 
     250                print "    "+suite 
     251        else: 
     252            print "No test suites defined in %s!" % os.path.basename(sys.argv[0]) 
     253        print "" 
     254        return 
     255    if _options.help_categories and not _globals is None: 
     256        # TBD 
     257        return 
    210258 
    211259    tmp = [args[0]] 
    212     if options.quiet: 
     260    if _options.quiet: 
    213261        tmp.append('-q') 
    214     if options.verbose or options.debug: 
     262    if _options.verbose or _options.debug: 
    215263        tmp.append('-v') 
    216     #tmp += args 
     264    if _options.failfast: 
     265        tmp.append('-f') 
     266    if _options.catch: 
     267        tmp.append('-c') 
     268    if _options.buffer: 
     269        tmp.append('-b') 
    217270    sys.argv = tmp 
    218     unittest.main(module=globals()['__name__']) 
     271    # 
     272    # Execute the unittest main function to run tests 
     273    # 
     274    unittest.main(module=_globals['__name__']) 
    219275         
    220276         
Note: See TracChangeset for help on using the changeset viewer.