@@ -29,6 +29,37 @@ def _loaded(plugin=None, obj=None, parameters=None):
2929 return finder .LoadedPlugin (plugin , obj , parameters )
3030
3131
32+ @pytest .mark .parametrize (
33+ "s" ,
34+ (
35+ "E" ,
36+ "E1" ,
37+ "E123" ,
38+ "ABC" ,
39+ "ABC1" ,
40+ "ABC123" ,
41+ ),
42+ )
43+ def test_valid_plugin_prefixes (s ):
44+ assert finder .VALID_CODE .match (s )
45+
46+
47+ @pytest .mark .parametrize (
48+ "s" ,
49+ (
50+ "" ,
51+ "A1234" ,
52+ "ABCD" ,
53+ "abc" ,
54+ "a-b" ,
55+ "☃" ,
56+ "A𝟗" ,
57+ ),
58+ )
59+ def test_invalid_plugin_prefixes (s ):
60+ assert finder .VALID_CODE .match (s ) is None
61+
62+
3263def test_loaded_plugin_entry_name_vs_display_name ():
3364 loaded = _loaded (_plugin (package = "package-name" , ep = _ep (name = "Q" )))
3465 assert loaded .entry_name == "Q"
@@ -761,6 +792,35 @@ def test_classify_plugins_enable_a_disabled_plugin():
761792 )
762793
763794
795+ def test_classify_plugins_does_not_error_on_reporter_prefix ():
796+ # these are ok, don't check their name
797+ plugin = _plugin (ep = _ep (name = "report-er" , group = "flake8.report" ))
798+ loaded = _loaded (plugin = plugin )
799+
800+ opts = finder .PluginOptions .blank ()
801+ classified = finder ._classify_plugins ([loaded ], opts )
802+
803+ assert classified == finder .Plugins (
804+ checkers = finder .Checkers ([], [], []),
805+ reporters = {"report-er" : loaded },
806+ disabled = [],
807+ )
808+
809+
810+ def test_classify_plugins_errors_on_incorrect_checker_name ():
811+ plugin = _plugin (ep = _ep (name = "INVALID" , group = "flake8.extension" ))
812+ loaded = _loaded (plugin = plugin , parameters = {"tree" : True })
813+
814+ with pytest .raises (ExecutionError ) as excinfo :
815+ finder ._classify_plugins ([loaded ], finder .PluginOptions .blank ())
816+
817+ (msg ,) = excinfo .value .args
818+ assert msg == (
819+ "plugin code for `local[INVALID]` "
820+ "does not match ^[A-Z]{1,3}[0-9]{0,3}$"
821+ )
822+
823+
764824@pytest .mark .usefixtures ("reset_sys" )
765825def test_load_plugins ():
766826 plugin = _plugin (ep = _ep (value = "aplugin:ExtensionTestPlugin2" ))
0 commit comments