)]}'
{"nova/tests/unit/virt/libvirt/test_imagebackend.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"785bbd2940d8cef0470b273774925eb40c84926b","unresolved":false,"context_lines":[{"line_number":445,"context_line":"                       mock.call(self.PATH),"},{"line_number":446,"context_line":"                       mock.call(self.TEMPLATE_PATH)]"},{"line_number":447,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":448,"context_line":"        fn(target\u003dself.TEMPLATE_PATH)"},{"line_number":449,"context_line":"        image \u003d self.image_class(self.INSTANCE, self.NAME)"},{"line_number":450,"context_line":"        self.mock_create_image(image)"},{"line_number":451,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_ae043d7e","line":448,"updated":"2016-11-24 11:22:14.000000000","message":"We are no longer asserting how fn is called, as per previous patches, please fix that.","commit_id":"c0b3ecde9b67235b4da217237dd75f3d4f8393f7"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"e3d0a45b228321db4aa1a2eda5bd2edcb03514e2","unresolved":false,"context_lines":[{"line_number":445,"context_line":"                       mock.call(self.PATH),"},{"line_number":446,"context_line":"                       mock.call(self.TEMPLATE_PATH)]"},{"line_number":447,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":448,"context_line":"        fn(target\u003dself.TEMPLATE_PATH)"},{"line_number":449,"context_line":"        image \u003d self.image_class(self.INSTANCE, self.NAME)"},{"line_number":450,"context_line":"        self.mock_create_image(image)"},{"line_number":451,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_43fa4e76","line":448,"in_reply_to":"5a74a57a_ae043d7e","updated":"2016-11-28 03:11:53.000000000","message":"Done","commit_id":"c0b3ecde9b67235b4da217237dd75f3d4f8393f7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"785bbd2940d8cef0470b273774925eb40c84926b","unresolved":false,"context_lines":[{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        image.cache(fn, self.TEMPLATE)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"        mock_exists.assert_has_calls(exist_calls)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027)"},{"line_number":457,"context_line":"    def test_cache_image_exists(self, mock_exists):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_eee715e2","line":454,"updated":"2016-11-24 11:22:14.000000000","message":"Nit: I believe the exist_calls should be defined nearer where they are used, ideally. That way the unit test is transformed into the standard \"setup, test, assert\" pattern","commit_id":"c0b3ecde9b67235b4da217237dd75f3d4f8393f7"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"e3d0a45b228321db4aa1a2eda5bd2edcb03514e2","unresolved":false,"context_lines":[{"line_number":451,"context_line":""},{"line_number":452,"context_line":"        image.cache(fn, self.TEMPLATE)"},{"line_number":453,"context_line":""},{"line_number":454,"context_line":"        mock_exists.assert_has_calls(exist_calls)"},{"line_number":455,"context_line":""},{"line_number":456,"context_line":"    @mock.patch.object(os.path, \u0027exists\u0027)"},{"line_number":457,"context_line":"    def test_cache_image_exists(self, mock_exists):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_63f74a8b","line":454,"in_reply_to":"5a74a57a_eee715e2","updated":"2016-11-28 03:11:53.000000000","message":"Done","commit_id":"c0b3ecde9b67235b4da217237dd75f3d4f8393f7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"785bbd2940d8cef0470b273774925eb40c84926b","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                       mock.call(self.PATH),"},{"line_number":477,"context_line":"                       mock.call(self.TEMPLATE_PATH)]"},{"line_number":478,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":479,"context_line":"        fn(target\u003dself.TEMPLATE_PATH)"},{"line_number":480,"context_line":"        image \u003d self.image_class(self.INSTANCE, self.NAME)"},{"line_number":481,"context_line":"        self.mock_create_image(image)"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_ee8395ca","line":479,"updated":"2016-11-24 11:22:14.000000000","message":"as above.","commit_id":"c0b3ecde9b67235b4da217237dd75f3d4f8393f7"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"e3d0a45b228321db4aa1a2eda5bd2edcb03514e2","unresolved":false,"context_lines":[{"line_number":476,"context_line":"                       mock.call(self.PATH),"},{"line_number":477,"context_line":"                       mock.call(self.TEMPLATE_PATH)]"},{"line_number":478,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":479,"context_line":"        fn(target\u003dself.TEMPLATE_PATH)"},{"line_number":480,"context_line":"        image \u003d self.image_class(self.INSTANCE, self.NAME)"},{"line_number":481,"context_line":"        self.mock_create_image(image)"},{"line_number":482,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_83f0e692","line":479,"in_reply_to":"5a74a57a_ee8395ca","updated":"2016-11-28 03:11:53.000000000","message":"Done","commit_id":"c0b3ecde9b67235b4da217237dd75f3d4f8393f7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"785bbd2940d8cef0470b273774925eb40c84926b","unresolved":false,"context_lines":[{"line_number":757,"context_line":"                       mock.call(self.PATH),"},{"line_number":758,"context_line":"                       mock.call(self.TEMPLATE_PATH)]"},{"line_number":759,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":760,"context_line":"        fn(target\u003dself.TEMPLATE_PATH)"},{"line_number":761,"context_line":"        image \u003d self.image_class(self.INSTANCE, self.NAME)"},{"line_number":762,"context_line":"        self.mock_create_image(image)"},{"line_number":763,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_0e87f1d7","line":760,"updated":"2016-11-24 11:22:14.000000000","message":"as above.","commit_id":"c0b3ecde9b67235b4da217237dd75f3d4f8393f7"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"e3d0a45b228321db4aa1a2eda5bd2edcb03514e2","unresolved":false,"context_lines":[{"line_number":757,"context_line":"                       mock.call(self.PATH),"},{"line_number":758,"context_line":"                       mock.call(self.TEMPLATE_PATH)]"},{"line_number":759,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":760,"context_line":"        fn(target\u003dself.TEMPLATE_PATH)"},{"line_number":761,"context_line":"        image \u003d self.image_class(self.INSTANCE, self.NAME)"},{"line_number":762,"context_line":"        self.mock_create_image(image)"},{"line_number":763,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_0333f662","line":760,"in_reply_to":"5a74a57a_0e87f1d7","updated":"2016-11-28 03:11:53.000000000","message":"Done","commit_id":"c0b3ecde9b67235b4da217237dd75f3d4f8393f7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"785bbd2940d8cef0470b273774925eb40c84926b","unresolved":false,"context_lines":[{"line_number":1710,"context_line":"            self.stub_out(\u0027nova.virt.libvirt.imagebackend.Ploop.get_disk_size\u0027,"},{"line_number":1711,"context_line":"                          lambda a, b: 2048)"},{"line_number":1712,"context_line":"            fn \u003d mock.MagicMock()"},{"line_number":1713,"context_line":"            fn(target\u003dself.TEMPLATE_PATH, image_id\u003dNone)"},{"line_number":1714,"context_line":"            img_path \u003d os.path.join(self.PATH, \"root.hds\")"},{"line_number":1715,"context_line":"            image \u003d self.image_class(self.INSTANCE, self.NAME)"},{"line_number":1716,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_ae60bd36","line":1713,"updated":"2016-11-24 11:22:14.000000000","message":"as above.","commit_id":"c0b3ecde9b67235b4da217237dd75f3d4f8393f7"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"e3d0a45b228321db4aa1a2eda5bd2edcb03514e2","unresolved":false,"context_lines":[{"line_number":1710,"context_line":"            self.stub_out(\u0027nova.virt.libvirt.imagebackend.Ploop.get_disk_size\u0027,"},{"line_number":1711,"context_line":"                          lambda a, b: 2048)"},{"line_number":1712,"context_line":"            fn \u003d mock.MagicMock()"},{"line_number":1713,"context_line":"            fn(target\u003dself.TEMPLATE_PATH, image_id\u003dNone)"},{"line_number":1714,"context_line":"            img_path \u003d os.path.join(self.PATH, \"root.hds\")"},{"line_number":1715,"context_line":"            image \u003d self.image_class(self.INSTANCE, self.NAME)"},{"line_number":1716,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a74a57a_436fae2a","line":1713,"in_reply_to":"5a74a57a_ae60bd36","updated":"2016-11-28 03:11:53.000000000","message":"Done","commit_id":"c0b3ecde9b67235b4da217237dd75f3d4f8393f7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eb97ea9caac174729e36b7eb810a114957c85b5d","unresolved":false,"context_lines":[{"line_number":1701,"context_line":"    def test_create_image(self, mock_extend, mock_execute,"},{"line_number":1702,"context_line":"                          mock_copy, mock_sync):"},{"line_number":1703,"context_line":"        mock_sync.side_effect \u003d lambda *a, **kw: self._fake_deco"},{"line_number":1704,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.imagebackend.Ploop.get_disk_size\u0027,"},{"line_number":1705,"context_line":"                      lambda a, b: 2048)"},{"line_number":1706,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":1707,"context_line":"        img_path \u003d os.path.join(self.PATH, \"root.hds\")"},{"line_number":1708,"context_line":"        image \u003d self.image_class(self.INSTANCE, self.NAME)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5201f7_8b94c9e2","line":1705,"range":{"start_line":1704,"start_character":8,"end_line":1705,"end_character":40},"updated":"2017-01-03 11:19:57.000000000","message":"I could be wrong, but couldn\u0027t this be a decorator too?\n\n    @mock.patch.object(imagebackend.Ploop, \u0027get_disk_size\u0027,\n                       return_value\u003d2048)\n\nMight be a little more readable","commit_id":"16ad2190d4646076658d0617ecea9b87685fcbd5"},{"author":{"_account_id":19741,"name":"Hieu LE","email":"hieulq2@viettel.com.vn","username":"hieulq"},"change_message_id":"7f86fd83a107cff51738df79471634ddd390774e","unresolved":false,"context_lines":[{"line_number":1701,"context_line":"    def test_create_image(self, mock_extend, mock_execute,"},{"line_number":1702,"context_line":"                          mock_copy, mock_sync):"},{"line_number":1703,"context_line":"        mock_sync.side_effect \u003d lambda *a, **kw: self._fake_deco"},{"line_number":1704,"context_line":"        self.stub_out(\u0027nova.virt.libvirt.imagebackend.Ploop.get_disk_size\u0027,"},{"line_number":1705,"context_line":"                      lambda a, b: 2048)"},{"line_number":1706,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":1707,"context_line":"        img_path \u003d os.path.join(self.PATH, \"root.hds\")"},{"line_number":1708,"context_line":"        image \u003d self.image_class(self.INSTANCE, self.NAME)"}],"source_content_type":"text/x-python","patch_set":8,"id":"ba5201f7_b060fb36","line":1705,"range":{"start_line":1704,"start_character":8,"end_line":1705,"end_character":40},"in_reply_to":"ba5201f7_8b94c9e2","updated":"2017-01-04 01:10:33.000000000","message":"no, you are right :-) fixed!","commit_id":"16ad2190d4646076658d0617ecea9b87685fcbd5"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c29a09e6fed7839c4c6aebdfa4b46c57e2871e40","unresolved":false,"context_lines":[{"line_number":435,"context_line":"        fn \u003d mock.MagicMock()"},{"line_number":436,"context_line":"        image \u003d self.image_class(self.INSTANCE, self.NAME)"},{"line_number":437,"context_line":"        self.mock_create_image(image)"},{"line_number":438,"context_line":"        exist_calls \u003d [mock.call(self.DISK_INFO_PATH),"},{"line_number":439,"context_line":"                       mock.call(CONF.instances_path),"},{"line_number":440,"context_line":"                       mock.call(self.TEMPLATE_DIR),"},{"line_number":441,"context_line":"                       mock.call(self.INSTANCES_PATH),"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a3c09a3_c285125a","line":438,"updated":"2017-01-18 18:54:53.000000000","message":"Nit: I much prefer this defined during the assert phase of the test, i.e. declared nearer to where it is used. Same for all the other tests here.","commit_id":"b6574ad687bbd4752ef944c34699090ab76c0185"}]}
