Protokoll #33846

ID33846
Zeitstempel2026-04-21 03:28:56.186008
Clientroot
IP62.246.34.195
Modellclaude-sonnet-4-20250514
Statuscompleted
Tokens1,622 (Input: 506, Output: 1,116)
Dauer57 ms
Request-Zeit2026-04-21 03:28:56.186008
Response-Zeit2026-04-21 03:28:56.243000

Request

{
    "event": "PreToolUse",
    "tool_name": "Edit",
    "tool_input": {
        "file_path": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/tests\/integration\/conftest.py",
        "old_string": "@pytest.fixture\ndef connection_factory() -> MariaDbConnectionFactory:\n    return MariaDbConnectionFactory(load_db_settings(\"crawler\"))\n\n\n@pytest.fixture(autouse=True)\ndef _clean_crawler_db(\n    connection_factory: MariaDbConnectionFactory,\n) -> Generator[None, None, None]:\n    _truncate(connection_factory)\n    yield\n    _truncate(connection_factory)\n\n\ndef _truncate(factory: MariaDbConnectionFactory) -> None:\n    with factory.session() as conn:\n        cur = conn.cursor()\n        cur.execute(\"SET FOREIGN_KEY_CHECKS=0\")\n        for table in _TRUNCATE_ORDER:\n            cur.execute(f\"TRUNCATE TABLE {table}\")\n        cur.execute(\"SET FOREIGN_KEY_CHECKS=1\")",
        "new_string": "@pytest.fixture\ndef connection_factory() -> MariaDbConnectionFactory:\n    return MariaDbConnectionFactory(load_db_settings(TEST_DB))\n\n\n@pytest.fixture(autouse=True)\ndef _clean_crawler_db(\n    connection_factory: MariaDbConnectionFactory,\n) -> Generator[None, None, None]:\n    _guard_test_db(connection_factory)\n    _truncate(connection_factory)\n    yield\n    _truncate(connection_factory)\n\n\ndef _guard_test_db(factory: MariaDbConnectionFactory) -> None:\n    with factory.session() as conn:\n        cur = conn.cursor()\n        cur.execute(\"SELECT DATABASE()\")\n        row = cur.fetchone()\n        current = row[0] if row else None\n    if current != TEST_DB:\n        raise RuntimeError(\n            f\"refusing to truncate database {current!r}; expected {TEST_DB!r}\",\n        )\n\n\ndef _truncate(factory: MariaDbConnectionFactory) -> None:\n    with factory.session() as conn:\n        cur = conn.cursor()\n        cur.execute(\"SET FOREIGN_KEY_CHECKS=0\")\n        for table in _TRUNCATE_ORDER:\n            cur.execute(f\"TRUNCATE TABLE {table}\")\n        cur.execute(\"SET FOREIGN_KEY_CHECKS=1\")",
        "replace_all": false
    }
}

Response

{
    "tool_response": {
        "filePath": "\/var\/www\/dev.campus.systemische-tools.de\/crawler\/tests\/integration\/conftest.py",
        "oldString": "@pytest.fixture\ndef connection_factory() -> MariaDbConnectionFactory:\n    return MariaDbConnectionFactory(load_db_settings(\"crawler\"))\n\n\n@pytest.fixture(autouse=True)\ndef _clean_crawler_db(\n    connection_factory: MariaDbConnectionFactory,\n) -> Generator[None, None, None]:\n    _truncate(connection_factory)\n    yield\n    _truncate(connection_factory)\n\n\ndef _truncate(factory: MariaDbConnectionFactory) -> None:\n    with factory.session() as conn:\n        cur = conn.cursor()\n        cur.execute(\"SET FOREIGN_KEY_CHECKS=0\")\n        for table in _TRUNCATE_ORDER:\n            cur.execute(f\"TRUNCATE TABLE {table}\")\n        cur.execute(\"SET FOREIGN_KEY_CHECKS=1\")",
        "newString": "@pytest.fixture\ndef connection_factory() -> MariaDbConnectionFactory:\n    return MariaDbConnectionFactory(load_db_settings(TEST_DB))\n\n\n@pytest.fixture(autouse=True)\ndef _clean_crawler_db(\n    connection_factory: MariaDbConnectionFactory,\n) -> Generator[None, None, None]:\n    _guard_test_db(connection_factory)\n    _truncate(connection_factory)\n    yield\n    _truncate(connection_factory)\n\n\ndef _guard_test_db(factory: MariaDbConnectionFactory) -> None:\n    with factory.session() as conn:\n        cur = conn.cursor()\n        cur.execute(\"SELECT DATABASE()\")\n        row = cur.fetchone()\n        current = row[0] if row else None\n    if current != TEST_DB:\n        raise RuntimeError(\n            f\"refusing to truncate database {current!r}; expected {TEST_DB!r}\",\n        )\n\n\ndef _truncate(factory: MariaDbConnectionFactory) -> None:\n    with factory.session() as conn:\n        cur = conn.cursor()\n        cur.execute(\"SET FOREIGN_KEY_CHECKS=0\")\n        for table in _TRUNCATE_ORDER:\n            cur.execute(f\"TRUNCATE TABLE {table}\")\n        cur.execute(\"SET FOREIGN_KEY_CHECKS=1\")",
        "originalFile": "from __future__ import annotations\n\nfrom collections.abc import Generator\n\nimport pytest\n\nfrom src.infrastructure.config.db_config import load_db_settings\nfrom src.infrastructure.persistence.connection import MariaDbConnectionFactory\n\nTEST_DB = \"crawler_test\"\n\n_TRUNCATE_ORDER = (\n    \"url_queue\",\n    \"external_checks\",\n    \"errors\",\n    \"js_errors\",\n    \"hreflang\",\n    \"structured_data\",\n    \"resources\",\n    \"images\",\n    \"links\",\n    \"page_headers\",\n    \"pages\",\n    \"urls\",\n    \"crawls\",\n)\n\n\n@pytest.fixture\ndef connection_factory() -> MariaDbConnectionFactory:\n    return MariaDbConnectionFactory(load_db_settings(\"crawler\"))\n\n\n@pytest.fixture(autouse=True)\ndef _clean_crawler_db(\n    connection_factory: MariaDbConnectionFactory,\n) -> Generator[None, None, None]:\n    _truncate(connection_factory)\n    yield\n    _truncate(connection_factory)\n\n\ndef _truncate(factory: MariaDbConnectionFactory) -> None:\n    with factory.session() as conn:\n        cur = conn.cursor()\n        cur.execute(\"SET FOREIGN_KEY_CHECKS=0\")\n        for table in _TRUNCATE_ORDER:\n            cur.execute(f\"TRUNCATE TABLE {table}\")\n        cur.execute(\"SET FOREIGN_KEY_CHECKS=1\")\n",
        "structuredPatch": [
            {
                "oldStart": 28,
                "oldLines": 18,
                "newStart": 28,
                "newLines": 31,
                "lines": [
                    " ",
                    " @pytest.fixture",
                    " def connection_factory() -> MariaDbConnectionFactory:",
                    "-    return MariaDbConnectionFactory(load_db_settings(\"crawler\"))",
                    "+    return MariaDbConnectionFactory(load_db_settings(TEST_DB))",
                    " ",
                    " ",
                    " @pytest.fixture(autouse=True)",
                    " def _clean_crawler_db(",
                    "     connection_factory: MariaDbConnectionFactory,",
                    " ) -> Generator[None, None, None]:",
                    "+    _guard_test_db(connection_factory)",
                    "     _truncate(connection_factory)",
                    "     yield",
                    "     _truncate(connection_factory)",
                    " ",
                    " ",
                    "+def _guard_test_db(factory: MariaDbConnectionFactory) -> None:",
                    "+    with factory.session() as conn:",
                    "+        cur = conn.cursor()",
                    "+        cur.execute(\"SELECT DATABASE()\")",
                    "+        row = cur.fetchone()",
                    "+        current = row[0] if row else None",
                    "+    if current != TEST_DB:",
                    "+        raise RuntimeError(",
                    "+            f\"refusing to truncate database {current!r}; expected {TEST_DB!r}\",",
                    "+        )",
                    "+",
                    "+",
                    " def _truncate(factory: MariaDbConnectionFactory) -> None:",
                    "     with factory.session() as conn:",
                    "         cur = conn.cursor()"
                ]
            }
        ],
        "userModified": false,
        "replaceAll": false
    }
}
← Vorheriger Zur Liste Nächster →