)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0911df3e7a04efe2a6c8d82e469d40519cd93a99","unresolved":false,"context_lines":[{"line_number":9,"context_line":"The tests were not completely accurate. The expected columns list"},{"line_number":10,"context_line":"didn\u0027t need to have all of the columns. Also the defaults for Boolean"},{"line_number":11,"context_line":"columns were not being checked."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I558870792a836ed775da3f683ed1279cc58216b0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba7be1f8_23e1162a","line":12,"updated":"2015-02-26 16:05:41.000000000","message":"Please, tie it to a bug","commit_id":"835ac9361af4e76fb4e01300ef367e5f7a60e96d"}],"keystone/tests/unit/test_backend_sql.py":[{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0911df3e7a04efe2a6c8d82e469d40519cd93a99","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        actual_schema \u003d []"},{"line_number":74,"context_line":"        for column in table.c:"},{"line_number":75,"context_line":"            if isinstance(column.type, sql.Enum):"},{"line_number":76,"context_line":"                actual_schema.append((column.name, type(column.type), None))"},{"line_number":77,"context_line":"            elif isinstance(column.type, sql.Boolean):"},{"line_number":78,"context_line":"                default \u003d None"},{"line_number":79,"context_line":"                if column._proxies[0].default:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_837ba279","line":76,"updated":"2015-02-26 16:05:41.000000000","message":"Could you please make a docsting or a comment describing what\u0027s in the tuple?","commit_id":"835ac9361af4e76fb4e01300ef367e5f7a60e96d"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"0911df3e7a04efe2a6c8d82e469d40519cd93a99","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            else:"},{"line_number":85,"context_line":"                actual_schema.append((column.name, type(column.type), None))"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        self.assertEqual(list(sorted(expected_schema)), list(sorted(actual_schema)))"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def test_user_model(self):"},{"line_number":90,"context_line":"        cols \u003d ((\u0027id\u0027, sql.String, 64),"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba7be1f8_c343da3f","line":87,"updated":"2015-02-26 16:05:41.000000000","message":"assertItemsEqual should be used here instead of sorting","commit_id":"835ac9361af4e76fb4e01300ef367e5f7a60e96d"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"5e81a573ae07fff764659aeae011a24813094828","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        actual_schema \u003d []"},{"line_number":74,"context_line":"        for column in table.c:"},{"line_number":75,"context_line":"            if isinstance(column.type, sql.Enum):"},{"line_number":76,"context_line":"                actual_schema.append((column.name, type(column.type), None))"},{"line_number":77,"context_line":"            elif isinstance(column.type, sql.Boolean):"},{"line_number":78,"context_line":"                default \u003d None"},{"line_number":79,"context_line":"                if column._proxies[0].default:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_bea49f4b","line":76,"updated":"2015-03-03 06:34:46.000000000","message":"Any reason to emphasize sql.Enum here? I think it\u0027s the same with sql.Text for example, i.e. this code branch is needn\u0027t.","commit_id":"4cfdd4d20a13c67e8aac3ebf0219e936dd3b703b"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"8e1b637bdf2bf787bc36842f723808e1172837f3","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        actual_schema \u003d []"},{"line_number":74,"context_line":"        for column in table.c:"},{"line_number":75,"context_line":"            if isinstance(column.type, sql.Enum):"},{"line_number":76,"context_line":"                actual_schema.append((column.name, type(column.type), None))"},{"line_number":77,"context_line":"            elif isinstance(column.type, sql.Boolean):"},{"line_number":78,"context_line":"                default \u003d None"},{"line_number":79,"context_line":"                if column._proxies[0].default:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_882dc500","line":76,"in_reply_to":"9a80dd14_b9e13e9c","updated":"2015-03-08 04:56:23.000000000","message":"Done","commit_id":"4cfdd4d20a13c67e8aac3ebf0219e936dd3b703b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"55dd9f9493b39ab775f7e6b9da9fc2abaef47bf6","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        actual_schema \u003d []"},{"line_number":74,"context_line":"        for column in table.c:"},{"line_number":75,"context_line":"            if isinstance(column.type, sql.Enum):"},{"line_number":76,"context_line":"                actual_schema.append((column.name, type(column.type), None))"},{"line_number":77,"context_line":"            elif isinstance(column.type, sql.Boolean):"},{"line_number":78,"context_line":"                default \u003d None"},{"line_number":79,"context_line":"                if column._proxies[0].default:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_b9e13e9c","line":76,"in_reply_to":"ba7be1f8_bea49f4b","updated":"2015-03-06 00:29:10.000000000","message":"might as well add a comment to explain why this is here.","commit_id":"4cfdd4d20a13c67e8aac3ebf0219e936dd3b703b"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"5e81a573ae07fff764659aeae011a24813094828","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        cols \u003d ((\u0027id\u0027, sql.String, 64),"},{"line_number":112,"context_line":"                (\u0027name\u0027, sql.String, 64),"},{"line_number":113,"context_line":"                (\u0027enabled\u0027, sql.Boolean, True),"},{"line_number":114,"context_line":"                (\u0027extra\u0027, sql.JsonBlob, None))"},{"line_number":115,"context_line":"        self.assertExpectedSchema(\u0027domain\u0027, cols)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def test_project_model(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba7be1f8_fe37f7fc","line":114,"updated":"2015-03-03 06:34:46.000000000","message":"I found some other tests also miss to check \u0027extra\u0027 field, \u0027test_create_null_role_name\u0027 for example, but it may not related with this topic since it\u0027s belong to other \u0027Class\u0027 and py file. I am fine with it and maybe propose another patch based on this.","commit_id":"4cfdd4d20a13c67e8aac3ebf0219e936dd3b703b"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"8e1b637bdf2bf787bc36842f723808e1172837f3","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        cols \u003d ((\u0027id\u0027, sql.String, 64),"},{"line_number":112,"context_line":"                (\u0027name\u0027, sql.String, 64),"},{"line_number":113,"context_line":"                (\u0027enabled\u0027, sql.Boolean, True),"},{"line_number":114,"context_line":"                (\u0027extra\u0027, sql.JsonBlob, None))"},{"line_number":115,"context_line":"        self.assertExpectedSchema(\u0027domain\u0027, cols)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def test_project_model(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_68edf1b6","line":114,"in_reply_to":"ba7be1f8_fe37f7fc","updated":"2015-03-08 04:56:23.000000000","message":"Extra is not a required field so the tests are free to leave it out. Plus the way you use extra is not to have a key called \u0027extra\u0027 in your dictionary, but rather to have a key we don\u0027t understand that magically gets stuck into the extra dictionary.\n\nThese tests are checking the actual generated schema so I do want to make sure the extra column is there.","commit_id":"4cfdd4d20a13c67e8aac3ebf0219e936dd3b703b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e5b000ff0d7b93652e076dee0b0cd2394a46bfd6","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        :param string table: the name of the table to inspect"},{"line_number":74,"context_line":"        :param tuple expected_schema: a tuple of tuples containing the"},{"line_number":75,"context_line":"            expected schema"},{"line_number":76,"context_line":"        :raises: AssertionError"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        The expected_shema format is simply::"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6ced46_88a89378","line":76,"updated":"2015-03-25 14:04:47.000000000","message":"this should be :raises AssertionError: \u003cunder what circumstances\u003e","commit_id":"04402d497ce07b85f5682fcef20b1e0548a88284"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1bc72a6b4c50a54d3e1f8cf159084525d2d05b5e","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        :param string table: the name of the table to inspect"},{"line_number":74,"context_line":"        :param tuple expected_schema: a tuple of tuples containing the"},{"line_number":75,"context_line":"            expected schema"},{"line_number":76,"context_line":"        :raises: AssertionError"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        The expected_shema format is simply::"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6ced46_2fd5c01b","line":76,"in_reply_to":"1a6ced46_88a89378","updated":"2015-03-26 09:35:01.000000000","message":"++","commit_id":"04402d497ce07b85f5682fcef20b1e0548a88284"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"854a7e07b10dfd8b193f8eee2c52457d102bcf03","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            expected schema"},{"line_number":76,"context_line":"        :raises: AssertionError"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        The expected_shema format is simply::"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"            ("},{"line_number":81,"context_line":"                (\u0027column name\u0027, sql type, qualifying detail),"}],"source_content_type":"text/x-python","patch_set":5,"id":"bab921fb_686fbdc5","line":78,"updated":"2015-04-24 16:33:38.000000000","message":"schema*","commit_id":"04402d497ce07b85f5682fcef20b1e0548a88284"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"93dc37edd3c58a7e0273f0d3a1a53c475a435f4b","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            elif (hasattr(column.type, \u0027length\u0027) and"},{"line_number":111,"context_line":"                    not isinstance(column.type, sql.Enum)):"},{"line_number":112,"context_line":"                # NOTE(dstanek): Even though sql.Enum columns have a length"},{"line_number":113,"context_line":"                # set we don\u0027t want to catch them here. Maybe in the future"},{"line_number":114,"context_line":"                # we\u0027ll check to see that they contain a list of the correct"},{"line_number":115,"context_line":"                # possible values."},{"line_number":116,"context_line":"                actual_schema.append((column.name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_9f4a4b53","line":113,"updated":"2015-03-09 08:21:28.000000000","message":"why not?","commit_id":"04402d497ce07b85f5682fcef20b1e0548a88284"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e5b000ff0d7b93652e076dee0b0cd2394a46bfd6","unresolved":false,"context_lines":[{"line_number":110,"context_line":"            elif (hasattr(column.type, \u0027length\u0027) and"},{"line_number":111,"context_line":"                    not isinstance(column.type, sql.Enum)):"},{"line_number":112,"context_line":"                # NOTE(dstanek): Even though sql.Enum columns have a length"},{"line_number":113,"context_line":"                # set we don\u0027t want to catch them here. Maybe in the future"},{"line_number":114,"context_line":"                # we\u0027ll check to see that they contain a list of the correct"},{"line_number":115,"context_line":"                # possible values."},{"line_number":116,"context_line":"                actual_schema.append((column.name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6ced46_c867eb4b","line":113,"in_reply_to":"9a80dd14_9f4a4b53","updated":"2015-03-25 14:04:47.000000000","message":"I\u0027m fine with having this done in a future commit.","commit_id":"04402d497ce07b85f5682fcef20b1e0548a88284"},{"author":{"_account_id":13478,"name":"Boris Bobrov","email":"b.bobrov@sap.com","username":"bbobrov"},"change_message_id":"b0cc07ce989c6f6fe93b69e27421f250d0f22355","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            else:"},{"line_number":120,"context_line":"                actual_schema.append((column.name, type(column.type), None))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.assertEqual(list(sorted(expected_schema)),"},{"line_number":123,"context_line":"                         list(sorted(actual_schema)))"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_user_model(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6ced46_0f4484b5","line":122,"updated":"2015-03-26 09:42:12.000000000","message":"assertItemsEqual should be used here instead of sorting","commit_id":"04402d497ce07b85f5682fcef20b1e0548a88284"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"e5b000ff0d7b93652e076dee0b0cd2394a46bfd6","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            else:"},{"line_number":120,"context_line":"                actual_schema.append((column.name, type(column.type), None))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.assertEqual(list(sorted(expected_schema)),"},{"line_number":123,"context_line":"                         list(sorted(actual_schema)))"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_user_model(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6ced46_c8328b5e","line":122,"updated":"2015-03-25 14:04:47.000000000","message":"sorted() returns a list.","commit_id":"04402d497ce07b85f5682fcef20b1e0548a88284"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"1bc72a6b4c50a54d3e1f8cf159084525d2d05b5e","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            else:"},{"line_number":120,"context_line":"                actual_schema.append((column.name, type(column.type), None))"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        self.assertEqual(list(sorted(expected_schema)),"},{"line_number":123,"context_line":"                         list(sorted(actual_schema)))"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    def test_user_model(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a6ced46_8fe074fb","line":122,"in_reply_to":"1a6ced46_c8328b5e","updated":"2015-03-26 09:35:01.000000000","message":"++","commit_id":"04402d497ce07b85f5682fcef20b1e0548a88284"}]}
