Changeset 1850


Ignore:
Timestamp:
06/27/10 11:43:27 (4 years ago)
Author:
wehart
Message:

Adding code-level documentation.

Adding ability to get categories from the
PYUTILIB_AUTOTEST_CATEGORIES environment variable. This
list is assumed to be comma-separated.

Changed semantics for categories: this option is
assumed to be a requirement for all categories.

Updating testing baselines.

Location:
pyutilib.autotest/trunk/pyutilib/autotest
Files:
1 added
7 edited

Legend:

Unmodified
Added
Removed
  • pyutilib.autotest/trunk/pyutilib/autotest/default_testdriver.py

    r1848 r1850  
    1010 
    1111import plugins 
    12  
    1312from pyutilib.component.core import * 
    1413 
    1514 
    1615class DefaultTestDriver(Plugin): 
     16    """ 
     17    This is the 'default' test driver, which simply prints the 
     18    arguments being passed into a test. 
     19    """ 
    1720 
    1821    implements(plugins.ITestDriver) 
  • pyutilib.autotest/trunk/pyutilib/autotest/driver.py

    r1849 r1850  
    2121import copy 
    2222import types 
     23import re 
    2324 
    2425 
     
    107108def create_test_suite(suite, config, _globals, options): 
    108109    # 
    109     # Skip suite creation if the options category is not in the list of test suite categories 
    110     # 
    111     if not (options.category is None or options.category in config['suites'][suite].get('categories',[])): 
    112         return 
     110    # Skip suite creation if the options categores do not intersect with the list of test suite categories 
     111    # 
     112    for cat in options.categories: 
     113        if not cat in config['suites'][suite].get('categories',[]): 
     114            return 
    113115    # 
    114116    # Create test driver 
     
    179181 
    180182def run(argv, _globals=None): 
    181  
     183    # 
     184    # Set sys.argv to the value specified by the user 
     185    # 
     186    sys.argv = argv 
     187    # 
     188    # Create the option parser 
     189    # 
    182190    parser = optparse.OptionParser() 
    183191    parser.remove_option('-h') 
    184  
     192    # 
    185193    parser.add_option('-h','--help', 
    186194        action='store_true', 
     
    188196        default=False, 
    189197        help='Print command options') 
    190  
     198    # 
    191199    parser.add_option('-d','--debug', 
    192200        action='store_true', 
     
    194202        default=False, 
    195203        help='Set debugging flag') 
    196  
     204    # 
    197205    parser.add_option('-v','--verbose', 
    198206        action='store_true', 
     
    200208        default=False, 
    201209        help='Verbose output') 
    202  
     210    # 
    203211    parser.add_option('-q','--quiet', 
    204212        action='store_true', 
     
    206214        default=False, 
    207215        help='Minimal output') 
    208  
     216    # 
    209217    parser.add_option('-f','--failfast', 
    210218        action='store_true', 
     
    212220        default=False, 
    213221        help='Stop on first failure') 
    214  
     222    # 
    215223    parser.add_option('-c','--catch', 
    216224        action='store_true', 
     
    218226        default=False, 
    219227        help='Catch control-C and display results') 
    220  
     228    # 
    221229    parser.add_option('-b','--buffer', 
    222230        action='store_true', 
     
    224232        default=False, 
    225233        help='Buffer stdout and stderr durring test runs') 
    226  
     234    # 
    227235    parser.add_option('--cat', '--category', 
    228         action='store', 
    229         dest='category', 
    230         default=None, 
    231         help='Define the category of the test suite that is executed') 
    232     
     236        action='append', 
     237        dest='categories', 
     238        default=[], 
     239        help='Define a list of categories that filter the execution of test suites') 
     240    # 
    233241    parser.add_option('--help-suites', 
    234242        action='store_true', 
     
    236244        default=False, 
    237245        help='Print the test suites that can be executed') 
    238     
     246    # 
    239247    parser.add_option('--help-tests', 
    240248        action='store', 
     
    242250        default=None, 
    243251        help='Print the tests in the specified test suite') 
    244     
     252    # 
    245253    parser.add_option('--help-categories', 
    246254        action='store_true', 
     
    248256        default=False, 
    249257        help='Print the test suite categories that can be specified') 
    250     
    251     sys.argv = argv 
     258    # 
     259    # Parse the argument list and print help info if needed 
     260    #  
    252261    _options, args = parser.parse_args(sys.argv) 
    253262    if _options.help: 
     
    262271""" % (args[0],args[0],args[0]) 
    263272        return 
     273    # 
     274    # Add categories specified by the PYUTILIB_AUTOTEST_CATEGORIES environment 
     275    # 
     276    if 'PYUTILIB_AUTOTEST_CATEGORIES' in os.environ: 
     277        for cat in re.split(',', os.environ['PYUTILIB_AUTOTEST_CATEGORIES']): 
     278            _options.categories.append( cat.strip() ) 
     279    # 
     280    # If no value for _globals is specified, then we use the current context. 
     281    # 
    264282    if _globals is None: 
    265283        _globals=globals() 
    266  
     284    # 
     285    # Setup and Options object and create test suites from the specified 
     286    # configuration files. 
     287    # 
    267288    options = Options() 
    268289    options.debug = _options.debug 
    269290    options.verbose = _options.verbose 
    270291    options.quiet = _options.quiet 
    271     options.category = _options.category 
     292    options.categories = _options.categories 
    272293    _argv = [] 
    273294    for arg in args[1:]: 
     
    276297        else: 
    277298            _argv.append(arg) 
     299    # 
     300    # Collect information about the test suites:  suite names and categories 
     301    # 
    278302    suites = [] 
    279303    categories = set() 
     
    283307            for c in _globals[key].suite_categories: 
    284308                categories.add(c) 
    285  
     309    # 
     310    # Process the --help-tests option 
     311    # 
    286312    if _options.help_tests and not _globals is None: 
    287313        suite = _globals.get(_options.help_tests, None) 
     
    302328        print "" 
    303329        return cleanup(_globals, suites) 
    304  
     330    # 
     331    # Process the --help-suites and --help-categories options 
     332    # 
    305333    if (_options.help_suites or _options.help_categories) and not _globals is None: 
    306334        if _options.help_suites: 
     
    324352            print "" 
    325353        return cleanup(_globals, suites) 
    326  
     354    # 
     355    # Reset the value of sys.argv per the expectations of the unittest module 
     356    # 
    327357    tmp = [args[0]] 
    328358    if _options.quiet: 
  • pyutilib.autotest/trunk/pyutilib/autotest/tests/example1.yml

    r1849 r1850  
    3131        problems: 
    3232            p1: 
     33 
     34    suite1a: 
     35        categories: 
     36            - nightly 
     37            - suite1 
     38        solvers: 
     39            - solver: s1 
     40            - solver: s2 
     41        problems: 
     42            p2: 
    3343 
    3444    suite2: 
  • pyutilib.autotest/trunk/pyutilib/autotest/tests/test1.txt

    r1847 r1850  
    99  -c, --catch           Catch control-C and display results 
    1010  -b, --buffer          Buffer stdout and stderr durring test runs 
    11   --cat=CATEGORY, --category=CATEGORY 
    12                         Define the category of the test suite that is executed 
     11  --cat=CATEGORIES, --category=CATEGORIES 
     12                        Define a list of categories that filter the execution 
     13                        of test suites 
    1314  --help-suites         Print the test suites that can be executed 
    1415  --help-tests=HELP_TESTS 
  • pyutilib.autotest/trunk/pyutilib/autotest/tests/test2.txt

    r1849 r1850  
    22Test suites defined in 'autotest': 
    33    suite1 
     4    suite1a 
    45    suite2 
    56    suite3 
  • pyutilib.autotest/trunk/pyutilib/autotest/tests/test5.txt

    r1849 r1850  
    1 .......... 
     1............ 
    22---------------------------------------------------------------------- 
    3 Ran 10 tests in 0.001s 
     3Ran 12 tests in 0.002s 
    44 
    55OK 
     
    1818    problem = 'p1' 
    1919    solver = 'solver2' 
     20run_test s1_p2 Options: 
     21    currdir = '/home/wehart/src/coopr/dev/src/pyutilib.autotest/pyutilib/autotest/tests/' 
     22    option1 = 'p2_opt1' 
     23    problem = 'p2' 
     24    solver = 's1' 
     25    soption1 = 's1_opt1' 
     26run_test s2_p2 Options: 
     27    currdir = '/home/wehart/src/coopr/dev/src/pyutilib.autotest/pyutilib/autotest/tests/' 
     28    name = 'solver2' 
     29    option1 = 'p2_opt1' 
     30    problem = 'p2' 
     31    solver = 'solver2' 
    2032run_test s1_p1 Options: 
    2133    currdir = '/home/wehart/src/coopr/dev/src/pyutilib.autotest/pyutilib/autotest/tests/' 
     
    2840    currdir = '/home/wehart/src/coopr/dev/src/pyutilib.autotest/pyutilib/autotest/tests/' 
    2941    option1 = 'p2_opt1' 
    30     option2 = 'p2_option2' 
    3142    problem = 'p2' 
    3243    solver = 's1' 
    33     soption1 = 's1_option1' 
     44    soption1 = 's1_opt1' 
    3445run_test s1_p3 Options: 
    3546    currdir = '/home/wehart/src/coopr/dev/src/pyutilib.autotest/pyutilib/autotest/tests/' 
  • pyutilib.autotest/trunk/pyutilib/autotest/tests/test_driver.py

    r1848 r1850  
    5757        self.failUnlessFileEqualsBaseline(currdir+'test5.out', currdir+'test5.txt') 
    5858 
     59    def test6(self): 
     60        """run --cat smoke --cat suite1 example1.yml""" 
     61        pyutilib.subprocess.run(bindir+'pyutilib_test_driver --cat smoke --cat suite1 '+currdir+'example1.yml', outfile=currdir+'test6.out') 
     62        self.failUnlessFileEqualsBaseline(currdir+'test6.out', currdir+'test6.txt') 
     63 
    5964    def Xtest6(self): 
    6065        """run test1.txt""" 
Note: See TracChangeset for help on using the changeset viewer.