~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/__init__.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-09-01 09:01:24 UTC
  • mfrom: (3668.3.2 trunk2)
  • Revision ID: pqm@pqm.ubuntu.com-20080901090124-w1cxlizdk4g3mstv
(vila) selftest --starting-with now accepts multiple values

Show diffs side-by-side

added added

removed removed

Lines of Context:
2303
2303
    return condition
2304
2304
 
2305
2305
 
2306
 
def condition_id_startswith(start):
 
2306
def condition_id_startswith(starts):
2307
2307
    """Create a condition filter verifying that test's id starts with a string.
2308
2308
    
2309
 
    :param start: A string.
2310
 
    :return: A callable that returns True if the test's id starts with the
2311
 
        given string.
 
2309
    :param starts: A list of string.
 
2310
    :return: A callable that returns True if the test's id starts with one of 
 
2311
        the given strings.
2312
2312
    """
2313
2313
    def condition(test):
2314
 
        return test.id().startswith(start)
 
2314
        for start in starts:
 
2315
            if test.id().startswith(start):
 
2316
                return True
 
2317
        return False
2315
2318
    return condition
2316
2319
 
2317
2320
 
2339
2342
        test case which should be included in the result.
2340
2343
    :return: A suite which contains the tests found in suite that pass
2341
2344
        condition.
2342
 
    """ 
 
2345
    """
2343
2346
    result = []
2344
2347
    for test in iter_suite_tests(suite):
2345
2348
        if condition(test):
2353
2356
    :param suite:           the source suite
2354
2357
    :param pattern:         pattern that names must match
2355
2358
    :returns: the newly created suite
2356
 
    """ 
 
2359
    """
2357
2360
    condition = condition_id_re(pattern)
2358
2361
    result_suite = filter_suite_by_condition(suite, condition)
2359
2362
    return result_suite
2375
2378
    """Create a test suite by filtering another one.
2376
2379
 
2377
2380
    :param suite: The source suite.
2378
 
    :param start: A string the test id must start with.
 
2381
    :param start: A list of string the test id must start with one of.
2379
2382
    :returns: the newly created suite
2380
2383
    """
2381
2384
    condition = condition_id_startswith(start)
2428
2431
        suite matching the condition, and the second contains the remainder
2429
2432
        from suite. The order within each output suite is the same as it was in
2430
2433
        suite.
2431
 
    """ 
 
2434
    """
2432
2435
    matched = []
2433
2436
    did_not_match = []
2434
2437
    for test in iter_suite_tests(suite):
2450
2453
        suite matching pattern, and the second contains the remainder from
2451
2454
        suite. The order within each output suite is the same as it was in
2452
2455
        suite.
2453
 
    """ 
 
2456
    """
2454
2457
    return split_suite_by_condition(suite, condition_id_re(pattern))
2455
2458
 
2456
2459
 
2891
2894
 
2892
2895
    loader = TestUtil.TestLoader()
2893
2896
 
2894
 
    if starting_with is not None:
2895
 
        starting_with = test_prefix_alias_registry.resolve_alias(starting_with)
 
2897
    if starting_with:
 
2898
        starting_with = [test_prefix_alias_registry.resolve_alias(start)
 
2899
                         for start in starting_with]
2896
2900
        # We take precedence over keep_only because *at loading time* using
2897
2901
        # both options means we will load less tests for the same final result.
2898
2902
        def interesting_module(name):
2899
 
            return (
2900
 
                # Either the module name starts with the specified string
2901
 
                name.startswith(starting_with)
2902
 
                # or it may contain tests starting with the specified string
2903
 
                or starting_with.startswith(name)
2904
 
                )
 
2903
            for start in starting_with:
 
2904
                if (
 
2905
                    # Either the module name starts with the specified string
 
2906
                    name.startswith(start)
 
2907
                    # or it may contain tests starting with the specified string
 
2908
                    or start.startswith(name)
 
2909
                    ):
 
2910
                    return True
 
2911
            return False
2905
2912
        loader = TestUtil.FilteredByModuleTestLoader(interesting_module)
2906
2913
 
2907
2914
    elif keep_only is not None:
2967
2974
            reload(sys)
2968
2975
            sys.setdefaultencoding(default_encoding)
2969
2976
 
2970
 
    if starting_with is not None:
 
2977
    if starting_with:
2971
2978
        suite = filter_suite_by_id_startswith(suite, starting_with)
2972
2979
 
2973
2980
    if keep_only is not None:
2976
2983
        suite = filter_suite_by_id_list(suite, id_filter)
2977
2984
        # Do some sanity checks on the id_list filtering
2978
2985
        not_found, duplicates = suite_matches_id_list(suite, keep_only)
2979
 
        if starting_with is not None:
 
2986
        if starting_with:
2980
2987
            # The tester has used both keep_only and starting_with, so he is
2981
2988
            # already aware that some tests are excluded from the list, there
2982
2989
            # is no need to tell him which.