)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"060779ec99948c65db11c8f017bbfb3632d81e6e","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The order of the endpoints and interfaces lists will vary depending on"},{"line_number":10,"context_line":"how a query returns results, so the endpoints and interfaces may not"},{"line_number":11,"context_line":"be in the same order as the expected dict. This can be seen by setting"},{"line_number":12,"context_line":"the PYTHON_HASHSEED value to something other than 0."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"With this fix, searches are done rather than using the built-in dict"},{"line_number":15,"context_line":"equal method."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a961159_4e2333a7","line":12,"updated":"2015-01-02 19:56:59.000000000","message":"s/PYTHON_HASHSEED/PYTHONHASHSEED/","commit_id":"60dc6cbb7ff03626e32928e1b7ff330ed56ed105"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"de08f94fd85b4363e990f718d2cffe2b388a4f6c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The order of the endpoints and interfaces lists will vary depending on"},{"line_number":10,"context_line":"how a query returns results, so the endpoints and interfaces may not"},{"line_number":11,"context_line":"be in the same order as the expected dict. This can be seen by setting"},{"line_number":12,"context_line":"the PYTHON_HASHSEED value to something other than 0."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"With this fix, searches are done rather than using the built-in dict"},{"line_number":15,"context_line":"equal method."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3a961159_2e8347cd","line":12,"in_reply_to":"3a961159_4e2333a7","updated":"2015-01-02 21:31:50.000000000","message":"Done","commit_id":"60dc6cbb7ff03626e32928e1b7ff330ed56ed105"}],"keystone/tests/test_backend_templated.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"1ce077e1f4682aae7632190ee5fd78fff2103574","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        for e in expected:"},{"line_number":89,"context_line":"            # Find the observed endpoint with the same interface..."},{"line_number":90,"context_line":"            o \u003d [x for x in observed if x[\u0027interface\u0027] \u003d\u003d e[\u0027interface\u0027]][0]"},{"line_number":91,"context_line":"            self.assertEqual(e, o)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def assert_catalog_entry_equal(self, expected, observed):"},{"line_number":94,"context_line":"        self.assertThat(observed, matchers.KeysEqual(expected))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_983878ef","line":91,"updated":"2014-12-04 15:20:25.000000000","message":"this will raise a KeyError if the expected endpoint isn\u0027t there which would lead to poor feedback for other devs; you could fail a bit more gracefully and use better variable names:\n\n  for expected_endpoint in expected:\n      for endpoint in observed:\n          if expected_endpoint[\u0027interface\u0027] \u003d\u003d endpoint[\u0027interface\u0027]:\n              return self.assertEqual(expected_endpoint, endpoint)\n      self.fail(\u0027matching endpoint not found\u0027)","commit_id":"b38d1d8fc9f60eb0b0ede3fd21944776e087f9af"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e91c707426d4f73dea963ef09ecf82c2faf1b531","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        for e in expected:"},{"line_number":89,"context_line":"            # Find the observed endpoint with the same interface..."},{"line_number":90,"context_line":"            o \u003d [x for x in observed if x[\u0027interface\u0027] \u003d\u003d e[\u0027interface\u0027]][0]"},{"line_number":91,"context_line":"            self.assertEqual(e, o)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    def assert_catalog_entry_equal(self, expected, observed):"},{"line_number":94,"context_line":"        self.assertThat(observed, matchers.KeysEqual(expected))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_96a5a9b6","line":91,"in_reply_to":"5a890539_983878ef","updated":"2014-12-04 15:55:25.000000000","message":"Done","commit_id":"b38d1d8fc9f60eb0b0ede3fd21944776e087f9af"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"1ce077e1f4682aae7632190ee5fd78fff2103574","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        for e in expected:"},{"line_number":105,"context_line":"            # Find the element in observed with the same id..."},{"line_number":106,"context_line":"            o \u003d [x for x in observed if x[\u0027id\u0027] \u003d\u003d e[\u0027id\u0027]][0]"},{"line_number":107,"context_line":"            self.assert_catalog_entry_equal(e, o)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def test_get_v3_catalog(self):"},{"line_number":110,"context_line":"        user_id \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_5b752a96","line":107,"updated":"2014-12-04 15:20:25.000000000","message":"same as above","commit_id":"b38d1d8fc9f60eb0b0ede3fd21944776e087f9af"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e91c707426d4f73dea963ef09ecf82c2faf1b531","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        for e in expected:"},{"line_number":105,"context_line":"            # Find the element in observed with the same id..."},{"line_number":106,"context_line":"            o \u003d [x for x in observed if x[\u0027id\u0027] \u003d\u003d e[\u0027id\u0027]][0]"},{"line_number":107,"context_line":"            self.assert_catalog_entry_equal(e, o)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def test_get_v3_catalog(self):"},{"line_number":110,"context_line":"        user_id \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_b6a8e58c","line":107,"in_reply_to":"5a890539_5b752a96","updated":"2014-12-04 15:55:25.000000000","message":"Done","commit_id":"b38d1d8fc9f60eb0b0ede3fd21944776e087f9af"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"72d6fa035552474844042feb0b6ef29d3bed9dfe","unresolved":false,"context_lines":[{"line_number":146,"context_line":"             \u0027type\u0027: \u0027identity\u0027,"},{"line_number":147,"context_line":"             \u0027name\u0027: \"\u0027Identity Service\u0027\","},{"line_number":148,"context_line":"             \u0027id\u0027: \u00271\u0027}]"},{"line_number":149,"context_line":"        self.assert_catalogs_equal(exp_catalog, catalog_ref)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_list_regions_filtered_by_parent_region_id(self):"},{"line_number":152,"context_line":"        self.skipTest(\u0027Templated backend does not support hints\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_31a9b890","line":149,"updated":"2014-12-19 09:50:34.000000000","message":"Maybe the same as in https://review.openstack.org/#/c/138923/ can be done here?","commit_id":"60dc6cbb7ff03626e32928e1b7ff330ed56ed105"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"6e0ce7904c1fdde6bd6afdc02ac1a0a3546faa59","unresolved":false,"context_lines":[{"line_number":146,"context_line":"             \u0027type\u0027: \u0027identity\u0027,"},{"line_number":147,"context_line":"             \u0027name\u0027: \"\u0027Identity Service\u0027\","},{"line_number":148,"context_line":"             \u0027id\u0027: \u00271\u0027}]"},{"line_number":149,"context_line":"        self.assert_catalogs_equal(exp_catalog, catalog_ref)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_list_regions_filtered_by_parent_region_id(self):"},{"line_number":152,"context_line":"        self.skipTest(\u0027Templated backend does not support hints\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_ca6abd80","line":149,"in_reply_to":"3a961159_0b62c43d","updated":"2014-12-31 17:45:05.000000000","message":"I don\u0027t either...","commit_id":"60dc6cbb7ff03626e32928e1b7ff330ed56ed105"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"de08f94fd85b4363e990f718d2cffe2b388a4f6c","unresolved":false,"context_lines":[{"line_number":146,"context_line":"             \u0027type\u0027: \u0027identity\u0027,"},{"line_number":147,"context_line":"             \u0027name\u0027: \"\u0027Identity Service\u0027\","},{"line_number":148,"context_line":"             \u0027id\u0027: \u00271\u0027}]"},{"line_number":149,"context_line":"        self.assert_catalogs_equal(exp_catalog, catalog_ref)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_list_regions_filtered_by_parent_region_id(self):"},{"line_number":152,"context_line":"        self.skipTest(\u0027Templated backend does not support hints\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_0e7ccbea","line":149,"in_reply_to":"3a961159_0b983d1a","updated":"2015-01-02 21:31:50.000000000","message":"Done","commit_id":"60dc6cbb7ff03626e32928e1b7ff330ed56ed105"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5b3048b1d89eee76c114f847c97107ebe0805243","unresolved":false,"context_lines":[{"line_number":146,"context_line":"             \u0027type\u0027: \u0027identity\u0027,"},{"line_number":147,"context_line":"             \u0027name\u0027: \"\u0027Identity Service\u0027\","},{"line_number":148,"context_line":"             \u0027id\u0027: \u00271\u0027}]"},{"line_number":149,"context_line":"        self.assert_catalogs_equal(exp_catalog, catalog_ref)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_list_regions_filtered_by_parent_region_id(self):"},{"line_number":152,"context_line":"        self.skipTest(\u0027Templated backend does not support hints\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_0b62c43d","line":149,"in_reply_to":"3a961159_31a9b890","updated":"2014-12-19 15:10:09.000000000","message":"I don\u0027t know what you\u0027re asking me to change.","commit_id":"60dc6cbb7ff03626e32928e1b7ff330ed56ed105"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"e1fc42880f1b44534bff8e16c25ee19607a8d931","unresolved":false,"context_lines":[{"line_number":146,"context_line":"             \u0027type\u0027: \u0027identity\u0027,"},{"line_number":147,"context_line":"             \u0027name\u0027: \"\u0027Identity Service\u0027\","},{"line_number":148,"context_line":"             \u0027id\u0027: \u00271\u0027}]"},{"line_number":149,"context_line":"        self.assert_catalogs_equal(exp_catalog, catalog_ref)"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def test_list_regions_filtered_by_parent_region_id(self):"},{"line_number":152,"context_line":"        self.skipTest(\u0027Templated backend does not support hints\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_0b983d1a","line":149,"in_reply_to":"3a961159_ca6abd80","updated":"2015-01-02 19:39:53.000000000","message":"In the patch I linked I suggested to change that scary multiline list-of-dicts equality check to simple assertEqual of sorted values. I suggest to do the same here -- http://paste.openstack.org/show/155424/","commit_id":"60dc6cbb7ff03626e32928e1b7ff330ed56ed105"}]}
