55import pytest
66
77from rpdk .core .filters import FILTER_REGISTRY
8- from rpdk .core .plugin_base import LanguagePlugin , __name__ as plugin_base_name
8+ from rpdk .core .plugin_base import (
9+ ExtensionPlugin ,
10+ LanguagePlugin ,
11+ __name__ as plugin_base_name ,
12+ )
913
1014
1115class TestLanguagePlugin (LanguagePlugin ):
@@ -22,7 +26,7 @@ def package(self, project, zip_file):
2226
2327
2428@pytest .fixture
25- def plugin ():
29+ def language_plugin ():
2630 return TestLanguagePlugin ()
2731
2832
@@ -34,20 +38,20 @@ def test_language_plugin_module_not_set():
3438 plugin ._module_name # pylint: disable=pointless-statement
3539
3640
37- def test_language_plugin_init_no_op (plugin ):
38- plugin .init (None )
41+ def test_language_plugin_init_no_op (language_plugin ):
42+ language_plugin .init (None )
3943
4044
41- def test_language_plugin_generate_no_op (plugin ):
42- plugin .generate (None )
45+ def test_language_plugin_generate_no_op (language_plugin ):
46+ language_plugin .generate (None )
4347
4448
45- def test_language_plugin_package_no_op (plugin ):
46- plugin .package (None , None )
49+ def test_language_plugin_package_no_op (language_plugin ):
50+ language_plugin .package (None , None )
4751
4852
49- def test_language_plugin_setup_jinja_env_defaults (plugin ):
50- env = plugin ._setup_jinja_env ()
53+ def test_language_plugin_setup_jinja_env_defaults (language_plugin ):
54+ env = language_plugin ._setup_jinja_env ()
5155 assert env .loader
5256 assert env .autoescape
5357
@@ -57,28 +61,56 @@ def test_language_plugin_setup_jinja_env_defaults(plugin):
5761 assert env .get_template ("test.txt" )
5862
5963
60- def test_language_plugin_setup_jinja_env_overrides (plugin ):
64+ def test_language_plugin_setup_jinja_env_overrides (language_plugin ):
6165 loader = object ()
6266 autoescape = object ()
63- env = plugin ._setup_jinja_env (autoescape = autoescape , loader = loader )
67+ env = language_plugin ._setup_jinja_env (autoescape = autoescape , loader = loader )
6468 assert env .loader is loader
6569 assert env .autoescape is autoescape
6670
6771 for name in FILTER_REGISTRY :
6872 assert name in env .filters
6973
7074
71- def test_language_plugin_setup_jinja_env_no_spec (plugin ):
75+ def test_language_plugin_setup_jinja_env_no_spec (language_plugin ):
7276 with patch (
7377 "rpdk.core.plugin_base.importlib.util.find_spec" , return_value = None
7478 ) as mock_spec , patch ("rpdk.core.plugin_base.PackageLoader" ) as mock_loader :
75- env = plugin ._setup_jinja_env ()
79+ env = language_plugin ._setup_jinja_env ()
7680
77- mock_spec .assert_called_once_with (plugin ._module_name )
78- mock_loader .assert_has_calls ([call (plugin ._module_name ), call (plugin_base_name )])
81+ mock_spec .assert_called_once_with (language_plugin ._module_name )
82+ mock_loader .assert_has_calls (
83+ [call (language_plugin ._module_name ), call (plugin_base_name )]
84+ )
7985
8086 assert env .loader
8187 assert env .autoescape
8288
8389 for name in FILTER_REGISTRY :
8490 assert name in env .filters
91+
92+
93+ class TestExtensionPlugin (ExtensionPlugin ):
94+ COMMAND_NAME = "test-extension"
95+
96+ def setup_parser (self , parser ):
97+ super ().setup_parser (parser )
98+
99+
100+ @pytest .fixture
101+ def extension_plugin ():
102+ return TestExtensionPlugin ()
103+
104+
105+ def test_extension_plugin_command_name (extension_plugin ):
106+ assert extension_plugin .command_name == "test-extension"
107+
108+
109+ def test_extension_plugin_command_name_error (extension_plugin ):
110+ extension_plugin .COMMAND_NAME = None
111+ with pytest .raises (RuntimeError ):
112+ extension_plugin .command_name # pylint: disable=pointless-statement
113+
114+
115+ def test_extension_plugin_setup_parser_no_op (extension_plugin ):
116+ extension_plugin .setup_parser (None )
0 commit comments