From 8b71a19ea9c6d76ebaed8dc470c60619c27ccfc7 Mon Sep 17 00:00:00 2001 From: Carsten Sauerbrey Date: Tue, 13 Jun 2023 14:54:19 +0200 Subject: [PATCH] Fixing some merge issues and fixing tests --- src/pytest_fluent/event.py | 8 +++---- src/pytest_fluent/plugin.py | 3 ++- tests/conftest.py | 31 ++++++++++++++++++++-------- tests/test_additional_information.py | 3 +-- tests/test_content_patcher.py | 15 ++++++++------ tests/test_docstrings.py | 9 +++----- tests/test_fixtures.py | 3 +-- tests/test_reporting.py | 15 +++++--------- 8 files changed, 47 insertions(+), 40 deletions(-) diff --git a/src/pytest_fluent/event.py b/src/pytest_fluent/event.py index 2a1cb9d..761f7b8 100644 --- a/src/pytest_fluent/event.py +++ b/src/pytest_fluent/event.py @@ -4,7 +4,7 @@ import time import typing -from fluent import sender +from fluent.sender import FluentSender LOGGER = logging.getLogger(__package__) @@ -26,8 +26,7 @@ def __init__( ) -> None: """Initialize custom event class.""" self.senders = { - tag: sender.FluentSender(tag=tag, host=host, port=port, **kwargs) - for tag in tags + tag: FluentSender(tag=tag, host=host, port=port, **kwargs) for tag in tags } def __call__(self, tag: str, label: str, data: dict, **kwargs): @@ -40,8 +39,9 @@ def __call__(self, tag: str, label: str, data: dict, **kwargs): """ assert isinstance(data, dict), "data must be a dict" sender_ = self.senders.get(tag) - if not sender_: + if sender_ is None or isinstance(sender_, FluentSender): LOGGER.warning(f"Could not retrieve fluent instance for tag {tag}") + return timestamp = kwargs.get("time", int(time.time())) if not sender_.emit_with_time(label, timestamp, data): LOGGER.warning(f"Could not send data via fluent for tag {tag}: {data}") diff --git a/src/pytest_fluent/plugin.py b/src/pytest_fluent/plugin.py index 64b73ec..f03c267 100644 --- a/src/pytest_fluent/plugin.py +++ b/src/pytest_fluent/plugin.py @@ -251,7 +251,8 @@ def pytest_addoption(parser): ) group.addoption( "--fluentd-host", - default=None, + default="localhost", + type=str, help="Fluentd remote host. Defaults to a local Fluentd session", ) group.addoption( diff --git a/tests/conftest.py b/tests/conftest.py index c9a9cb2..3922f9d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,11 +1,23 @@ import uuid -from unittest.mock import patch +from unittest.mock import MagicMock, patch import pytest +import pytest_fluent.event + plugin_name = "pytest_fluent" +def isinstance_patch( + __obj: object, + __class_or_tuple, +) -> bool: + """Patch for isinstance.""" + if isinstance(__obj, MagicMock): + return True + return isinstance(__obj, __class_or_tuple) + + @pytest.fixture(scope="session") def logging_content(): return "Logged from test_base" @@ -53,14 +65,15 @@ def test_base(): @pytest.fixture() -def run_mocked_pytest(runpytest): - """create a temporary pytest environment with FluentSender mock.""" - - with patch("fluent.sender.FluentSender") as sender: - yield runpytest, sender +def fluentd_sender(): + """Get FluentSender mock.""" + with patch("pytest_fluent.event.FluentSender") as sender: + yield sender.return_value @pytest.fixture() -def fluentd_sender(): - with patch("fluent.sender.FluentSender") as sender: - yield sender.return_value +def run_mocked_pytest(runpytest, fluentd_sender): + """Create a temporary pytest environment with FluentSender mock.""" + + with patch.object(pytest_fluent.event, "isinstance", isinstance_patch): + yield runpytest, fluentd_sender diff --git a/tests/test_additional_information.py b/tests/test_additional_information.py index 81b4096..d87b5ff 100644 --- a/tests/test_additional_information.py +++ b/tests/test_additional_information.py @@ -15,9 +15,8 @@ def test_info() -> dict: def test_additional_information(run_mocked_pytest, session_uuid): - runpytest, sender = run_mocked_pytest + runpytest, fluent_sender = run_mocked_pytest runpytest(f"--session-uuid={session_uuid}") - fluent_sender = sender.return_value call_args = fluent_sender.emit_with_time.call_args_list for idx, call_arg in enumerate(call_args): data = call_arg.args[2] diff --git a/tests/test_content_patcher.py b/tests/test_content_patcher.py index 83ecdea..ffe6264 100644 --- a/tests/test_content_patcher.py +++ b/tests/test_content_patcher.py @@ -4,6 +4,7 @@ import os import typing import uuid +from unittest.mock import patch import pytest @@ -125,7 +126,7 @@ def stage_content_patched() -> dict: @pytest.fixture def namespace() -> argparse.Namespace: - return argparse.Namespace(**{"fluentd-tag": "pytest"}) + return argparse.Namespace(**{"fluentd_tag": "pytest"}) def test_is_reference_string(): @@ -139,9 +140,9 @@ def test_get_env_content__no_env_string(): def test_get_env_content__env_string(): result = "test" - os.environ["USE_ENV"] = result - assert ContentPatcher._get_env_content("$USE_ENV") == result - assert ContentPatcher._get_env_content("${USE_ENV}") == result + with patch.dict(os.environ, {"USE_ENV": result}): + assert ContentPatcher._get_env_content("$USE_ENV") == result + assert ContentPatcher._get_env_content("${USE_ENV}") == result def test_get_env_content__env_string_no_content(): @@ -163,8 +164,10 @@ def test_get_args_content__retrieve_no_content(stage_content, namespace, stage_n def test_stage_settings(user_settings, user_settings_patched, stage_names): - patched = ContentPatcher._stage_settings(user_settings, stage_names) - assert patched == user_settings_patched + patched = ContentPatcher( + user_settings=user_settings, args_settings=namespace, stage_names=stage_names + ) + assert patched._user_settings == user_settings_patched @pytest.mark.parametrize( diff --git a/tests/test_docstrings.py b/tests/test_docstrings.py index 0a3d8c6..6546a42 100644 --- a/tests/test_docstrings.py +++ b/tests/test_docstrings.py @@ -2,7 +2,7 @@ def test_add_docstrings(run_mocked_pytest, session_uuid): - runpytest, sender = run_mocked_pytest + runpytest, fluent_sender = run_mocked_pytest result = runpytest( f"--session-uuid={session_uuid}", "--add-docstrings", @@ -14,7 +14,6 @@ def test_base(): assert True """, ) - fluent_sender = sender.return_value call_args = fluent_sender.emit_with_time.call_args_list result.assert_outcomes(passed=1) assert len(call_args) > 0 @@ -24,7 +23,7 @@ def test_base(): def test_docstrings_disabled(run_mocked_pytest, session_uuid): - runpytest, sender = run_mocked_pytest + runpytest, fluent_sender = run_mocked_pytest result = runpytest( f"--session-uuid={session_uuid}", pyfile=f""" @@ -35,7 +34,6 @@ def test_base(): assert True """, ) - fluent_sender = sender.return_value call_args = fluent_sender.emit_with_time.call_args_list result.assert_outcomes(passed=1) assert len(call_args) > 0 @@ -44,7 +42,7 @@ def test_base(): def test_missing_docstring(run_mocked_pytest, session_uuid): - runpytest, sender = run_mocked_pytest + runpytest, fluent_sender = run_mocked_pytest result = runpytest( f"--session-uuid={session_uuid}", "--add-docstrings", @@ -53,7 +51,6 @@ def test_base(): assert True """, ) - fluent_sender = sender.return_value call_args = fluent_sender.emit_with_time.call_args_list result.assert_outcomes(passed=1) assert len(call_args) > 0 diff --git a/tests/test_fixtures.py b/tests/test_fixtures.py index c9acdc3..dff3c06 100644 --- a/tests/test_fixtures.py +++ b/tests/test_fixtures.py @@ -1,5 +1,5 @@ def test_get_logger(run_mocked_pytest, session_uuid, logging_content): - runpytest, sender = run_mocked_pytest + runpytest, fluent_sender = run_mocked_pytest result = runpytest( f"--session-uuid={session_uuid}", "--extend-logging", @@ -10,7 +10,6 @@ def test_base(get_logger): assert True """, ) - fluent_sender = sender.return_value call_args = fluent_sender.emit_with_time.call_args_list result.assert_outcomes(passed=1) assert len(call_args) > 0 diff --git a/tests/test_reporting.py b/tests/test_reporting.py index 2231b98..d84f05a 100644 --- a/tests/test_reporting.py +++ b/tests/test_reporting.py @@ -1,5 +1,5 @@ def test_data_reporter_base_with_passed(run_mocked_pytest, session_uuid): - runpytest, sender = run_mocked_pytest + runpytest, fluent_sender = run_mocked_pytest result = runpytest( f"--session-uuid={session_uuid}", pyfile=""" @@ -7,7 +7,6 @@ def test_base(): assert True """, ) - fluent_sender = sender.return_value call_args = fluent_sender.emit_with_time.call_args_list result.assert_outcomes(passed=1) assert len(call_args) > 0 @@ -24,7 +23,7 @@ def test_base(): def test_data_reporter_xdist_passed(run_mocked_pytest, session_uuid): - runpytest, sender = run_mocked_pytest + runpytest, fluent_sender = run_mocked_pytest result = runpytest( "-n 2", f"--session-uuid={session_uuid}", @@ -48,7 +47,6 @@ def test_base_group_six(): assert True """, ) - fluent_sender = sender.return_value call_args = fluent_sender.emit_with_time.call_args_list result.assert_outcomes(passed=6) assert len(call_args) > 0 @@ -76,7 +74,7 @@ def check_for_verdict(session_uuid, report: dict): def test_data_reporter_base_with_xfail(run_mocked_pytest, session_uuid): - runpytest, sender = run_mocked_pytest + runpytest, fluent_sender = run_mocked_pytest _ = runpytest( f"--session-uuid={session_uuid}", pyfile=""" @@ -87,7 +85,6 @@ def test_base(): assert False """, ) - fluent_sender = sender.return_value call_args = fluent_sender.emit_with_time.call_args_list assert len(call_args) > 0 args = call_args[2].args[2] @@ -97,7 +94,7 @@ def test_base(): def test_data_reporter_base_with_exception(run_mocked_pytest, session_uuid): - runpytest, sender = run_mocked_pytest + runpytest, fluent_sender = run_mocked_pytest _ = runpytest( f"--session-uuid={session_uuid}", pyfile=""" @@ -106,7 +103,6 @@ def test_base(): assert True """, ) - fluent_sender = sender.return_value call_args = fluent_sender.emit_with_time.call_args_list assert len(call_args) > 0 args = call_args[2].args[2] @@ -116,7 +112,7 @@ def test_base(): def test_data_reporter_base_with_setup_exception(run_mocked_pytest, session_uuid): - runpytest, sender = run_mocked_pytest + runpytest, fluent_sender = run_mocked_pytest _ = runpytest( f"--session-uuid={session_uuid}", pyfile=""" @@ -133,7 +129,6 @@ def test_base(my_value): assert True """, ) - fluent_sender = sender.return_value call_args = fluent_sender.emit_with_time.call_args_list assert len(call_args) > 0 args = call_args[2].args[2]