)]}'
{"openstack_dashboard/test/integration_tests/config.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"c0c4f0db87cd8b44c49cb51020d2c4fc027c9995","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                         \u0027cirros-0.3.4-x86_64-uec-ramdisk\u0027],"},{"line_number":61,"context_line":"                help\u003d\u0027default list of images\u0027),"},{"line_number":62,"context_line":"    cfg.StrOpt(\u0027local_image\u0027,"},{"line_number":63,"context_line":"               default\u003d\u0027/tmp/test_image.tar.gz\u0027,"},{"line_number":64,"context_line":"               help\u003d\u0027path to locally accessible image\u0027),"},{"line_number":65,"context_line":"]"},{"line_number":66,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_784c539e","line":63,"updated":"2016-03-23 11:25:35.000000000","message":"It\u0027s more portable to use https://docs.python.org/2.7/library/tempfile.html#tempfile.NamedTemporaryFile for that purpose.\n\nI\u0027m not sure if a separate setting is needed.","commit_id":"4744acdf3564f3f177e0a7a5ab889d2cb5c97c6b"}],"openstack_dashboard/test/integration_tests/helpers.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"3a5c17a28088d27f3325b745db4b523c7dbb10ce","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import traceback"},{"line_number":20,"context_line":"import uuid"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from contextlib import contextmanager"},{"line_number":23,"context_line":"from selenium.webdriver.common import action_chains"},{"line_number":24,"context_line":"from selenium.webdriver.common import by"},{"line_number":25,"context_line":"from selenium.webdriver.common import keys"}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_1caa9070","line":22,"updated":"2016-03-28 12:46:35.000000000","message":"contextlib is already imported on line 13, why not use @contextlib.contextmanager on line 56 to reduce file size a bit?","commit_id":"7e2f4557d4b04b0aa70ece2ce3d4953c6891ffd9"},{"author":{"_account_id":19282,"name":"Yury Tregubov","email":"ramentrum@gmail.com","username":"ytregubov"},"change_message_id":"ff9036029ebab885ada2b856868ef09d78828777","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import traceback"},{"line_number":20,"context_line":"import uuid"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from contextlib import contextmanager"},{"line_number":23,"context_line":"from selenium.webdriver.common import action_chains"},{"line_number":24,"context_line":"from selenium.webdriver.common import by"},{"line_number":25,"context_line":"from selenium.webdriver.common import keys"}],"source_content_type":"text/x-python","patch_set":4,"id":"da0c15f0_1fd8c21c","line":22,"in_reply_to":"da0c15f0_1caa9070","updated":"2016-03-28 13:36:08.000000000","message":":) Crap... missed that. And even mixed up it with the 3pp libs. Fixed.","commit_id":"7e2f4557d4b04b0aa70ece2ce3d4953c6891ffd9"}],"openstack_dashboard/test/integration_tests/pages/project/compute/imagespage.py":[{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"c0c4f0db87cd8b44c49cb51020d2c4fc027c9995","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from os import path"},{"line_number":14,"context_line":"from urllib import urlretrieve"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from openstack_dashboard.test.integration_tests.pages import basepage"},{"line_number":17,"context_line":"from openstack_dashboard.test.integration_tests.regions import forms"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_fb3cddc9","line":14,"updated":"2016-03-23 11:25:35.000000000","message":"Actually, file retrieval is not tied to the page interaction logic. See comments in other files as well.","commit_id":"4744acdf3564f3f177e0a7a5ab889d2cb5c97c6b"}],"openstack_dashboard/test/integration_tests/tests/test_images.py":[{"author":{"_account_id":20772,"name":"Sergei Chipiga","email":"schipiga@mirantis.com","username":"schipiga"},"change_message_id":"cbac10f7b4a34cf038c298f17ec83421befcbb6e","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def images_page(self):"},{"line_number":23,"context_line":"        return self.home_pg.go_to_compute_imagespage()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def image_create(self):"},{"line_number":26,"context_line":"        images_page \u003d self.images_page"},{"line_number":27,"context_line":"        images_page.create_image(IMAGE_NAME)"},{"line_number":28,"context_line":"        self.assertTrue(images_page.find_message_and_dismiss(messages.SUCCESS))"},{"line_number":29,"context_line":"        self.assertFalse(images_page.find_message_and_dismiss(messages.ERROR))"},{"line_number":30,"context_line":"        self.assertTrue(images_page.is_image_present(IMAGE_NAME))"},{"line_number":31,"context_line":"        self.assertTrue(images_page.is_image_active(IMAGE_NAME))"},{"line_number":32,"context_line":"        return images_page"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def image_create_from_local_file(self):"},{"line_number":35,"context_line":"        images_page \u003d self.images_page"},{"line_number":36,"context_line":"        images_page.create_image(IMAGE_NAME, image_source_type\u003d\u0027file\u0027)"},{"line_number":37,"context_line":"        self.assertTrue(images_page.find_message_and_dismiss(messages.SUCCESS))"},{"line_number":38,"context_line":"        self.assertFalse(images_page.find_message_and_dismiss(messages.ERROR))"},{"line_number":39,"context_line":"        self.assertTrue(images_page.is_image_present(IMAGE_NAME))"},{"line_number":40,"context_line":"        self.assertTrue(images_page.is_image_active(IMAGE_NAME))"},{"line_number":41,"context_line":"        return images_page"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def image_delete(self):"},{"line_number":44,"context_line":"        images_page \u003d self.images_page"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_d04ad682","line":41,"range":{"start_line":25,"start_character":0,"end_line":41,"end_character":26},"updated":"2016-03-22 11:17:08.000000000","message":"How about:\n\n    def image_create(self, from_local\u003dFalse):\n        images_page \u003d self.images_page\n        if from_local:\n            images_page.create_image(IMAGE_NAME, image_source_type\u003d\u0027file\u0027)\n        else:\n            images_page.create_image(IMAGE_NAME)\n        self.assertTrue(images_page.find_message_and_dismiss(messages.SUCCESS))\n        self.assertFalse(images_page.find_message_and_dismiss(messages.ERROR))\n        self.assertTrue(images_page.is_image_present(IMAGE_NAME))\n        self.assertTrue(images_page.is_image_active(IMAGE_NAME))\n        return images_page","commit_id":"47db20875ced5ad1db793b1c6b3da15ce8215166"},{"author":{"_account_id":19282,"name":"Yury Tregubov","email":"ramentrum@gmail.com","username":"ytregubov"},"change_message_id":"918d00ef9451baec65606f07039bb05dcabc1535","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    def images_page(self):"},{"line_number":23,"context_line":"        return self.home_pg.go_to_compute_imagespage()"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    def image_create(self):"},{"line_number":26,"context_line":"        images_page \u003d self.images_page"},{"line_number":27,"context_line":"        images_page.create_image(IMAGE_NAME)"},{"line_number":28,"context_line":"        self.assertTrue(images_page.find_message_and_dismiss(messages.SUCCESS))"},{"line_number":29,"context_line":"        self.assertFalse(images_page.find_message_and_dismiss(messages.ERROR))"},{"line_number":30,"context_line":"        self.assertTrue(images_page.is_image_present(IMAGE_NAME))"},{"line_number":31,"context_line":"        self.assertTrue(images_page.is_image_active(IMAGE_NAME))"},{"line_number":32,"context_line":"        return images_page"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def image_create_from_local_file(self):"},{"line_number":35,"context_line":"        images_page \u003d self.images_page"},{"line_number":36,"context_line":"        images_page.create_image(IMAGE_NAME, image_source_type\u003d\u0027file\u0027)"},{"line_number":37,"context_line":"        self.assertTrue(images_page.find_message_and_dismiss(messages.SUCCESS))"},{"line_number":38,"context_line":"        self.assertFalse(images_page.find_message_and_dismiss(messages.ERROR))"},{"line_number":39,"context_line":"        self.assertTrue(images_page.is_image_present(IMAGE_NAME))"},{"line_number":40,"context_line":"        self.assertTrue(images_page.is_image_active(IMAGE_NAME))"},{"line_number":41,"context_line":"        return images_page"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def image_delete(self):"},{"line_number":44,"context_line":"        images_page \u003d self.images_page"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa0719c6_a156e7cf","line":41,"range":{"start_line":25,"start_character":0,"end_line":41,"end_character":26},"in_reply_to":"fa0719c6_d04ad682","updated":"2016-03-22 14:39:01.000000000","message":"fixed","commit_id":"47db20875ced5ad1db793b1c6b3da15ce8215166"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"c0c4f0db87cd8b44c49cb51020d2c4fc027c9995","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        * deletes the newly created image"},{"line_number":60,"context_line":"        * verifies the image does not appear in the table after deletion"},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        self.image_create(from_local\u003dTrue)"},{"line_number":63,"context_line":"        self.image_delete()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def test_images_pagination(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_1802770b","line":62,"updated":"2016-03-23 11:25:35.000000000","message":"We could create temporary file here, fill it with real content and pass the path into image_create() method.","commit_id":"4744acdf3564f3f177e0a7a5ab889d2cb5c97c6b"},{"author":{"_account_id":20772,"name":"Sergei Chipiga","email":"schipiga@mirantis.com","username":"schipiga"},"change_message_id":"5d9fbdcf8f056cd6ee776c150efc7637775d1f10","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        * deletes the newly created image"},{"line_number":60,"context_line":"        * verifies the image does not appear in the table after deletion"},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        self.image_create(from_local\u003dTrue)"},{"line_number":63,"context_line":"        self.image_delete()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def test_images_pagination(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_de6747e7","line":62,"in_reply_to":"fa0719c6_1802770b","updated":"2016-03-23 11:45:18.000000000","message":"should the file have a specific format? or just enough valid extension, like \".iso\" ?\n\nI suppose it would be nice to have a helper func to generate temporary file, smth. like `image_file_path \u003d create_image_file(format\u003d\u0027.iso\u0027)`.","commit_id":"4744acdf3564f3f177e0a7a5ab889d2cb5c97c6b"},{"author":{"_account_id":20772,"name":"Sergei Chipiga","email":"schipiga@mirantis.com","username":"schipiga"},"change_message_id":"ad2a811a90b2e9855208275b8dd6971a3a8e3cbf","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        * deletes the newly created image"},{"line_number":60,"context_line":"        * verifies the image does not appear in the table after deletion"},{"line_number":61,"context_line":"        \"\"\""},{"line_number":62,"context_line":"        self.image_create(from_local\u003dTrue)"},{"line_number":63,"context_line":"        self.image_delete()"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def test_images_pagination(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa0719c6_5ec17753","line":62,"in_reply_to":"fa0719c6_de6747e7","updated":"2016-03-23 11:49:12.000000000","message":"UPD, more abstract func: `image_file_path \u003d create_file(format\u003d\u0027iso\u0027, size\u003d1024, chmod\u003d777)` ?","commit_id":"4744acdf3564f3f177e0a7a5ab889d2cb5c97c6b"}]}
