)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2ea8ba631b9784f18cd98b634c33a45d81b60315","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Tests: improve assertJsonEqual diagnostic message"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change adds a path information in assertJsonEqual output."},{"line_number":10,"context_line":"Example:"},{"line_number":11,"context_line":"before: Difference: 1 !\u003d 2"},{"line_number":12,"context_line":"arter: Difference: 1 !\u003d 2: path: root.country.state.city[0].street.building"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"fa31d9ce_73b60efa","line":9,"updated":"2017-02-15 18:29:36.000000000","message":"s/adds a path information in/adds path information to the/","commit_id":"9d636ba82401548b37b0bbdd7ad302db592b4361"},{"author":{"_account_id":7764,"name":"Peter Hamilton","email":"peter.hamilton@jhuapl.edu","username":"Peter"},"change_message_id":"c8fa8787d4d1251452ee584b3af7acf51f12bc22","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change adds a path information in assertJsonEqual output."},{"line_number":10,"context_line":"Example:"},{"line_number":11,"context_line":"before: Difference: 1 !\u003d 2"},{"line_number":12,"context_line":"arter: Difference: 1 !\u003d 2: path: root.country.state.city[0].street.building"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I4243e48cc7f01b5fa049e0c4aef48a72cc640d0a"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"fa6399be_8eba6b09","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":5},"updated":"2016-10-17 15:13:20.000000000","message":"nit: s/arter/after","commit_id":"9d636ba82401548b37b0bbdd7ad302db592b4361"}],"nova/test.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b07e93622a2d6aa4058bad3e9f41f7085231b3ac","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        message \u003d (\u0027%s. \u0027 % message) if message else \u0027\u0027"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        def inner(expected, observed, path\u003d\u0027root\u0027):"},{"line_number":327,"context_line":"            msg \u003d \u0027%spath: %s\u0027 % (message, path)"},{"line_number":328,"context_line":"            if isinstance(expected, dict) and isinstance(observed, dict):"},{"line_number":329,"context_line":"                msg +\u003d \u0027. Dict lengths are not equal\u0027"},{"line_number":330,"context_line":"                self.assertEqual(len(expected), len(observed), msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_1897d848","line":327,"updated":"2016-10-07 14:48:06.000000000","message":"Should there be a new line/space between the \u0027%s\u0027 and \u0027path\u0027?","commit_id":"e51cfd31d7aa8bdc26bec39b2f82885d98e1e380"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"c86013130f8409b6347257a31b10be77207a8252","unresolved":false,"context_lines":[{"line_number":324,"context_line":"        message \u003d (\u0027%s. \u0027 % message) if message else \u0027\u0027"},{"line_number":325,"context_line":""},{"line_number":326,"context_line":"        def inner(expected, observed, path\u003d\u0027root\u0027):"},{"line_number":327,"context_line":"            msg \u003d \u0027%spath: %s\u0027 % (message, path)"},{"line_number":328,"context_line":"            if isinstance(expected, dict) and isinstance(observed, dict):"},{"line_number":329,"context_line":"                msg +\u003d \u0027. Dict lengths are not equal\u0027"},{"line_number":330,"context_line":"                self.assertEqual(len(expected), len(observed), msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_0be9fbb6","line":327,"in_reply_to":"1a95cdbc_1897d848","updated":"2016-10-17 10:01:56.000000000","message":"Yes. I\u0027ve added new line for that.","commit_id":"e51cfd31d7aa8bdc26bec39b2f82885d98e1e380"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b07e93622a2d6aa4058bad3e9f41f7085231b3ac","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                expected_keys \u003d sorted(expected)"},{"line_number":332,"context_line":"                observed_keys \u003d sorted(observed)"},{"line_number":333,"context_line":"                msg +\u003d \u0027. Dict keys are not equal\u0027"},{"line_number":334,"context_line":"                self.assertEqual(expected_keys, observed_keys, msg)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"                for key in list(six.iterkeys(expected)):"},{"line_number":337,"context_line":"                    inner(expected[key], observed[key], path + \u0027.%s\u0027 % key)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_78c37c57","line":334,"range":{"start_line":334,"start_character":16,"end_line":334,"end_character":67},"updated":"2016-10-07 14:48:06.000000000","message":"Won\u0027t this print the following if it fails:\n\n    . Dict lengths are not equal\n    . Dict keys are not equal\n\n...even though the first assert passed and the lengths are clearly equal? If so, how you\u0027re building the message is wrong. I imagine you don\u0027t see this as you don\u0027t test this condition.","commit_id":"e51cfd31d7aa8bdc26bec39b2f82885d98e1e380"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"c86013130f8409b6347257a31b10be77207a8252","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                expected_keys \u003d sorted(expected)"},{"line_number":332,"context_line":"                observed_keys \u003d sorted(observed)"},{"line_number":333,"context_line":"                msg +\u003d \u0027. Dict keys are not equal\u0027"},{"line_number":334,"context_line":"                self.assertEqual(expected_keys, observed_keys, msg)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"                for key in list(six.iterkeys(expected)):"},{"line_number":337,"context_line":"                    inner(expected[key], observed[key], path + \u0027.%s\u0027 % key)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_8b718b0e","line":334,"range":{"start_line":334,"start_character":16,"end_line":334,"end_character":67},"in_reply_to":"1a95cdbc_78c37c57","updated":"2016-10-17 10:01:56.000000000","message":"Done","commit_id":"e51cfd31d7aa8bdc26bec39b2f82885d98e1e380"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"116f7c0138f85dfb31b2558cb6d4ec2137bad24e","unresolved":false,"context_lines":[{"line_number":331,"context_line":"                expected_keys \u003d sorted(expected)"},{"line_number":332,"context_line":"                observed_keys \u003d sorted(observed)"},{"line_number":333,"context_line":"                msg +\u003d \u0027. Dict keys are not equal\u0027"},{"line_number":334,"context_line":"                self.assertEqual(expected_keys, observed_keys, msg)"},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"                for key in list(six.iterkeys(expected)):"},{"line_number":337,"context_line":"                    inner(expected[key], observed[key], path + \u0027.%s\u0027 % key)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_54d65b4f","line":334,"range":{"start_line":334,"start_character":16,"end_line":334,"end_character":67},"in_reply_to":"1a95cdbc_78c37c57","updated":"2016-10-10 08:43:36.000000000","message":"Good catch, thank you. I\u0027ll fix.","commit_id":"e51cfd31d7aa8bdc26bec39b2f82885d98e1e380"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"b07e93622a2d6aa4058bad3e9f41f7085231b3ac","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        except testtools.matchers.MismatchError as e:"},{"line_number":355,"context_line":"            difference \u003d e.mismatch.describe()"},{"line_number":356,"context_line":"            message \u003d \"\\nexpected:\\n%s\\nactual:\\n%s\\ndifference:\\n%s\\n\" % ("},{"line_number":357,"context_line":"                pprint.pformat(expected), pprint.pformat(observed),"},{"line_number":358,"context_line":"                difference)"},{"line_number":359,"context_line":"            error \u003d AssertionError(message)"},{"line_number":360,"context_line":"            error.expected \u003d expected"},{"line_number":361,"context_line":"            error.observed \u003d observed"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a95cdbc_b8bc24bc","line":358,"range":{"start_line":357,"start_character":42,"end_line":358,"end_character":27},"updated":"2016-10-07 14:48:06.000000000","message":"Can you put this whole thing on a new line?","commit_id":"e51cfd31d7aa8bdc26bec39b2f82885d98e1e380"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"c86013130f8409b6347257a31b10be77207a8252","unresolved":false,"context_lines":[{"line_number":354,"context_line":"        except testtools.matchers.MismatchError as e:"},{"line_number":355,"context_line":"            difference \u003d e.mismatch.describe()"},{"line_number":356,"context_line":"            message \u003d \"\\nexpected:\\n%s\\nactual:\\n%s\\ndifference:\\n%s\\n\" % ("},{"line_number":357,"context_line":"                pprint.pformat(expected), pprint.pformat(observed),"},{"line_number":358,"context_line":"                difference)"},{"line_number":359,"context_line":"            error \u003d AssertionError(message)"},{"line_number":360,"context_line":"            error.expected \u003d expected"},{"line_number":361,"context_line":"            error.observed \u003d observed"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_6b76f706","line":358,"range":{"start_line":357,"start_character":42,"end_line":358,"end_character":27},"in_reply_to":"1a95cdbc_b8bc24bc","updated":"2016-10-17 10:01:56.000000000","message":"Done","commit_id":"e51cfd31d7aa8bdc26bec39b2f82885d98e1e380"}],"nova/tests/unit/test_test.py":[{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"12d76cb73f9fab885f3cbd976aa43b5e897b0c14","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        self.assertEqual(\u00271 !\u003d 2: path: root[0]\u0027,"},{"line_number":167,"context_line":"                         self._describe_mismatch([1], [2]))"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        expected \u003d {"},{"line_number":170,"context_line":"            \u0027country\u0027: {"},{"line_number":171,"context_line":"                \u0027state\u0027: {"},{"line_number":172,"context_line":"                    \u0027city\u0027: [{\u0027street\u0027: {\u0027building\u0027: 1}}]"},{"line_number":173,"context_line":"                }"},{"line_number":174,"context_line":"            }"},{"line_number":175,"context_line":"        }"},{"line_number":176,"context_line":"        observed \u003d {"},{"line_number":177,"context_line":"            \u0027country\u0027: {"},{"line_number":178,"context_line":"                \u0027state\u0027: {"},{"line_number":179,"context_line":"                    \u0027city\u0027: [{\u0027street\u0027: {\u0027building\u0027: 2}}]"},{"line_number":180,"context_line":"                }"},{"line_number":181,"context_line":"            }"},{"line_number":182,"context_line":"        }"},{"line_number":183,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_787b8af5","line":180,"range":{"start_line":169,"start_character":2,"end_line":180,"end_character":17},"updated":"2016-09-26 10:02:23.000000000","message":"could you please add more cases for testing?","commit_id":"d25c40068d09f041c8113304082429dd920f179d"},{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"fee378ec5b85b0aa2667f06ec642c3c9b6de1479","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        self.assertEqual(\u00271 !\u003d 2: path: root[0]\u0027,"},{"line_number":167,"context_line":"                         self._describe_mismatch([1], [2]))"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        expected \u003d {"},{"line_number":170,"context_line":"            \u0027country\u0027: {"},{"line_number":171,"context_line":"                \u0027state\u0027: {"},{"line_number":172,"context_line":"                    \u0027city\u0027: [{\u0027street\u0027: {\u0027building\u0027: 1}}]"},{"line_number":173,"context_line":"                }"},{"line_number":174,"context_line":"            }"},{"line_number":175,"context_line":"        }"},{"line_number":176,"context_line":"        observed \u003d {"},{"line_number":177,"context_line":"            \u0027country\u0027: {"},{"line_number":178,"context_line":"                \u0027state\u0027: {"},{"line_number":179,"context_line":"                    \u0027city\u0027: [{\u0027street\u0027: {\u0027building\u0027: 2}}]"},{"line_number":180,"context_line":"                }"},{"line_number":181,"context_line":"            }"},{"line_number":182,"context_line":"        }"},{"line_number":183,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_4d2a0080","line":180,"range":{"start_line":169,"start_character":2,"end_line":180,"end_character":17},"in_reply_to":"5a8bc5a2_787b8af5","updated":"2016-09-28 11:06:29.000000000","message":"Yep, tests for each code branch were modified/added.","commit_id":"d25c40068d09f041c8113304082429dd920f179d"}]}
