)]}'
{"test/unit/test_swiftclient.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"81e035a0e636490cef46eb816786c838158f6193","unresolved":false,"context_lines":[{"line_number":2055,"context_line":"            \u0027http://storage.test.com/swift/v1.0/test\u0027:"},{"line_number":2056,"context_line":"                \u0027http://storage.test.com/swift/info\u0027,"},{"line_number":2057,"context_line":"            \u0027http://storage.test.com/v1.0/test\u0027:"},{"line_number":2058,"context_line":"                \u0027http://storage.test.com/info\u0027}"},{"line_number":2059,"context_line":"        for uri_k, uri_v in uri_versions.items():"},{"line_number":2060,"context_line":"            self.assertEqual(conn._map_url(uri_k), uri_v)"},{"line_number":2061,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_c56904bf","line":2058,"updated":"2020-04-23 16:58:26.000000000","message":"Worth adding a case for \u0027http://storage.test.com/swift\u0027 ?\n\nWe should also have variants with a trailing slash; I\u0027m not sure we want \u0027http://storage.test.com/\u0027 mapping to \u0027http://storage.test.com//info\u0027 :-/","commit_id":"61ad0efe0f0be547d8e4a9c2a99bd217d16d4d7b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"81e035a0e636490cef46eb816786c838158f6193","unresolved":false,"context_lines":[{"line_number":2057,"context_line":"            \u0027http://storage.test.com/v1.0/test\u0027:"},{"line_number":2058,"context_line":"                \u0027http://storage.test.com/info\u0027}"},{"line_number":2059,"context_line":"        for uri_k, uri_v in uri_versions.items():"},{"line_number":2060,"context_line":"            self.assertEqual(conn._map_url(uri_k), uri_v)"},{"line_number":2061,"context_line":""},{"line_number":2062,"context_line":"    def test_retry(self):"},{"line_number":2063,"context_line":"        def quick_sleep(*args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_41f9694b","line":2060,"range":{"start_line":2060,"start_character":34,"end_line":2060,"end_character":42},"updated":"2020-04-23 16:58:26.000000000","message":"I\u0027m a little nervous about testing _map_url directly without testing that we actually call it as part of Connection.get_capabilities... I can apply a diff like\n\ndiff --git a/swiftclient/client.py b/swiftclient/client.py\nindex 960fada..9cad040 100644\n--- a/swiftclient/client.py\n+++ b/swiftclient/client.py\n@@ -1949,7 +1949,8 @@ class Connection(object):\n         return urlunparse((scheme, netloc, path, params, query, fragment))\n \n     def get_capabilities(self, url\u003dNone):\n-        parsed \u003d urlparse(self._map_url(url))\n+        parsed \u003d urlparse(urljoin(url or self.url or self.get_auth()[0], \u0027/info\u0027))\n         if not self.http_conn:\n             self.http_conn \u003d self.http_connection(url)\n         return get_capabilities((parsed, self.http_conn[1]))\n\n\n(essentially backing out your fix while keeping _map_url around) and tests still pass.\n\nFortunately, we *do* still have pretty good coverage -- if I cause a NameError somewhere in Connection.get_capabilities, like five tests still pop.","commit_id":"61ad0efe0f0be547d8e4a9c2a99bd217d16d4d7b"}]}
