)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"21e372ba760ab7ee69bd87780922e5fa4d7712cf","unresolved":true,"context_lines":[{"line_number":14,"context_line":"when run alongside other tests, because handlers[0] was no longer the"},{"line_number":15,"context_line":"expected SysLogHandler."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Find the SysLogHandler by type instead of assuming handler ordering."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"[1] https://github.com/pytest-dev/pytest/issues/3697"},{"line_number":20,"context_line":"[2] https://docs.pytest.org/en/stable/changelog.html#pytest-9-1-0-2025-06-02"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"64b30d77_dc5d1506","line":17,"range":{"start_line":17,"start_character":42,"end_line":17,"end_character":67},"updated":"2026-06-29 19:49:43.000000000","message":"In all fairness, I think we were previously assuming handler *uniqueness* ;-)","commit_id":"69660cab25d81c1d6ba30061de9b4a93dd033ae4"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c6cb16bb524ea7dbcc4b52f1bdd09dd984fa94ea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"c63074c5_9a4b717c","updated":"2026-08-06 10:50:43.000000000","message":"I\u0027m only just back from paternity leave and won\u0027t have time to come back to this for a week or two. If someone wants to grab it in the interim then please, be my guest","commit_id":"69660cab25d81c1d6ba30061de9b4a93dd033ae4"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"21e372ba760ab7ee69bd87780922e5fa4d7712cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"888eb18e_e021dadc","updated":"2026-06-29 19:49:43.000000000","message":"Thanks for looking at this! I was thinking I ought to investigate further this week.\n\nLocally, though, I\u0027m still seeing two test failures:\n```\n    @reset_logger_state\n    def test_get_swift_logger_console(self):\n        logger \u003d get_swift_logger(None)\n        console_handlers \u003d [h for h in logger.logger.handlers if\n                            isinstance(h, logging.StreamHandler)]\n\u003e       self.assertFalse(console_handlers)\nE       AssertionError: [\u003cLogCaptureHandler (NOTSET)\u003e, \u003cLogCaptureHandler (NOTSET)\u003e] is not false\n\ntest/unit/common/utils/test_logs.py:965: AssertionError\n```\nand\n```\n    @reset_logger_state\n    def test_get_prefixed_swift_logger_exception_method(self):\n        # setup stream logging\n        sio \u003d StringIO()\n        base_logger \u003d get_swift_logger(None)\n        handler \u003d logging.StreamHandler(sio)\n        base_logger.logger.addHandler(handler)\n        logger \u003d get_prefixed_swift_logger(base_logger, \u0027some prefix: \u0027)\n\n        def strip_value(sio):\n            sio.seek(0)\n            v \u003d sio.getvalue()\n            sio.truncate(0)\n            return v\n\n        def log_exception(exc):\n            try:\n                raise exc\n            except (Exception, Timeout):\n                logger.exception(\u0027blah\u0027)\n            msg_lines \u003d strip_value(sio).strip().split(\u0027\\n\u0027)\n            return msg_lines\n\n        try:\n            # test OSError\n            for en in (errno.EIO, errno.ENOSPC):\n                exc \u003d OSError(en, \u0027my %s error message\u0027 % en)\n                log_msg_lines \u003d log_exception(exc)\n                self.assertEqual(1, len(log_msg_lines))\n                self.assertEqual(\u0027some prefix: blah: %s\u0027 % exc,\n                                 log_msg_lines[0])\n\n            # BadStatusLine\n            exc \u003d http.client.BadStatusLine(\u0027my error message\u0027)\n            log_msg_lines \u003d log_exception(exc)\n            self.assertEqual(1, len(log_msg_lines))\n            self.assertEqual(\"some prefix: blah: %r\" % exc, log_msg_lines[0])\n\n            # Timeout\n            with ConnectionTimeout(99) as exc:\n                log_msg_lines \u003d log_exception(exc)\n            self.assertEqual(1, len(log_msg_lines))\n            self.assertNotIn(\u0027Traceback\u0027, log_msg_lines[0])\n            self.assertEqual(\"some prefix: blah: ConnectionTimeout (99s)\",\n                             log_msg_lines[0])\n\n            # unfiltered\n            for exc in (OSError(), ValueError()):\n                log_msg_lines \u003d log_exception(exc)\n\u003e               self.assertEqual(2, len(log_msg_lines), log_msg_lines)\nE               AssertionError: 2 !\u003d 5 : [\u0027some prefix: blah: \u0027, \u0027Traceback (most recent call last):\u0027, \u0027  File \"/Users/tburke/Code/swift/test/unit/common/utils/test_logs.py\", line 760, in log_exception\u0027, \u0027    raise exc\u0027, \u0027OSError\u0027]\n\ntest/unit/common/utils/test_logs.py:792: AssertionError\n```\nWe could take on each of the three failures piecemeal, but the commit message as-is overstates the progress made.","commit_id":"69660cab25d81c1d6ba30061de9b4a93dd033ae4"}]}
