diff --git a/src/poetry/console/application.py b/src/poetry/console/application.py index 511f76f4f08..f0305a5042c 100644 --- a/src/poetry/console/application.py +++ b/src/poetry/console/application.py @@ -626,7 +626,9 @@ def _load_plugins(self, io: IO) -> None: self._disable_plugins = io.input.has_parameter_option("--no-plugins") - if not self._disable_plugins: + if not self._disable_plugins and not io.input.has_parameter_option( + ["--version", "-V"], only_params=True + ): from poetry.plugins.application_plugin import ApplicationPlugin from poetry.plugins.plugin_manager import PluginManager diff --git a/tests/console/test_application.py b/tests/console/test_application.py index 2fc8546bb3c..f8e9fa50655 100644 --- a/tests/console/test_application.py +++ b/tests/console/test_application.py @@ -11,6 +11,7 @@ from cleo.testers.application_tester import ApplicationTester +from poetry.__version__ import __version__ from poetry.console.application import Application from poetry.console.commands.command import Command from poetry.plugins.application_plugin import ApplicationPlugin @@ -83,6 +84,24 @@ def test_application_execute_plugin_command(with_add_command_plugin: None) -> No assert tester.status_code == 0 +@pytest.mark.parametrize("flag", ["--version", "-V"]) +def test_application_with_plugins_skipped_for_version( + flag: str, with_add_command_plugin: None, mocker: MockerFixture +) -> None: + app = Application() + + manager_mock = mocker.patch( + "poetry.plugins.plugin_manager.PluginManager", autospec=True + ) + + tester = ApplicationTester(app) + tester.execute(flag) + + assert tester.status_code == 0 + assert __version__ in tester.io.fetch_output() + manager_mock.assert_not_called() + + def test_application_execute_plugin_command_with_plugins_disabled( with_add_command_plugin: None, ) -> None: