)]}'
{"tests/v2/test_shell_v2.py":[{"author":{"_account_id":4463,"name":"iccha-sethi","email":"iccha.sethi@rackspace.com","username":"iccha-sethi"},"change_message_id":"d7f860792f0c071bbce8bdda2a8ad11b562944c6","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from glanceclient.v2 import shell as test_shell"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class LegacyShellV1Test(testtools.TestCase):"},{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super(LegacyShellV1Test, self).setUp()"},{"line_number":28,"context_line":"        self._mock_utils()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2Fgfg%3D","line":25,"updated":"2013-06-28 21:16:25.000000000","message":"why does the class name say v1 and file name v2?","commit_id":"2eeef7004dcb210c477458884dd81ca2ae5ac984"},{"author":{"_account_id":7780,"name":"Jared Culp","email":"jared.culp@rackspace.com","username":"jaredculp"},"change_message_id":"1dfa0acb073fe0965d32f6ddeecb85e3a3947475","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self._mock_utils()"},{"line_number":29,"context_line":"        self.gc \u003d self._mock_glance_client()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _make_args(self, args):"},{"line_number":32,"context_line":"        class Args():"},{"line_number":33,"context_line":"            def __init__(self, entries):"},{"line_number":34,"context_line":"                self.__dict__.update(entries)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FRXw%3D","line":31,"updated":"2013-07-05 14:51:45.000000000","message":"Why do you need this function? Can\u0027t you just pass in the dictionary itself in the tests below instead of wrapping it in an object?","commit_id":"d8bc28b5eadeaf9f2d48dcb8f499889981e96702"},{"author":{"_account_id":7780,"name":"Jared Culp","email":"jared.culp@rackspace.com","username":"jaredculp"},"change_message_id":"c2d3b1a7be04c95f05bc96b575b999339fe11d99","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self._mock_utils()"},{"line_number":29,"context_line":"        self.gc \u003d self._mock_glance_client()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _make_args(self, args):"},{"line_number":32,"context_line":"        class Args():"},{"line_number":33,"context_line":"            def __init__(self, entries):"},{"line_number":34,"context_line":"                self.__dict__.update(entries)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F8uE%3D","line":31,"in_reply_to":"AAAAPn%2F%2FRXw%3D","updated":"2013-07-08 18:06:18.000000000","message":"Disregard.","commit_id":"d8bc28b5eadeaf9f2d48dcb8f499889981e96702"},{"author":{"_account_id":7703,"name":"Venkatesh Sampath","email":"venkatesh.sampath@outlook.com","username":"venkateshsampath"},"change_message_id":"bfa7b601d5fbf6ea28582fd321486d28557bd276","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self._mock_utils()"},{"line_number":29,"context_line":"        self.gc \u003d self._mock_glance_client()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _make_args(self, args):"},{"line_number":32,"context_line":"        class Args():"},{"line_number":33,"context_line":"            def __init__(self, entries):"},{"line_number":34,"context_line":"                self.__dict__.update(entries)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAP3%2F%2F8rk%3D","line":31,"in_reply_to":"AAAAPn%2F%2FRXw%3D","updated":"2013-07-08 18:17:34.000000000","message":"Hi Jared, v2/shell.py expects an object in place of dict. If passed dict, throws an error like \"AttributeError: \u0027dict\u0027 object has no attribute \u0027visibility\u0027\". Hence had to wrap the dict with an object.","commit_id":"d8bc28b5eadeaf9f2d48dcb8f499889981e96702"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"73f63d60ca486545e835085e688cfbfcff22d085","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_do_image_list(self):"},{"line_number":56,"context_line":"        args \u003d self._make_args("},{"line_number":57,"context_line":"            {\u0027page_size\u0027: 18, \u0027visibility\u0027: True, \u0027member_status\u0027: \u0027Fake\u0027,"},{"line_number":58,"context_line":"             \u0027owner\u0027: \u0027test\u0027})"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        with mock.patch.object(self.gc.images, \u0027list\u0027) as mocked_list:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2FimA%3D","line":57,"updated":"2013-07-16 21:53:04.000000000","message":"might want to use the args compliant with Hacking stlye\n\nargs \u003d self._make_args({\n              \u0027page_size\u0027: 18,\n              \u0027visibility\u0027: True,\n              ...\n          }\n\nguidelines in the hacking file @ https://github.com/openstack/glance/blob/master/HACKING.rst#dictionarieslists","commit_id":"15e4a96d44b248c903bc96167efe8740e06eabae"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"73f63d60ca486545e835085e688cfbfcff22d085","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        with mock.patch.object(self.gc.images, \u0027list\u0027) as mocked_list:"},{"line_number":61,"context_line":"            mocked_list.return_value \u003d {}"},{"line_number":62,"context_line":"            test_shell.do_image_list(self.gc, args)"},{"line_number":63,"context_line":"            exp_img_filters \u003d {\u0027owner\u0027: \u0027test\u0027,"},{"line_number":64,"context_line":"                               \u0027member_status\u0027: \u0027Fake\u0027, \u0027visibility\u0027: True}"},{"line_number":65,"context_line":"            mocked_list.assert_called_once_with(page_size\u003d18,"},{"line_number":66,"context_line":"                                                filters\u003dexp_img_filters)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2Filo%3D","line":63,"updated":"2013-07-16 21:53:04.000000000","message":"same as above (hacking style dict)","commit_id":"15e4a96d44b248c903bc96167efe8740e06eabae"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"73f63d60ca486545e835085e688cfbfcff22d085","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def test_do_explain(self):"},{"line_number":82,"context_line":"        args \u003d self._make_args({\u0027page_size\u0027: 18, \u0027id\u0027: \u0027pass\u0027,"},{"line_number":83,"context_line":"                                \u0027schemas\u0027: \u0027test\u0027, \u0027model\u0027: \u0027test\u0027})"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        with mock.patch.object(utils, \u0027print_list\u0027):"},{"line_number":86,"context_line":"            test_shell.do_explain(self.gc, args)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAP3%2F%2Fikg%3D","line":83,"updated":"2013-07-16 21:53:04.000000000","message":"same as above","commit_id":"15e4a96d44b248c903bc96167efe8740e06eabae"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"91f2a1fd3975ed5f4b18aa517cd17416d806c982","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_do_image_list(self):"},{"line_number":56,"context_line":"        args \u003d self._make_args({"},{"line_number":57,"context_line":"            \u0027page_size\u0027: 18,"},{"line_number":58,"context_line":"            \u0027visibility\u0027: True,"},{"line_number":59,"context_line":"            \u0027member_status\u0027: \u0027Fake\u0027,"},{"line_number":60,"context_line":"            \u0027owner\u0027: \u0027test\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F78c%3D","line":57,"updated":"2013-07-18 20:28:45.000000000","message":"some comments below related to this","commit_id":"ec25bad883fd03ae8be77c12b76e36eb4f967315"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"91f2a1fd3975ed5f4b18aa517cd17416d806c982","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            \u0027image_id\u0027: \u0027IMG-01\u0027,"},{"line_number":146,"context_line":"            \u0027member_id\u0027: \u0027MEM-01\u0027,"},{"line_number":147,"context_line":"            \u0027member_status\u0027: \u0027status\u0027,"},{"line_number":148,"context_line":"        })"},{"line_number":149,"context_line":"        with mock.patch.object(self.gc.image_members, \u0027update\u0027) as mock_update:"},{"line_number":150,"context_line":"            mock_update.return_value \u003d {}"},{"line_number":151,"context_line":"            test_shell.do_member_update(self.gc, args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F780%3D","line":148,"updated":"2013-07-18 20:28:45.000000000","message":"It would be better if you used a separate variable for storing this dict and passing it to make_args. Though, this really does not need to be done.","commit_id":"ec25bad883fd03ae8be77c12b76e36eb4f967315"},{"author":{"_account_id":2537,"name":"Nikhil Komawar","email":"nik.komawar@gmail.com","username":"nikhil-komawar"},"change_message_id":"91f2a1fd3975ed5f4b18aa517cd17416d806c982","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            utils.print_list.assert_called_once_with([{}], columns)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def test_do_member_update_with_few_arguments(self):"},{"line_number":157,"context_line":"        args \u003d self._make_args({"},{"line_number":158,"context_line":"            \u0027image_id\u0027: \u0027IMG-01\u0027,"},{"line_number":159,"context_line":"            \u0027member_id\u0027: \u0027MEM-01\u0027,"},{"line_number":160,"context_line":"            \u0027member_status\u0027: None,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F78s%3D","line":157,"updated":"2013-07-18 20:28:45.000000000","message":"same here","commit_id":"ec25bad883fd03ae8be77c12b76e36eb4f967315"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"96ba0d48fb59eff643c6eb427b11acbce4648b3d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        self._mock_utils()"},{"line_number":29,"context_line":"        self.gc \u003d self._mock_glance_client()"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def _make_args(self, args):"},{"line_number":32,"context_line":"        class Args():"},{"line_number":33,"context_line":"            def __init__(self, entries):"},{"line_number":34,"context_line":"                self.__dict__.update(entries)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAQn%2F%2FtKg%3D","line":31,"updated":"2013-07-24 18:21:05.000000000","message":"I understand why we need this but it took me a little while to figure it out. Could you add a note here saying the shell expects an object with the actual args set as fields?","commit_id":"d2f2d8bc98b4f3a274461b0ce61f1fff2851c11b"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"96ba0d48fb59eff643c6eb427b11acbce4648b3d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            expect_image \u003d dict([(field, field) for field in ignore_fields])"},{"line_number":83,"context_line":"            expect_image[\u0027id\u0027] \u003d \u0027pass\u0027"},{"line_number":84,"context_line":"            mocked_list.return_value \u003d expect_image"},{"line_number":85,"context_line":"            test_shell.do_image_show(self.gc, args)"},{"line_number":86,"context_line":"            mocked_list.assert_called_once_with(\u0027pass\u0027)"},{"line_number":87,"context_line":"            utils.print_dict.assert_called_once_with({\u0027id\u0027: \u0027pass\u0027})"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAQn%2F%2FtNA%3D","line":85,"updated":"2013-07-24 18:21:05.000000000","message":"This is a tiny nitpick but could you add a blank line here and in a few other places just to make it more readable? I kind of like to see the 3 sections of a test really clearly divided. (setup, execution, assertion)","commit_id":"d2f2d8bc98b4f3a274461b0ce61f1fff2851c11b"}]}
