)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"521c3031c4e04f5f3dfcd4865a6eb2098c9ebbb2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"subunit2html dealing with incorrect data format"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The patch encodes a data string which contains "},{"line_number":10,"context_line":"non-ASCII characters to unicode type."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"In python2 there are two text types str and unicode."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_993f04b1","line":9,"range":{"start_line":9,"start_character":46,"end_line":9,"end_character":47},"updated":"2020-01-08 08:09:22.000000000","message":"There\u0027s a trailing space.","commit_id":"486a3cfe36f05bed487ab0330f4961f35859a4dc"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"521c3031c4e04f5f3dfcd4865a6eb2098c9ebbb2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"\u003e\u003e\u003e \"Hello \" + u\"World\""},{"line_number":15,"context_line":"u\u0027Hello World\u0027"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The string on the left is decoded by using the default "},{"line_number":18,"context_line":"system encoding into a Unicode string."},{"line_number":19,"context_line":"If it would contain non-ASCII characters(as in our case) "},{"line_number":20,"context_line":"this normally blow up with an UnicodeDecodeError because "}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_3974d09b","line":17,"range":{"start_line":17,"start_character":54,"end_line":17,"end_character":55},"updated":"2020-01-08 08:09:22.000000000","message":"ditto","commit_id":"486a3cfe36f05bed487ab0330f4961f35859a4dc"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"521c3031c4e04f5f3dfcd4865a6eb2098c9ebbb2","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The string on the left is decoded by using the default "},{"line_number":18,"context_line":"system encoding into a Unicode string."},{"line_number":19,"context_line":"If it would contain non-ASCII characters(as in our case) "},{"line_number":20,"context_line":"this normally blow up with an UnicodeDecodeError because "},{"line_number":21,"context_line":"the default encoding is set to ASCII."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_59774ca0","line":19,"range":{"start_line":19,"start_character":56,"end_line":19,"end_character":57},"updated":"2020-01-08 08:09:22.000000000","message":"ditto","commit_id":"486a3cfe36f05bed487ab0330f4961f35859a4dc"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"521c3031c4e04f5f3dfcd4865a6eb2098c9ebbb2","unresolved":false,"context_lines":[{"line_number":17,"context_line":"The string on the left is decoded by using the default "},{"line_number":18,"context_line":"system encoding into a Unicode string."},{"line_number":19,"context_line":"If it would contain non-ASCII characters(as in our case) "},{"line_number":20,"context_line":"this normally blow up with an UnicodeDecodeError because "},{"line_number":21,"context_line":"the default encoding is set to ASCII."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I17e5aa6f45133d9d12aa38cec9cc42694913d4bd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3fa7e38b_f96958bf","line":20,"range":{"start_line":20,"start_character":56,"end_line":20,"end_character":57},"updated":"2020-01-08 08:09:22.000000000","message":"ditto","commit_id":"486a3cfe36f05bed487ab0330f4961f35859a4dc"}],"os_testr/subunit2html.py":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"521c3031c4e04f5f3dfcd4865a6eb2098c9ebbb2","unresolved":false,"context_lines":[{"line_number":681,"context_line":"        tmpl \u003d (has_output and TemplateData.REPORT_TEST_WITH_OUTPUT_TMPL or"},{"line_number":682,"context_line":"                TemplateData.REPORT_TEST_NO_OUTPUT_TMPL)"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        try:"},{"line_number":685,"context_line":"            output \u003d saxutils.escape(o + e)"},{"line_number":686,"context_line":"        except UnicodeDecodeError:"},{"line_number":687,"context_line":"            e \u003d codecs.decode(e, \u0027utf-8\u0027)"},{"line_number":688,"context_line":"            output \u003d saxutils.escape(o + e)"},{"line_number":689,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_3c4a7e82","line":686,"range":{"start_line":684,"start_character":0,"end_line":686,"end_character":34},"updated":"2020-01-08 08:09:22.000000000","message":"Can we remove this try clause? In other words, can we execute `e \u003d codecs.decode(e, \u0027utf-8\u0027)` always? If yes, it makes this patch simpler.\n\nAnd, could you add unit tests for this change?","commit_id":"486a3cfe36f05bed487ab0330f4961f35859a4dc"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"002ae49038247fad1a9a20ed3825e340147f047c","unresolved":false,"context_lines":[{"line_number":681,"context_line":"        tmpl \u003d (has_output and TemplateData.REPORT_TEST_WITH_OUTPUT_TMPL or"},{"line_number":682,"context_line":"                TemplateData.REPORT_TEST_NO_OUTPUT_TMPL)"},{"line_number":683,"context_line":""},{"line_number":684,"context_line":"        try:"},{"line_number":685,"context_line":"            output \u003d saxutils.escape(o + e)"},{"line_number":686,"context_line":"        except UnicodeDecodeError:"},{"line_number":687,"context_line":"            e \u003d codecs.decode(e, \u0027utf-8\u0027)"},{"line_number":688,"context_line":"            output \u003d saxutils.escape(o + e)"},{"line_number":689,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_68def010","line":686,"range":{"start_line":684,"start_character":0,"end_line":686,"end_character":34},"in_reply_to":"3fa7e38b_3c4a7e82","updated":"2020-01-08 12:54:21.000000000","message":"Hi Masayuki,\nWe can not remove the try clause, because in case we use python3\nwe will get a TypeError.","commit_id":"486a3cfe36f05bed487ab0330f4961f35859a4dc"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"b6c165085bf304931f71ac341f748403a9e17c9f","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        self.failure_count +\u003d 1"},{"line_number":502,"context_line":"        _exc_str \u003d self.formatErr(err)"},{"line_number":503,"context_line":"        if no_ascii:"},{"line_number":504,"context_line":"            _exc_str +\u003d \u0027\\xe2\\x82\\xa5\u0027"},{"line_number":505,"context_line":"        output \u003d test.shortDescription()"},{"line_number":506,"context_line":"        if output is None:"},{"line_number":507,"context_line":"            output \u003d test.id()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_93b08dff","line":504,"range":{"start_line":504,"start_character":0,"end_line":504,"end_character":38},"updated":"2020-01-21 00:20:43.000000000","message":"I\u0027m not sure the reason why we should add this string to _exc_str.","commit_id":"c507992c1733f094458b009d240fa7cf3febf40a"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"8f2a731db77e7e56dfe42bef183f851a4f47e08a","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        self.failure_count +\u003d 1"},{"line_number":502,"context_line":"        _exc_str \u003d self.formatErr(err)"},{"line_number":503,"context_line":"        if no_ascii:"},{"line_number":504,"context_line":"            _exc_str +\u003d \u0027\\xe2\\x82\\xa5\u0027"},{"line_number":505,"context_line":"        output \u003d test.shortDescription()"},{"line_number":506,"context_line":"        if output is None:"},{"line_number":507,"context_line":"            output \u003d test.id()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_cdaaccd1","line":504,"range":{"start_line":504,"start_character":0,"end_line":504,"end_character":38},"in_reply_to":"3fa7e38b_7af26f6b","updated":"2020-01-22 08:58:22.000000000","message":"Sure, agree\nDone","commit_id":"c507992c1733f094458b009d240fa7cf3febf40a"},{"author":{"_account_id":19262,"name":"Liron Kuchlani","email":"lkuchlan@redhat.com","username":"lkuchlan"},"change_message_id":"f8e22ef1dd10da69ed4ef82c1d4c3081b5843a27","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        self.failure_count +\u003d 1"},{"line_number":502,"context_line":"        _exc_str \u003d self.formatErr(err)"},{"line_number":503,"context_line":"        if no_ascii:"},{"line_number":504,"context_line":"            _exc_str +\u003d \u0027\\xe2\\x82\\xa5\u0027"},{"line_number":505,"context_line":"        output \u003d test.shortDescription()"},{"line_number":506,"context_line":"        if output is None:"},{"line_number":507,"context_line":"            output \u003d test.id()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_94f7148f","line":504,"range":{"start_line":504,"start_character":0,"end_line":504,"end_character":38},"in_reply_to":"3fa7e38b_93b08dff","updated":"2020-01-21 06:37:26.000000000","message":"The whole purpose of this fix is to handle with failure that contains no-ascii characters.\nSo in order to simulate this scenario we need to add no-ascii character to the failure,\notherwise we\u0027re not really reproduce the case.","commit_id":"c507992c1733f094458b009d240fa7cf3febf40a"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"fd659cefc24d37614d76a4d45bec32a2c87f3ad3","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        self.failure_count +\u003d 1"},{"line_number":502,"context_line":"        _exc_str \u003d self.formatErr(err)"},{"line_number":503,"context_line":"        if no_ascii:"},{"line_number":504,"context_line":"            _exc_str +\u003d \u0027\\xe2\\x82\\xa5\u0027"},{"line_number":505,"context_line":"        output \u003d test.shortDescription()"},{"line_number":506,"context_line":"        if output is None:"},{"line_number":507,"context_line":"            output \u003d test.id()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_7af26f6b","line":504,"range":{"start_line":504,"start_character":0,"end_line":504,"end_character":38},"in_reply_to":"3fa7e38b_94f7148f","updated":"2020-01-22 01:54:42.000000000","message":"Well, I see your point. But this subunit2html.py is an actual code. So, why don\u0027t we put this into the unit test code?","commit_id":"c507992c1733f094458b009d240fa7cf3febf40a"}]}
