def METHOD_NAME(
    self,
    caplog,
    command,
    exit_code,
    mocker,
    fake_metadata,
    fake_plugin_distribution,
    entry_points,  # pylint: disable=unused-argument
):
    caplog.set_level(logging.DEBUG, logger="kedro")
    Module = namedtuple("Module", ["cli"])
    mocker.patch(
        "kedro.framework.cli.cli._is_project",
        return_value=True,
    )
    mocker.patch(
        "kedro.framework.cli.cli.bootstrap_project",
        return_value=fake_metadata,
    )
    mocker.patch(
        "kedro.framework.cli.cli.importlib.import_module",
        return_value=Module(cli=cli),
    )
    kedro_cli = KedroCLI(fake_metadata.project_path)
    result = CliRunner().invoke(kedro_cli, [command])
    assert (
        f"Registered CLI hooks from 1 installed plugin(s): "
        f"{fake_plugin_distribution.metadata['name']}-{fake_plugin_distribution.version}"
        in caplog.text
    )
    assert (
        f"Before command `{command}` run for project {fake_metadata}"
        in result.output
    )
    # 'pipeline list' and 'info' aren't actually in the click structure and
    # return exit code 2 ('invalid usage of some shell built-in command')
    assert (
        f"After command `{command}` run for project {fake_metadata} (exit: {exit_code})"
    ) in result.output