)]}'
{"oslo_log/tests/unit/test_log.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"3a83f64e7e54b781a5374299aef007c7e32972ca","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        self.assertTrue(data)"},{"line_number":375,"context_line":"        self.assertTrue(\u0027extra\u0027 in data)"},{"line_number":376,"context_line":"        self.assertTrue(\u0027special_user\u0027 in data[\u0027extra\u0027])"},{"line_number":377,"context_line":"        self.assertTrue(list(extra_data.keys())[0] in data[\u0027extra\u0027])"},{"line_number":378,"context_line":"        self.assertEqual(list(extra_data.values())[0],"},{"line_number":379,"context_line":"                         data[\u0027extra\u0027][list(extra_data.keys())[0]])"},{"line_number":380,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_8a2d8100","line":377,"updated":"2016-02-29 11:45:37.000000000","message":"this assert replicates the one just above?","commit_id":"aee58fd39863c89a0c0409b5edbd631aecfc0bd7"},{"author":{"_account_id":16051,"name":"Ronald Bradford","email":"ronald.bradford@gmail.com","username":"ronaldbradford"},"change_message_id":"4816d789f92b90d36b08eb1bbc20364abca5d317","unresolved":false,"context_lines":[{"line_number":374,"context_line":"        self.assertTrue(data)"},{"line_number":375,"context_line":"        self.assertTrue(\u0027extra\u0027 in data)"},{"line_number":376,"context_line":"        self.assertTrue(\u0027special_user\u0027 in data[\u0027extra\u0027])"},{"line_number":377,"context_line":"        self.assertTrue(list(extra_data.keys())[0] in data[\u0027extra\u0027])"},{"line_number":378,"context_line":"        self.assertEqual(list(extra_data.values())[0],"},{"line_number":379,"context_line":"                         data[\u0027extra\u0027][list(extra_data.keys())[0]])"},{"line_number":380,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_11b4f87f","line":377,"in_reply_to":"9aed3d3a_8a2d8100","updated":"2016-02-29 15:43:21.000000000","message":"removed!","commit_id":"aee58fd39863c89a0c0409b5edbd631aecfc0bd7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"3a83f64e7e54b781a5374299aef007c7e32972ca","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        self.assertTrue(\u0027special_user\u0027 in data[\u0027extra\u0027])"},{"line_number":377,"context_line":"        self.assertTrue(list(extra_data.keys())[0] in data[\u0027extra\u0027])"},{"line_number":378,"context_line":"        self.assertEqual(list(extra_data.values())[0],"},{"line_number":379,"context_line":"                         data[\u0027extra\u0027][list(extra_data.keys())[0]])"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def test_json_with_extra_keys(self):"},{"line_number":382,"context_line":"        test_msg \u003d \u0027This is a %(test)s line\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_2ae1d59a","line":379,"updated":"2016-02-29 11:45:37.000000000","message":"This work?\n\n  self.assertEqual(extra_data.items()[0], data[\u0027extra\u0027].items()[0])\n\nOr even:\n\n  self.assertEqual(extra_data, data[\u0027extra\u0027])","commit_id":"aee58fd39863c89a0c0409b5edbd631aecfc0bd7"},{"author":{"_account_id":16051,"name":"Ronald Bradford","email":"ronald.bradford@gmail.com","username":"ronaldbradford"},"change_message_id":"4816d789f92b90d36b08eb1bbc20364abca5d317","unresolved":false,"context_lines":[{"line_number":376,"context_line":"        self.assertTrue(\u0027special_user\u0027 in data[\u0027extra\u0027])"},{"line_number":377,"context_line":"        self.assertTrue(list(extra_data.keys())[0] in data[\u0027extra\u0027])"},{"line_number":378,"context_line":"        self.assertEqual(list(extra_data.values())[0],"},{"line_number":379,"context_line":"                         data[\u0027extra\u0027][list(extra_data.keys())[0]])"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def test_json_with_extra_keys(self):"},{"line_number":382,"context_line":"        test_msg \u003d \u0027This is a %(test)s line\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_919128f4","line":379,"in_reply_to":"9aed3d3a_2ae1d59a","updated":"2016-02-29 15:43:21.000000000","message":"The list comprehension is necessary for Python3 compatibility","commit_id":"aee58fd39863c89a0c0409b5edbd631aecfc0bd7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"3a83f64e7e54b781a5374299aef007c7e32972ca","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        test_msg \u003d \u0027This is a %(test)s line\u0027"},{"line_number":383,"context_line":"        test_data \u003d {\u0027test\u0027: \u0027log\u0027}"},{"line_number":384,"context_line":"        extra_keys \u003d [\u0027special_tenant\u0027]"},{"line_number":385,"context_line":"        special_tenant \u003d \u0027unicorns\u0027"},{"line_number":386,"context_line":"        self.log.debug(test_msg, test_data, key\u003d\u0027value\u0027,"},{"line_number":387,"context_line":"                       extra_keys\u003dextra_keys, special_tenant\u003dspecial_tenant)"},{"line_number":388,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_4a9259f7","line":385,"updated":"2016-02-29 11:45:37.000000000","message":"L392-393 would be easier if you did:\n\n  extra \u003d {\u0027special_tenant\u0027: \u0027unicorns\u0027}\n  self.log.debug(test_msg, test_data, key\u003d\u0027value\u0027,\n                 extra_keys\u003dextra.keys(), special_tenant\u003dextra.values()[0])","commit_id":"aee58fd39863c89a0c0409b5edbd631aecfc0bd7"},{"author":{"_account_id":16051,"name":"Ronald Bradford","email":"ronald.bradford@gmail.com","username":"ronaldbradford"},"change_message_id":"4816d789f92b90d36b08eb1bbc20364abca5d317","unresolved":false,"context_lines":[{"line_number":382,"context_line":"        test_msg \u003d \u0027This is a %(test)s line\u0027"},{"line_number":383,"context_line":"        test_data \u003d {\u0027test\u0027: \u0027log\u0027}"},{"line_number":384,"context_line":"        extra_keys \u003d [\u0027special_tenant\u0027]"},{"line_number":385,"context_line":"        special_tenant \u003d \u0027unicorns\u0027"},{"line_number":386,"context_line":"        self.log.debug(test_msg, test_data, key\u003d\u0027value\u0027,"},{"line_number":387,"context_line":"                       extra_keys\u003dextra_keys, special_tenant\u003dspecial_tenant)"},{"line_number":388,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_34712a77","line":385,"in_reply_to":"9aed3d3a_4a9259f7","updated":"2016-02-29 15:43:21.000000000","message":"it may seem easier for the unit test, but if the arguments are a list and a string I would like emulate what the code may do.","commit_id":"aee58fd39863c89a0c0409b5edbd631aecfc0bd7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"3a83f64e7e54b781a5374299aef007c7e32972ca","unresolved":false,"context_lines":[{"line_number":739,"context_line":"        self.log.info(message, context\u003dctxt, instance_uuid\u003duuid)"},{"line_number":740,"context_line":"        infoexpected \u003d \u0027[%s]: [instance: %s] %s\\n\u0027 % (ctxt.request_id,"},{"line_number":741,"context_line":"                                                      uuid,"},{"line_number":742,"context_line":"                                                      message)"},{"line_number":743,"context_line":"        self.assertEqual(infoexpected, self.stream.getvalue())"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"    def test_instance_uuid_as_arg_in_default_log_msg(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_ca6b09f0","line":742,"updated":"2016-02-29 11:45:37.000000000","message":"nit: hate \"visual\" formatting when it gets as cramped as this","commit_id":"aee58fd39863c89a0c0409b5edbd631aecfc0bd7"},{"author":{"_account_id":16051,"name":"Ronald Bradford","email":"ronald.bradford@gmail.com","username":"ronaldbradford"},"change_message_id":"1c4ed01e6bafba5145b9d1e692d872dac6007567","unresolved":false,"context_lines":[{"line_number":739,"context_line":"        self.log.info(message, context\u003dctxt, instance_uuid\u003duuid)"},{"line_number":740,"context_line":"        infoexpected \u003d \u0027[%s]: [instance: %s] %s\\n\u0027 % (ctxt.request_id,"},{"line_number":741,"context_line":"                                                      uuid,"},{"line_number":742,"context_line":"                                                      message)"},{"line_number":743,"context_line":"        self.assertEqual(infoexpected, self.stream.getvalue())"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"    def test_instance_uuid_as_arg_in_default_log_msg(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_f43d02de","line":742,"in_reply_to":"9aed3d3a_ca6b09f0","updated":"2016-02-29 15:47:30.000000000","message":"I concur, tried to clean it up a bit.","commit_id":"aee58fd39863c89a0c0409b5edbd631aecfc0bd7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"3a83f64e7e54b781a5374299aef007c7e32972ca","unresolved":false,"context_lines":[{"line_number":770,"context_line":"        self.assertEqual(infoexpected, self.stream.getvalue())"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"    def test_instance_from_context_in_context_log_msg(self):"},{"line_number":773,"context_line":"        # NOTE: instance whne passed in a context object is just a uuid."},{"line_number":774,"context_line":"        # When passed to the log record, it is a dict."},{"line_number":775,"context_line":"        ctxt \u003d _fake_context()"},{"line_number":776,"context_line":"        ctxt.instance \u003d \u0027IIIIIIII-8A12-4C53-A736-D7A1C36A62F3\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_ca42e967","line":773,"range":{"start_line":773,"start_character":25,"end_line":773,"end_character":29},"updated":"2016-02-29 11:45:37.000000000","message":"nit: when","commit_id":"aee58fd39863c89a0c0409b5edbd631aecfc0bd7"},{"author":{"_account_id":16051,"name":"Ronald Bradford","email":"ronald.bradford@gmail.com","username":"ronaldbradford"},"change_message_id":"1c4ed01e6bafba5145b9d1e692d872dac6007567","unresolved":false,"context_lines":[{"line_number":770,"context_line":"        self.assertEqual(infoexpected, self.stream.getvalue())"},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"    def test_instance_from_context_in_context_log_msg(self):"},{"line_number":773,"context_line":"        # NOTE: instance whne passed in a context object is just a uuid."},{"line_number":774,"context_line":"        # When passed to the log record, it is a dict."},{"line_number":775,"context_line":"        ctxt \u003d _fake_context()"},{"line_number":776,"context_line":"        ctxt.instance \u003d \u0027IIIIIIII-8A12-4C53-A736-D7A1C36A62F3\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aed3d3a_942d96aa","line":773,"range":{"start_line":773,"start_character":25,"end_line":773,"end_character":29},"in_reply_to":"9aed3d3a_ca42e967","updated":"2016-02-29 15:47:30.000000000","message":"fixed","commit_id":"aee58fd39863c89a0c0409b5edbd631aecfc0bd7"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"c5279f7926fd35045a975b077b40a92a3875f4ba","unresolved":false,"context_lines":[{"line_number":375,"context_line":"        self.assertTrue(data)"},{"line_number":376,"context_line":"        self.assertTrue(\u0027extra\u0027 in data)"},{"line_number":377,"context_line":"        for k, v in extra_data.items():"},{"line_number":378,"context_line":"            self.assertTrue(k in data[\u0027extra\u0027])"},{"line_number":379,"context_line":"            self.assertEqual(v, data[\u0027extra\u0027][k])"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    def test_json_with_extra_keys(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_fa85e9ce","line":378,"updated":"2016-02-29 16:10:44.000000000","message":"-1: You should use assertIn, gives a better error message. But really you should just compare the dicts.","commit_id":"e12f7edd9ba785df70aa26e12f33091600364e97"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"c5279f7926fd35045a975b077b40a92a3875f4ba","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        self.assertTrue(extra_keys[0] in data[\u0027extra\u0027])"},{"line_number":395,"context_line":"        self.assertEqual(special_tenant, data[\u0027extra\u0027][extra_keys[0]])"},{"line_number":396,"context_line":"        self.assertTrue(extra_keys[1] in data[\u0027extra\u0027])"},{"line_number":397,"context_line":"        self.assertEqual(special_user, data[\u0027extra\u0027][extra_keys[1]])"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"def get_fake_datetime(retval):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_ba3241a5","line":397,"updated":"2016-02-29 16:10:44.000000000","message":"-1: see now you need four asserts to do the same as:\n\n  self.assertEqual(extra, data[\u0027extra\u0027])\n\nAnd now there are two keys we have to worry about ordering causing intermittent test failures.","commit_id":"e12f7edd9ba785df70aa26e12f33091600364e97"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"c5279f7926fd35045a975b077b40a92a3875f4ba","unresolved":false,"context_lines":[{"line_number":681,"context_line":"        message \u003d \u0027info\u0027"},{"line_number":682,"context_line":"        self.colorlog.info(message, context\u003dctxt, resource\u003dfake_resource)"},{"line_number":683,"context_line":"        values \u003d (infocolor, ctxt.request_id, resource, message)"},{"line_number":684,"context_line":"        infoexpected \u003d \u0027%s [%s]: [%s] %s\\n\u0027 % values"},{"line_number":685,"context_line":"        self.assertEqual(infoexpected, self.stream.getvalue())"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"    def test_resource_key_dict_in_log_msg(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9aed3d3a_7aa55945","line":684,"updated":"2016-02-29 16:10:44.000000000","message":"this looks nicer, thanks. For your interest, I usually go with the more point-free:\n\n  aaaaaaaaa \u003d (\"%s %s %s %s %s %s\" %\n      aaa, bbb, ccc...)","commit_id":"e12f7edd9ba785df70aa26e12f33091600364e97"}]}
