)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"dac8bf74aa1d0d7efbd85209044e032d7126f20f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The \u0027has_calls\u0027 method does not exist in assertion methods of mock."},{"line_number":10,"context_line":"Replace the \u0027has_calls\u0027 method with an \u0027assert_has_calls\u0027 method or"},{"line_number":11,"context_line":"an \u0027assert_called_once_with\u0027 method."},{"line_number":12,"context_line":"Add an \u0027assertEqual\u0027 check before an \u0027assert_has_calls\u0027 method."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I4b606fce473d064b9bb00213696c075cea020aaf"},{"line_number":15,"context_line":"Closes-Bug: #1840200"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"7faddb67_d36d9b03","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":63},"updated":"2019-08-15 02:41:23.000000000","message":"lgtm","commit_id":"977f634066634f04caf2fbb79b726c08c4b48594"}],"nova/tests/unit/compute/test_compute_mgr.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5be70b2f86684adedeb50470094e54dce4c8c2c4","unresolved":false,"context_lines":[{"line_number":322,"context_line":"        self.compute.update_available_resource(self.context, startup\u003dTrue)"},{"line_number":323,"context_line":"        get_db_nodes.assert_called_once_with(self.context, use_slave\u003dTrue,"},{"line_number":324,"context_line":"                                             startup\u003dTrue)"},{"line_number":325,"context_line":"        self.assertEqual(len(avail_nodes_l), update_mock.call_count)"},{"line_number":326,"context_line":"        update_mock.assert_has_calls("},{"line_number":327,"context_line":"            [mock.call(self.context, node, startup\u003dTrue)"},{"line_number":328,"context_line":"             for node in avail_nodes_l]"},{"line_number":329,"context_line":"        )"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"        # First node in set should have been removed from DB"},{"line_number":332,"context_line":"        for db_node in db_nodes:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_6fd84c51","line":329,"range":{"start_line":325,"start_character":0,"end_line":329,"end_character":9},"updated":"2019-08-19 08:30:36.000000000","message":"could use \u0027assert_called_once_with\u0027 here","commit_id":"ad482e53fbb956288e73692f6bff5f74d862fe5d"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5be70b2f86684adedeb50470094e54dce4c8c2c4","unresolved":false,"context_lines":[{"line_number":14597,"context_line":"        drvr._detach_direct_passthrough_ports(self.context, instance, guest)"},{"line_number":14598,"context_line":""},{"line_number":14599,"context_line":"        expected_xml \u003d ["},{"line_number":14600,"context_line":"            (\u0027\u003chostdev mode\u003d\"subsystem\" type\u003d\"pci\" managed\u003d\"yes\"\u003e\\n\u0027"},{"line_number":14601,"context_line":"             \u0027  \u003csource\u003e\\n\u0027"},{"line_number":14602,"context_line":"             \u0027    \u003caddress bus\u003d\"0x00\" domain\u003d\"0x0000\" \u0027"},{"line_number":14603,"context_line":"             \u0027function\u003d\"0x0\" slot\u003d\"0x00\"/\u003e\\n\u0027"},{"line_number":14604,"context_line":"             \u0027  \u003c/source\u003e\\n\u0027"},{"line_number":14605,"context_line":"             \u0027\u003c/hostdev\u003e\\n\u0027),"},{"line_number":14606,"context_line":"            (\u0027\u003chostdev mode\u003d\"subsystem\" type\u003d\"pci\" managed\u003d\"yes\"\u003e\\n\u0027"},{"line_number":14607,"context_line":"             \u0027  \u003csource\u003e\\n\u0027"},{"line_number":14608,"context_line":"             \u0027    \u003caddress bus\u003d\"0x00\" domain\u003d\"0x0000\" \u0027"},{"line_number":14609,"context_line":"             \u0027function\u003d\"0x1\" slot\u003d\"0x00\"/\u003e\\n\u0027"},{"line_number":14610,"context_line":"             \u0027  \u003c/source\u003e\\n\u0027"},{"line_number":14611,"context_line":"             \u0027\u003c/hostdev\u003e\\n\u0027)"},{"line_number":14612,"context_line":"        ]"},{"line_number":14613,"context_line":""},{"line_number":14614,"context_line":"        self.assertEqual(2, mock_detachDeviceFlags.call_count)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7faddb67_efebdcd9","line":14611,"range":{"start_line":14600,"start_character":0,"end_line":14611,"end_character":28},"updated":"2019-08-19 08:30:36.000000000","message":"nit: _personally_, I wouldn\u0027t bother wrapping this and would instead \u0027# noqa\u0027 it.","commit_id":"ad482e53fbb956288e73692f6bff5f74d862fe5d"}]}
