)]}'
{"tripleo_common/image/image_uploader.py":[{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"6fed2646d1946e0e80bc3019e712722fa23cd1a3","unresolved":false,"context_lines":[{"line_number":495,"context_line":"            url, CALL_CATALOG"},{"line_number":496,"context_line":"        )"},{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code not in (403, 404):"},{"line_number":499,"context_line":"            catalog \u003d session.get(catalog_url, timeout\u003d30).json()"},{"line_number":500,"context_line":"        else:"},{"line_number":501,"context_line":"            catalog \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fce034c_30c5075c","line":498,"range":{"start_line":498,"start_character":44,"end_line":498,"end_character":47},"updated":"2019-04-17 16:27:00.000000000","message":"I\u0027m not sure we should exclude 403 as that would be a permission error.  404 makes sense though","commit_id":"bae227156f3939179a650b65b0f5e9a6c287128a"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"83474b040c85b7441f00a7112dfd2d25503f92fc","unresolved":false,"context_lines":[{"line_number":495,"context_line":"            url, CALL_CATALOG"},{"line_number":496,"context_line":"        )"},{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code not in (403, 404):"},{"line_number":499,"context_line":"            catalog \u003d session.get(catalog_url, timeout\u003d30).json()"},{"line_number":500,"context_line":"        else:"},{"line_number":501,"context_line":"            catalog \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fce034c_1049ebce","line":498,"range":{"start_line":498,"start_character":44,"end_line":498,"end_character":47},"in_reply_to":"3fce034c_30c5075c","updated":"2019-04-17 16:32:50.000000000","message":"If we get a 403, we likely need to throw an error explaining permissions issue","commit_id":"bae227156f3939179a650b65b0f5e9a6c287128a"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"f56b43c5479e973da4206d2f3e44b22827893e0a","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code is (200):"},{"line_number":499,"context_line":"            catalog \u003d session.get(catalog_url, timeout\u003d30).json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code is (404):"},{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            catalog \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_55e796e5","line":500,"range":{"start_line":500,"start_character":42,"end_line":500,"end_character":45},"updated":"2019-04-24 06:33:54.000000000","message":"is there something else we could check apart from status_code here. i.e. what if this really is a 404 as in there is some problem with the url? seems like a bug that 404 is sent for empty catalog","commit_id":"0b781a7f527381908aec81b1360e7bb2ae6cba78"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"4145865a2cd36496666ec6e2612aee1a009bf1ef","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code is (200):"},{"line_number":499,"context_line":"            catalog \u003d session.get(catalog_url, timeout\u003d30).json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code is (404):"},{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            catalog \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_9c99806f","line":500,"range":{"start_line":500,"start_character":42,"end_line":500,"end_character":45},"in_reply_to":"ffb9cba7_3cec14f2","updated":"2019-04-26 17:07:53.000000000","message":"You need to mock the status_code in the test. \n\nhttps://opendev.org/openstack/tripleo-common/src/branch/master/tripleo_common/tests/image/test_image_uploader.py#L765\n\nRight now it\u0027s going to the else on 503 because there is no status_code defined.","commit_id":"0b781a7f527381908aec81b1360e7bb2ae6cba78"},{"author":{"_account_id":27427,"name":"David Peacock","email":"dpeacock@redhat.com","username":"davidjpeacock"},"change_message_id":"c830a1fccaef30a5f241c60e38eba06236c68ab0","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code is (200):"},{"line_number":499,"context_line":"            catalog \u003d session.get(catalog_url, timeout\u003d30).json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code is (404):"},{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            catalog \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_3cec14f2","line":500,"range":{"start_line":500,"start_character":42,"end_line":500,"end_character":45},"in_reply_to":"ffb9cba7_55e796e5","updated":"2019-04-26 17:02:18.000000000","message":"That\u0027s a good question Marios.  Thank you for asking it.\n\nCurrently I\u0027m trying to figure out why this is failing tests as is.","commit_id":"0b781a7f527381908aec81b1360e7bb2ae6cba78"},{"author":{"_account_id":27427,"name":"David Peacock","email":"dpeacock@redhat.com","username":"davidjpeacock"},"change_message_id":"4045dec6c87e6fc00458c6cd63a8bd3a9850fc2a","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code is (200):"},{"line_number":499,"context_line":"            catalog \u003d session.get(catalog_url, timeout\u003d30).json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code is (404):"},{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            catalog \u003d {}"}],"source_content_type":"text/x-python","patch_set":2,"id":"ffb9cba7_bc38043d","line":500,"range":{"start_line":500,"start_character":42,"end_line":500,"end_character":45},"in_reply_to":"ffb9cba7_9c99806f","updated":"2019-04-26 17:16:03.000000000","message":"Yeah curious - I was looking at that.  This test didn\u0027t fail with my last iteration when it was testing for not 404 or 403.  \n\nWas the test recently added I suppose?","commit_id":"0b781a7f527381908aec81b1360e7bb2ae6cba78"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"6e74f315a69912007e044fe5c0ae2d8936a0ac8d","unresolved":false,"context_lines":[{"line_number":496,"context_line":"        )"},{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code is (200):"},{"line_number":499,"context_line":"            catalog \u003d session.get(catalog_url, timeout\u003d30).json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code is (404):"},{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffb9cba7_7a5e0945","line":499,"updated":"2019-04-26 22:14:24.000000000","message":"So i think this attempt to fetch this twice. We would use the first catalog_resp instead of calling this again.","commit_id":"d0188055fc25a545bb20511c4be31a95a10f5bd1"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"083fd72bc28f9044ce53669d8b221fecce4d3418","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code is (200):"},{"line_number":499,"context_line":"            catalog \u003d catalog_resp.json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code is (404):"},{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            catalog \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_9fbbde70","line":500,"range":{"start_line":500,"start_character":42,"end_line":500,"end_character":46},"updated":"2019-05-08 07:11:00.000000000","message":"i don\u0027t like this checking of codes. what about 20X or 30X etc...\n\nIt seems like the special case is 404. I still think thats a bug, why is it replying 404 when it just means \u0027empty catalog\u0027 but in any case, lets just add that one?\n\notherwise lets not try to deal with any other http errors it should just explode appropriately?","commit_id":"87d930d91b493dc1781f298063a71a05b6b76e01"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"b1df88f07bd97cd6648c85911ff9e15da1a25a3b","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code is (200):"},{"line_number":499,"context_line":"            catalog \u003d catalog_resp.json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code is (404):"},{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            catalog \u003d {}"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_d4f854c5","line":500,"range":{"start_line":500,"start_character":42,"end_line":500,"end_character":46},"in_reply_to":"dfbec78f_9fbbde70","updated":"2019-05-08 16:11:05.000000000","message":"These are the only two codes we would in theory throw with our registry (image-serv).  404 is an empty catalog because it means the registry hasn\u0027t been populated with anything.  So I chatted with David a bit about this logic and we should probably do something like...\n\nif 200:\n   parse content\nelse if 404:\n   empty content\nelse:\n   raise exception","commit_id":"87d930d91b493dc1781f298063a71a05b6b76e01"},{"author":{"_account_id":28223,"name":"Cedric Jeanneret","display_name":"cjeanner (Tengu)","email":"cjeanner@redhat.com","username":"cjeanner"},"change_message_id":"9539f8fc650f0d6013a5aaff2f7977705082a1a2","unresolved":false,"context_lines":[{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            catalog \u003d {}"},{"line_number":504,"context_line":"            print(\"Bad return code from image registry virt host.\")"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        tags_get_args \u003d []"},{"line_number":507,"context_line":"        for repo in catalog.get(\u0027repositories\u0027, []):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_113cd4c6","line":504,"range":{"start_line":504,"start_character":19,"end_line":504,"end_character":65},"updated":"2019-05-07 12:48:29.000000000","message":"care to maybe show what return code we got?\nSomething like \"Bad return code (CODE) from image registry virt host.\")","commit_id":"87d930d91b493dc1781f298063a71a05b6b76e01"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"083fd72bc28f9044ce53669d8b221fecce4d3418","unresolved":false,"context_lines":[{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            catalog \u003d {}"},{"line_number":504,"context_line":"            print(\"Bad return code from image registry virt host.\")"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        tags_get_args \u003d []"},{"line_number":507,"context_line":"        for repo in catalog.get(\u0027repositories\u0027, []):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_bfbee262","line":504,"range":{"start_line":504,"start_character":19,"end_line":504,"end_character":65},"in_reply_to":"dfbec78f_113cd4c6","updated":"2019-05-08 07:11:00.000000000","message":"+1 and consider rewording too ... like Failed to populate registry. Server response is (CODE)","commit_id":"87d930d91b493dc1781f298063a71a05b6b76e01"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"c4e67c885870640902b4adacad991fd6ec9f2884","unresolved":false,"context_lines":[{"line_number":495,"context_line":"            url, CALL_CATALOG"},{"line_number":496,"context_line":"        )"},{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code is (200):"},{"line_number":499,"context_line":"            catalog \u003d catalog_resp.json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code is (404):"},{"line_number":501,"context_line":"            catalog \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_6f173cef","line":498,"range":{"start_line":498,"start_character":36,"end_line":498,"end_character":44},"updated":"2019-05-09 16:05:18.000000000","message":"\u003d\u003d 200 or in [200]","commit_id":"6b9a46b67e7c9012081dee46781bbf6eea91c51c"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"1738565e777bf19f3833265c396124351ae461fd","unresolved":false,"context_lines":[{"line_number":500,"context_line":"        elif catalog_resp.status_code in [404]:"},{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            e \u003d catalog_resp.status_code"},{"line_number":504,"context_line":"            raise ImageUploaderException("},{"line_number":505,"context_line":"                \u0027Image registry made invalid response: %s\u0027 % (e)"},{"line_number":506,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":6,"id":"dfbec78f_10ca37a0","line":503,"range":{"start_line":503,"start_character":10,"end_line":503,"end_character":37},"updated":"2019-05-13 06:14:47.000000000","message":"what is the value in declaring this? why not just have one line \u0027\u0027 % (catalog_resp.status_code)","commit_id":"19febaf59758c998f9aa3a89e769b82eddb07b19"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"957114b05137bac489b2453adea858dc3c2d1672","unresolved":false,"context_lines":[{"line_number":495,"context_line":"            url, CALL_CATALOG"},{"line_number":496,"context_line":"        )"},{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code in [200]:"},{"line_number":499,"context_line":"            catalog \u003d catalog_resp.json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code in [404]:"},{"line_number":501,"context_line":"            catalog \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_8953236b","line":498,"updated":"2019-05-16 07:50:14.000000000","message":"nit: catalog_resp.ok","commit_id":"294f67bd7e38da759f7d53bc776933095029d8fe"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"0320edec37796f136e066a6ee0b178fb65d7da80","unresolved":false,"context_lines":[{"line_number":495,"context_line":"            url, CALL_CATALOG"},{"line_number":496,"context_line":"        )"},{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code in [200]:"},{"line_number":499,"context_line":"            catalog \u003d catalog_resp.json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code in [404]:"},{"line_number":501,"context_line":"            catalog \u003d {}"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfb3d3c7_eaa047a8","line":498,"in_reply_to":"dfbec78f_8953236b","updated":"2019-05-20 07:24:37.000000000","message":"imo it is better to be clear/verbose about what\u0027s going on here - explicitly status code is 200/404 etc.","commit_id":"294f67bd7e38da759f7d53bc776933095029d8fe"},{"author":{"_account_id":11082,"name":"Kamil Sambor","email":"ksambor@redhat.com","username":"ksambor"},"change_message_id":"957114b05137bac489b2453adea858dc3c2d1672","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code in [200]:"},{"line_number":499,"context_line":"            catalog \u003d catalog_resp.json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code in [404]:"},{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            raise ImageUploaderException("}],"source_content_type":"text/x-python","patch_set":7,"id":"dfbec78f_29e317a6","line":500,"updated":"2019-05-16 07:50:14.000000000","message":"nit: catalog_resp.status_code \u003d\u003d 404","commit_id":"294f67bd7e38da759f7d53bc776933095029d8fe"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"0320edec37796f136e066a6ee0b178fb65d7da80","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        catalog_resp \u003d session.get(catalog_url, timeout\u003d30)"},{"line_number":498,"context_line":"        if catalog_resp.status_code in [200]:"},{"line_number":499,"context_line":"            catalog \u003d catalog_resp.json()"},{"line_number":500,"context_line":"        elif catalog_resp.status_code in [404]:"},{"line_number":501,"context_line":"            catalog \u003d {}"},{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            raise ImageUploaderException("}],"source_content_type":"text/x-python","patch_set":7,"id":"bfb3d3c7_2a9e5f63","line":500,"in_reply_to":"dfbec78f_29e317a6","updated":"2019-05-20 07:24:37.000000000","message":"why do you consider it to be a nit, or, what is the value in \u003d\u003d vs \"in [ ]\". if there is none it could just be personal preference which is fine too but then isn\u0027t a nit imo","commit_id":"294f67bd7e38da759f7d53bc776933095029d8fe"}],"tripleo_common/tests/image/test_image_uploader.py":[{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"6e74f315a69912007e044fe5c0ae2d8936a0ac8d","unresolved":false,"context_lines":[{"line_number":763,"context_line":"            (\u0027status_code\u0027, [\u0027200\u0027])"},{"line_number":764,"context_line":"        )"},{"line_number":765,"context_line":"        session \u003d mock.Mock()"},{"line_number":766,"context_line":"        session.get.return_value.json.return_value \u003d {"},{"line_number":767,"context_line":"            \u0027repositories\u0027: [\u0027t/foo\u0027, \u0027t/bar\u0027, \u0027t/baz\u0027, \u0027t/bink\u0027, \u0027status_code\u0027]"},{"line_number":768,"context_line":"        }"},{"line_number":769,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":3,"id":"ffb9cba7_1a2cadaa","line":766,"range":{"start_line":766,"start_character":8,"end_line":766,"end_character":50},"updated":"2019-04-26 22:14:24.000000000","message":"I think you want something like...\n\nresp \u003d mock.Mock()\nresp.return_value \u003d 200\nresp.json.return_value \u003d { ... data ... }\n\nsession.get.return_value \u003d resp","commit_id":"d0188055fc25a545bb20511c4be31a95a10f5bd1"},{"author":{"_account_id":27427,"name":"David Peacock","email":"dpeacock@redhat.com","username":"davidjpeacock"},"change_message_id":"dc2eaf52ad9732fa49701314952eb9a5e6579f15","unresolved":false,"context_lines":[{"line_number":763,"context_line":"            (\u0027status_code\u0027, [\u0027200\u0027])"},{"line_number":764,"context_line":"        )"},{"line_number":765,"context_line":"        session \u003d mock.Mock()"},{"line_number":766,"context_line":"        session.get.return_value.json.return_value \u003d {"},{"line_number":767,"context_line":"            \u0027repositories\u0027: [\u0027t/foo\u0027, \u0027t/bar\u0027, \u0027t/baz\u0027, \u0027t/bink\u0027, \u0027status_code\u0027]"},{"line_number":768,"context_line":"        }"},{"line_number":769,"context_line":"        self.assertEqual("}],"source_content_type":"text/x-python","patch_set":3,"id":"ffb9cba7_a2a9877c","line":766,"range":{"start_line":766,"start_character":8,"end_line":766,"end_character":50},"in_reply_to":"ffb9cba7_1a2cadaa","updated":"2019-04-30 20:55:27.000000000","message":"Your pointer is making sense to me if there were no other tests in test_list(), but since I need to integrate it with the other stuff, I\u0027m confused here.\n\nJust a heads up, I\u0027m working on this, and trying to figure it out. :-)","commit_id":"d0188055fc25a545bb20511c4be31a95a10f5bd1"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"083fd72bc28f9044ce53669d8b221fecce4d3418","unresolved":false,"context_lines":[{"line_number":787,"context_line":"            ])"},{"line_number":788,"context_line":""},{"line_number":789,"context_line":"    @mock.patch(\u0027concurrent.futures.ThreadPoolExecutor\u0027)"},{"line_number":790,"context_line":"    def test_list_404(self, mock_pool):"},{"line_number":791,"context_line":"        # setup bits"},{"line_number":792,"context_line":"        session \u003d mock.Mock()"},{"line_number":793,"context_line":"        response \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_1ff92e4c","line":790,"range":{"start_line":790,"start_character":8,"end_line":790,"end_character":21},"updated":"2019-05-08 07:11:00.000000000","message":"how about adding another one with non 404  i.e. your else clause https://review.opendev.org/#/c/653151/4/tripleo_common/image/image_uploader.py@502","commit_id":"87d930d91b493dc1781f298063a71a05b6b76e01"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"b42e18e6d6610cd51faee6f8262434a5964ce38b","unresolved":false,"context_lines":[{"line_number":807,"context_line":"        # setup bits"},{"line_number":808,"context_line":"        session \u003d mock.Mock()"},{"line_number":809,"context_line":"        response \u003d mock.Mock()"},{"line_number":810,"context_line":"        response.status_code !\u003d [200,404]"},{"line_number":811,"context_line":"        session.get.return_value \u003d response"},{"line_number":812,"context_line":"        mock_pool.return_value.map.return_value \u003d ()"},{"line_number":813,"context_line":"        # execute function"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_f408f82d","line":810,"range":{"start_line":810,"start_character":29,"end_line":810,"end_character":41},"updated":"2019-05-08 16:47:19.000000000","message":"\u003d 500","commit_id":"6b9a46b67e7c9012081dee46781bbf6eea91c51c"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"b42e18e6d6610cd51faee6f8262434a5964ce38b","unresolved":false,"context_lines":[{"line_number":811,"context_line":"        session.get.return_value \u003d response"},{"line_number":812,"context_line":"        mock_pool.return_value.map.return_value \u003d ()"},{"line_number":813,"context_line":"        # execute function"},{"line_number":814,"context_line":"        return_val \u003d self.uploader.list(\u0027localhost:8787\u0027, session\u003dsession)"},{"line_number":815,"context_line":"        # check status of things"},{"line_number":816,"context_line":"        self.assertEqual("},{"line_number":817,"context_line":"            [],"},{"line_number":818,"context_line":"            return_val"},{"line_number":819,"context_line":"        )"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"    def test_tags_for_image(self):"},{"line_number":822,"context_line":"        session \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_c81c346c","line":819,"range":{"start_line":814,"start_character":8,"end_line":819,"end_character":9},"updated":"2019-05-08 16:47:19.000000000","message":"If you return a 500, we need to test the exception is raised\n\nI think this is the syntax (doing from memory):\n\nself.assertRaises(ImageUploaderException,\n                  self.uploader.list,\n                  \u0027localhost:8787\u0027,\n                  session\u003dsession)","commit_id":"6b9a46b67e7c9012081dee46781bbf6eea91c51c"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"0c765b5f8d4e65c1660dca7b87a0f774ba3b2245","unresolved":false,"context_lines":[{"line_number":806,"context_line":"    def test_list_500(self, mock_pool):"},{"line_number":807,"context_line":"        session \u003d mock.Mock()"},{"line_number":808,"context_line":"        response \u003d mock.Mock()"},{"line_number":809,"context_line":"        response.status_code \u003d\u003d [500]"},{"line_number":810,"context_line":"        session.get.return_value \u003d response"},{"line_number":811,"context_line":"        mock_pool.return_value.map.return_value \u003d ()"},{"line_number":812,"context_line":"        self.assertRaises(ImageUploaderException,"}],"source_content_type":"text/x-python","patch_set":6,"id":"dfbec78f_f3b9c0cb","line":809,"range":{"start_line":809,"start_character":17,"end_line":809,"end_character":37},"updated":"2019-05-10 19:12:59.000000000","message":"This should be \u0027status_code \u003d 500\u0027\n\nNot completely sure how this is passing because I would think this is an error. Maybe mock is hiding that","commit_id":"19febaf59758c998f9aa3a89e769b82eddb07b19"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"5de79c36905629176bc74bd6c9f22786e21e635b","unresolved":false,"context_lines":[{"line_number":806,"context_line":"    def test_list_500(self, mock_pool):"},{"line_number":807,"context_line":"        session \u003d mock.Mock()"},{"line_number":808,"context_line":"        response \u003d mock.Mock()"},{"line_number":809,"context_line":"        response.status_code \u003d\u003d [500]"},{"line_number":810,"context_line":"        session.get.return_value \u003d response"},{"line_number":811,"context_line":"        mock_pool.return_value.map.return_value \u003d ()"},{"line_number":812,"context_line":"        self.assertRaises(ImageUploaderException,"}],"source_content_type":"text/x-python","patch_set":6,"id":"dfbec78f_3ac95225","line":809,"range":{"start_line":809,"start_character":17,"end_line":809,"end_character":37},"in_reply_to":"dfbec78f_305dfbe8","updated":"2019-05-13 13:54:57.000000000","message":"No it\u0027s not, response.status_code \u003d\u003d [500] with a mock just returns false. This isn\u0027t actually setting a response.status_code so the code is actually getting a mock object value for response.status_code when exercised.  If response.status_code wasn\u0027t a mock, this would be a parse error.\n\nPython 2.7.5 (default, May 31 2018, 09:41:32) \n[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2\nType \"help\", \"copyright\", \"credits\" or \"license\" for more information.\n\u003e\u003e\u003e import mock\n\u003e\u003e\u003e r \u003d mock.Mock()\n\u003e\u003e\u003e r.status_code \u003d\u003d [500]\nFalse\n\u003e\u003e\u003e\n\u003e\u003e\u003e foo \u003d\u003d [500]\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\nNameError: name \u0027foo\u0027 is not defined\n\u003e\u003e\u003e","commit_id":"19febaf59758c998f9aa3a89e769b82eddb07b19"},{"author":{"_account_id":8449,"name":"Marios Andreou","email":"marios.andreou@gmail.com","username":"marios"},"change_message_id":"1738565e777bf19f3833265c396124351ae461fd","unresolved":false,"context_lines":[{"line_number":806,"context_line":"    def test_list_500(self, mock_pool):"},{"line_number":807,"context_line":"        session \u003d mock.Mock()"},{"line_number":808,"context_line":"        response \u003d mock.Mock()"},{"line_number":809,"context_line":"        response.status_code \u003d\u003d [500]"},{"line_number":810,"context_line":"        session.get.return_value \u003d response"},{"line_number":811,"context_line":"        mock_pool.return_value.map.return_value \u003d ()"},{"line_number":812,"context_line":"        self.assertRaises(ImageUploaderException,"}],"source_content_type":"text/x-python","patch_set":6,"id":"dfbec78f_305dfbe8","line":809,"range":{"start_line":809,"start_character":17,"end_line":809,"end_character":37},"in_reply_to":"dfbec78f_f3b9c0cb","updated":"2019-05-13 06:14:47.000000000","message":"no his logic just happens to work for this i think:\n\nif [500] in [500] \u003d\u003e nop\n...\nso it goes to the else https://review.opendev.org/#/c/653151/6/tripleo_common/image/image_uploader.py@503 which raises the exception","commit_id":"19febaf59758c998f9aa3a89e769b82eddb07b19"}]}
