604
606
self.assertEqual(expected_dirs, actual)
606
608
def test_default(self):
607
self.check_path([self.user, self.core, self.site],
609
self.check_path([self.user, self.core, self.entrypoints, self.site],
610
612
def test_adhoc_policy(self):
611
self.check_path([self.user, self.core, self.site],
613
self.check_path([self.user, self.core, self.site, self.entrypoints],
612
614
['+user', '+core', '+site'])
614
616
def test_fallback_policy(self):
615
self.check_path([self.core, self.site, self.user],
617
self.check_path([self.core, self.site, self.user, self.entrypoints],
616
618
['+core', '+site', '+user'])
618
620
def test_override_policy(self):
619
self.check_path([self.user, self.site, self.core],
621
self.check_path([self.user, self.site, self.core, self.entrypoints],
620
622
['+user', '+site', '+core'])
622
624
def test_disable_user(self):
623
self.check_path([self.core, self.site], ['-user'])
625
self.check_path([self.core, self.entrypoints, self.site], ['-user'])
625
627
def test_disable_user_twice(self):
626
628
# Ensures multiple removals don't left cruft
627
self.check_path([self.core, self.site], ['-user', '-user'])
629
self.check_path([self.core, self.entrypoints, self.site], ['-user', '-user'])
629
631
def test_duplicates_are_removed(self):
630
self.check_path([self.user, self.core, self.site],
632
self.check_path([self.user, self.core, self.entrypoints, self.site],
631
633
['+user', '+user'])
632
634
# And only the first reference is kept (since the later references will
633
635
# only produce '<plugin> already loaded' mutters)
634
self.check_path([self.user, self.core, self.site],
636
self.check_path([self.user, self.core, self.site, self.entrypoints],
635
637
['+user', '+user', '+core',
636
638
'+user', '+site', '+site',
639
641
def test_disable_overrides_enable(self):
640
self.check_path([self.core, self.site], ['-user', '+user'])
642
self.check_path([self.core, self.entrypoints, self.site], ['-user', '+user'])
642
644
def test_disable_core(self):
643
self.check_path([self.site], ['-core'])
644
self.check_path([self.user, self.site], ['+user', '-core'])
645
self.check_path([self.entrypoints, self.site], ['-core'])
646
self.check_path([self.user, self.entrypoints, self.site], ['+user', '-core'])
646
648
def test_disable_site(self):
647
self.check_path([self.core], ['-site'])
648
self.check_path([self.user, self.core], ['-site', '+user'])
649
self.check_path([self.core, self.entrypoints], ['-site'])
650
self.check_path([self.user, self.core, self.entrypoints], ['-site', '+user'])
650
652
def test_override_site(self):
651
self.check_path(['mysite', self.user, self.core],
653
self.check_path(['mysite', self.user, self.core, self.entrypoints],
652
654
['mysite', '-site', '+user'])
653
self.check_path(['mysite', self.core],
655
self.check_path(['mysite', self.core, self.entrypoints],
654
656
['mysite', '-site'])
656
658
def test_override_core(self):
657
self.check_path(['mycore', self.user, self.site],
659
self.check_path(['mycore', self.user, self.site, self.entrypoints],
658
660
['mycore', '-core', '+user', '+site'])
659
self.check_path(['mycore', self.site],
661
self.check_path(['mycore', self.entrypoints, self.site],
660
662
['mycore', '-core'])
662
664
def test_my_plugin_only(self):
663
self.check_path(['myplugin'], ['myplugin', '-user', '-core', '-site'])
667
['myplugin', '-user', '-core', '-site', '-entrypoints'])
665
669
def test_my_plugin_first(self):
666
self.check_path(['myplugin', self.core, self.site, self.user],
670
self.check_path(['myplugin', self.core, self.site, self.user, self.entrypoints],
667
671
['myplugin', '+core', '+site', '+user'])
669
673
def test_bogus_references(self):
670
self.check_path(['+foo', '-bar', self.core, self.site],
674
self.check_path(['+foo', '-bar', self.core, self.entrypoints, self.site],
671
675
['+foo', '-bar'])
893
897
""", ''.join(plugin.describe_plugins(state=self)))
900
class DummyPlugin(object):
904
class TestLoadEnvPlugin(BaseTestPlugins):
906
_test_needs_features = [pkg_resources_feature]
908
def setup_plugin(self, source=""):
909
# This test tests a new plugin appears in breezy.plugin.plugins().
910
# check the plugin is not loaded already
911
self.assertPluginUnknown('plugin')
912
# write a plugin that _cannot_ fail to load.
914
d = pkg_resources.Distribution(__file__)
915
ep = pkg_resources.EntryPoint.parse(
916
'plugin = ' + __name__ + ':DummyPlugin', dist=d)
917
d._ep_map = {'breezy.plugin': {'plugin': ep}}
918
pkg_resources.working_set.add(d, 'plugin', replace=True)
919
eps = list(pkg_resources.iter_entry_points('breezy.plugin'))
920
self.assertEqual(['plugin'], [ep.name for ep in eps])
921
self.load_with_paths(['.'])
922
self.addCleanup(d._ep_map.clear)
924
def test_plugin_loaded(self):
925
self.assertPluginUnknown('plugin')
927
p = self.plugins['plugin']
928
self.assertIsInstance(p, breezy.plugin.PlugIn)
929
self.assertIs(p.module, sys.modules[self.module_prefix + 'plugin'])
931
def test_plugin_loaded_disabled(self):
932
self.assertPluginUnknown('plugin')
933
self.overrideEnv('BRZ_DISABLE_PLUGINS', 'plugin')
935
self.assertNotIn('plugin', self.plugins)