)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"c72613a090bcc6f1a470b51c8928760014c21f26","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Fix JSONFormatter class for current working with Python3.5"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I9b339163ddfe440bc6782ced33595a0dcf60f658"},{"line_number":10,"context_line":"Closed-Bug: 1739743"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"5f93b717_12052346","line":10,"updated":"2018-01-31 22:08:39.000000000","message":"Nit: The syntax is Closes-Bug, but the old style bug parser still picks this up anyway.","commit_id":"f7f535c661fe048152856ac1506516dcdb280650"}],"oslo_log/tests/unit/test_log.py":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"c72613a090bcc6f1a470b51c8928760014c21f26","unresolved":false,"context_lines":[{"line_number":32,"context_line":"import time"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from dateutil import tz"},{"line_number":35,"context_line":"from logging import config as loggingConfig"},{"line_number":36,"context_line":"import mock"},{"line_number":37,"context_line":"from oslo_config import cfg"},{"line_number":38,"context_line":"from oslo_config import fixture as fixture_config  # noqa"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f93b717_122683cf","line":35,"range":{"start_line":35,"start_character":30,"end_line":35,"end_character":43},"updated":"2018-01-31 22:08:39.000000000","message":"Style nit: We don\u0027t use partial camel case in OpenStack.  This would be more stylistically consistent if it were named \"logging_config\".","commit_id":"f7f535c661fe048152856ac1506516dcdb280650"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a440e8943858973295d205633a72b7e93c258654","unresolved":false,"context_lines":[{"line_number":32,"context_line":"import time"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from dateutil import tz"},{"line_number":35,"context_line":"from logging import config as loggingConfig"},{"line_number":36,"context_line":"import mock"},{"line_number":37,"context_line":"from oslo_config import cfg"},{"line_number":38,"context_line":"from oslo_config import fixture as fixture_config  # noqa"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_2ab183e2","line":35,"range":{"start_line":35,"start_character":30,"end_line":35,"end_character":43},"in_reply_to":"5f93b717_122683cf","updated":"2018-05-03 09:18:37.000000000","message":"Done","commit_id":"f7f535c661fe048152856ac1506516dcdb280650"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"c72613a090bcc6f1a470b51c8928760014c21f26","unresolved":false,"context_lines":[{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"        try:"},{"line_number":1473,"context_line":"            loaded_config \u003d loggingConfig.fileConfig(loginis)"},{"line_number":1474,"context_line":"        except TypeError:"},{"line_number":1475,"context_line":"            loaded_config \u003d \"Can\u0027t load config file with \\"},{"line_number":1476,"context_line":"                             JSON formatter\""},{"line_number":1477,"context_line":"        self.assertEqual(None, loaded_config)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f93b717_f27af7b7","line":1474,"updated":"2018-01-31 22:08:39.000000000","message":"Generally speaking, this isn\u0027t necessary.  If an exception is raised and not caught it will fail the test anyway.\n\nAlso, I would prefer to see the actual exception if a test fails so I know where to look for the problem.  This would just result in a failed assertion with an error message that provides no details.","commit_id":"f7f535c661fe048152856ac1506516dcdb280650"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a440e8943858973295d205633a72b7e93c258654","unresolved":false,"context_lines":[{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"        try:"},{"line_number":1473,"context_line":"            loaded_config \u003d loggingConfig.fileConfig(loginis)"},{"line_number":1474,"context_line":"        except TypeError:"},{"line_number":1475,"context_line":"            loaded_config \u003d \"Can\u0027t load config file with \\"},{"line_number":1476,"context_line":"                             JSON formatter\""},{"line_number":1477,"context_line":"        self.assertEqual(None, loaded_config)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_eacaab4d","line":1474,"in_reply_to":"5f93b717_f27af7b7","updated":"2018-05-03 09:18:37.000000000","message":"Done","commit_id":"f7f535c661fe048152856ac1506516dcdb280650"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"c72613a090bcc6f1a470b51c8928760014c21f26","unresolved":false,"context_lines":[{"line_number":1472,"context_line":"        try:"},{"line_number":1473,"context_line":"            loaded_config \u003d loggingConfig.fileConfig(loginis)"},{"line_number":1474,"context_line":"        except TypeError:"},{"line_number":1475,"context_line":"            loaded_config \u003d \"Can\u0027t load config file with \\"},{"line_number":1476,"context_line":"                             JSON formatter\""},{"line_number":1477,"context_line":"        self.assertEqual(None, loaded_config)"},{"line_number":1478,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f93b717_add96e57","line":1475,"updated":"2018-01-31 22:08:39.000000000","message":"This style of line continuation results in an oddly formatted string because the leading spaces in the second line are all included verbatim.  But I think this whole block should just be removed so consider this more of an FYI. :-)","commit_id":"f7f535c661fe048152856ac1506516dcdb280650"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a440e8943858973295d205633a72b7e93c258654","unresolved":false,"context_lines":[{"line_number":1472,"context_line":"        try:"},{"line_number":1473,"context_line":"            loaded_config \u003d loggingConfig.fileConfig(loginis)"},{"line_number":1474,"context_line":"        except TypeError:"},{"line_number":1475,"context_line":"            loaded_config \u003d \"Can\u0027t load config file with \\"},{"line_number":1476,"context_line":"                             JSON formatter\""},{"line_number":1477,"context_line":"        self.assertEqual(None, loaded_config)"},{"line_number":1478,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_0ac84753","line":1475,"in_reply_to":"5f93b717_add96e57","updated":"2018-05-03 09:18:37.000000000","message":"Done","commit_id":"f7f535c661fe048152856ac1506516dcdb280650"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"c72613a090bcc6f1a470b51c8928760014c21f26","unresolved":false,"context_lines":[{"line_number":1474,"context_line":"        except TypeError:"},{"line_number":1475,"context_line":"            loaded_config \u003d \"Can\u0027t load config file with \\"},{"line_number":1476,"context_line":"                             JSON formatter\""},{"line_number":1477,"context_line":"        self.assertEqual(None, loaded_config)"},{"line_number":1478,"context_line":""},{"line_number":1479,"context_line":"    def test_mk_log_config_empty(self):"},{"line_number":1480,"context_line":"        \"\"\"Ensure mk_log_config tolerates missing bits\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f93b717_2d11de52","line":1477,"updated":"2018-01-31 22:08:39.000000000","message":"assertIsNone is preferred for comparisons to None, although I\u0027m not sure this is necessary.  It appears this test is simply verifying that the fileConfig call didn\u0027t raise an exception, in which case you could remove this assert and the try...except as I noted above.","commit_id":"f7f535c661fe048152856ac1506516dcdb280650"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"a440e8943858973295d205633a72b7e93c258654","unresolved":false,"context_lines":[{"line_number":1474,"context_line":"        except TypeError:"},{"line_number":1475,"context_line":"            loaded_config \u003d \"Can\u0027t load config file with \\"},{"line_number":1476,"context_line":"                             JSON formatter\""},{"line_number":1477,"context_line":"        self.assertEqual(None, loaded_config)"},{"line_number":1478,"context_line":""},{"line_number":1479,"context_line":"    def test_mk_log_config_empty(self):"},{"line_number":1480,"context_line":"        \"\"\"Ensure mk_log_config tolerates missing bits\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5f7c97a3_9e09fcde","line":1477,"in_reply_to":"5f93b717_2d11de52","updated":"2018-05-03 09:18:37.000000000","message":"Ended up removing all of these due to race conditions I was seeing in the tests. I\u0027d be open to idea on how to test this, personally","commit_id":"f7f535c661fe048152856ac1506516dcdb280650"}]}
