~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/__init__.py

  • Committer: Vincent Ladeuil
  • Date: 2008-08-30 08:39:10 UTC
  • mfrom: (3649.6.3 selftest-prefixes)
  • mto: This revision was merged to the branch mainline in revision 3668.
  • Revision ID: v.ladeuil+lp@free.fr-20080830083910-alwqc56xt3grsnj7
(vila) Add test prefix aliases for selftest --starting-with

Show diffs side-by-side

added added

removed removed

Lines of Context:
58
58
    progress,
59
59
    ui,
60
60
    urlutils,
 
61
    registry,
61
62
    workingtree,
62
63
    )
63
64
import bzrlib.branch
2671
2672
        return self.tests.has_key(test_id)
2672
2673
 
2673
2674
 
 
2675
class TestPrefixAliasRegistry(registry.Registry):
 
2676
    """A registry for test prefix aliases.
 
2677
 
 
2678
    This helps implement shorcuts for the --starting-with selftest
 
2679
    option. Overriding existing prefixes is not allowed but not fatal (a
 
2680
    warning will be emitted).
 
2681
    """
 
2682
 
 
2683
    def register(self, key, obj, help=None, info=None,
 
2684
                 override_existing=False):
 
2685
        """See Registry.register.
 
2686
 
 
2687
        Trying to override an existing alias causes a warning to be emitted,
 
2688
        not a fatal execption.
 
2689
        """
 
2690
        try:
 
2691
            super(TestPrefixAliasRegistry, self).register(
 
2692
                key, obj, help=help, info=info, override_existing=False)
 
2693
        except KeyError:
 
2694
            actual = self.get(key)
 
2695
            note('Test prefix alias %s is already used for %s, ignoring %s'
 
2696
                 % (key, actual, obj))
 
2697
 
 
2698
    def resolve_alias(self, id_start):
 
2699
        """Replace the alias by the prefix in the given string.
 
2700
 
 
2701
        Using an unknown prefix is an error to help catching typos.
 
2702
        """
 
2703
        parts = id_start.split('.')
 
2704
        try:
 
2705
            parts[0] = self.get(parts[0])
 
2706
        except KeyError:
 
2707
            raise errors.BzrCommandError(
 
2708
                '%s is not a known test prefix alias' % parts[0])
 
2709
        return '.'.join(parts)
 
2710
 
 
2711
 
 
2712
test_prefix_alias_registry = TestPrefixAliasRegistry()
 
2713
"""Registry of test prefix aliases."""
 
2714
 
 
2715
 
 
2716
# This alias allows to detect typos ('bzrlin.') by making all valid test ids
 
2717
# appear prefixed ('bzrlib.' is "replaced" by 'bzrlib.').
 
2718
test_prefix_alias_registry.register('bzrlib', 'bzrlib')
 
2719
 
 
2720
# Obvious higest levels prefixes, feel free to add your own via a plugin
 
2721
test_prefix_alias_registry.register('bd', 'bzrlib.doc')
 
2722
test_prefix_alias_registry.register('bu', 'bzrlib.utils')
 
2723
test_prefix_alias_registry.register('bt', 'bzrlib.tests')
 
2724
test_prefix_alias_registry.register('bb', 'bzrlib.tests.blackbox')
 
2725
test_prefix_alias_registry.register('bp', 'bzrlib.plugins')
 
2726
 
 
2727
 
2674
2728
def test_suite(keep_only=None, starting_with=None):
2675
2729
    """Build and return TestSuite for the whole of bzrlib.
2676
2730
 
2838
2892
    loader = TestUtil.TestLoader()
2839
2893
 
2840
2894
    if starting_with is not None:
 
2895
        starting_with = test_prefix_alias_registry.resolve_alias(starting_with)
2841
2896
        # We take precedence over keep_only because *at loading time* using
2842
2897
        # both options means we will load less tests for the same final result.
2843
2898
        def interesting_module(name):