)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6,"name":"Joe Heck","email":"heckj@mac.com","username":"heckj"},"change_message_id":"c5e3992b4099c31ea06c7c8c6521c1e3cf0783e4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Tests upgrade to version 1"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Supports https://blueprints.launchpad.net/keystone/+spec/normalize-sql"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: If66250af068b396fc55f38c66f789b9447353bda"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAALn%2F%2Fxl4%3D","line":11,"updated":"2012-11-07 05:11:17.000000000","message":"probably easier to just put:\n\nblueprint: normalize-sql\n\nto link it up","commit_id":"92c20f4c6a2d8edd7069e15879668e32344b6697"}],"tests/test_sql_upgrade.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8be33cbe0d6aeec0117906b07343f952bc077575","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        version \u003d migration.db_version()"},{"line_number":54,"context_line":"        self.assertEqual(version, 0, \"DB is at version 0\")"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    #Confirms that the set of columns expected match the actual based on"},{"line_number":57,"context_line":"    #name and number of columns"},{"line_number":58,"context_line":"    def check_columns(self, name, expected_cols):"},{"line_number":59,"context_line":"        table \u003d self.select_table(name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2FxGg%3D","line":56,"updated":"2012-11-07 17:28:36.000000000","message":"make this a docstr?","commit_id":"8e055128ebd1f15b6301ca07925239cceedb387c"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"912ccdb114fa17aaccc0e39d1f999c95230026cc","unresolved":false,"context_lines":[{"line_number":53,"context_line":"        version \u003d migration.db_version()"},{"line_number":54,"context_line":"        self.assertEqual(version, 0, \"DB is at version 0\")"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    #Confirms that the set of columns expected match the actual based on"},{"line_number":57,"context_line":"    #name and number of columns"},{"line_number":58,"context_line":"    def check_columns(self, name, expected_cols):"},{"line_number":59,"context_line":"        table \u003d self.select_table(name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2FxFU%3D","line":56,"in_reply_to":"AAAALn%2F%2FxGg%3D","updated":"2012-11-07 17:34:46.000000000","message":"Done","commit_id":"8e055128ebd1f15b6301ca07925239cceedb387c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8be33cbe0d6aeec0117906b07343f952bc077575","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    #Confirms that the set of columns expected match the actual based on"},{"line_number":57,"context_line":"    #name and number of columns"},{"line_number":58,"context_line":"    def check_columns(self, name, expected_cols):"},{"line_number":59,"context_line":"        table \u003d self.select_table(name)"},{"line_number":60,"context_line":"        self.assertEqual(table.columns.__len__(), expected_cols.__len__(), \"\")"},{"line_number":61,"context_line":"        col_names \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2FxGI%3D","line":58,"updated":"2012-11-07 17:28:36.000000000","message":"can we call this assertSomethingSomething so it looks more likea unittest assertion?","commit_id":"8e055128ebd1f15b6301ca07925239cceedb387c"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"912ccdb114fa17aaccc0e39d1f999c95230026cc","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    #Confirms that the set of columns expected match the actual based on"},{"line_number":57,"context_line":"    #name and number of columns"},{"line_number":58,"context_line":"    def check_columns(self, name, expected_cols):"},{"line_number":59,"context_line":"        table \u003d self.select_table(name)"},{"line_number":60,"context_line":"        self.assertEqual(table.columns.__len__(), expected_cols.__len__(), \"\")"},{"line_number":61,"context_line":"        col_names \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2FxFQ%3D","line":58,"in_reply_to":"AAAALn%2F%2FxGI%3D","updated":"2012-11-07 17:34:46.000000000","message":"Done","commit_id":"8e055128ebd1f15b6301ca07925239cceedb387c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8be33cbe0d6aeec0117906b07343f952bc077575","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    #name and number of columns"},{"line_number":58,"context_line":"    def check_columns(self, name, expected_cols):"},{"line_number":59,"context_line":"        table \u003d self.select_table(name)"},{"line_number":60,"context_line":"        self.assertEqual(table.columns.__len__(), expected_cols.__len__(), \"\")"},{"line_number":61,"context_line":"        col_names \u003d []"},{"line_number":62,"context_line":"        for col in table.columns:"},{"line_number":63,"context_line":"            col_names.append(col.name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2FxF8%3D","line":60,"updated":"2012-11-07 17:28:36.000000000","message":"does len() not work here?","commit_id":"8e055128ebd1f15b6301ca07925239cceedb387c"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"912ccdb114fa17aaccc0e39d1f999c95230026cc","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    #name and number of columns"},{"line_number":58,"context_line":"    def check_columns(self, name, expected_cols):"},{"line_number":59,"context_line":"        table \u003d self.select_table(name)"},{"line_number":60,"context_line":"        self.assertEqual(table.columns.__len__(), expected_cols.__len__(), \"\")"},{"line_number":61,"context_line":"        col_names \u003d []"},{"line_number":62,"context_line":"        for col in table.columns:"},{"line_number":63,"context_line":"            col_names.append(col.name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2FxFM%3D","line":60,"in_reply_to":"AAAALn%2F%2FxF8%3D","updated":"2012-11-07 17:34:46.000000000","message":"Done","commit_id":"8e055128ebd1f15b6301ca07925239cceedb387c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8be33cbe0d6aeec0117906b07343f952bc077575","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.check_columns(\"metadata\", [\"user_id\", \"tenant_id\", \"data\"])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def select_table(self, name):"},{"line_number":79,"context_line":"        user_table \u003d sqlalchemy.Table(name,"},{"line_number":80,"context_line":"                                      self.metadata,"},{"line_number":81,"context_line":"                                      autoload\u003dTrue)"},{"line_number":82,"context_line":"        s \u003d sqlalchemy.select([user_table])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2FxGA%3D","line":79,"updated":"2012-11-07 17:28:36.000000000","message":"i assume this is supposed to be more generic than \u0027user_table\u0027?","commit_id":"8e055128ebd1f15b6301ca07925239cceedb387c"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"912ccdb114fa17aaccc0e39d1f999c95230026cc","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        self.check_columns(\"metadata\", [\"user_id\", \"tenant_id\", \"data\"])"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def select_table(self, name):"},{"line_number":79,"context_line":"        user_table \u003d sqlalchemy.Table(name,"},{"line_number":80,"context_line":"                                      self.metadata,"},{"line_number":81,"context_line":"                                      autoload\u003dTrue)"},{"line_number":82,"context_line":"        s \u003d sqlalchemy.select([user_table])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2FxFI%3D","line":79,"in_reply_to":"AAAALn%2F%2FxGA%3D","updated":"2012-11-07 17:34:46.000000000","message":"Yep.","commit_id":"8e055128ebd1f15b6301ca07925239cceedb387c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"8be33cbe0d6aeec0117906b07343f952bc077575","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        s \u003d sqlalchemy.select([user_table])"},{"line_number":83,"context_line":"        return s"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def is_user_table_created(self):"},{"line_number":86,"context_line":"        try:"},{"line_number":87,"context_line":"            self.select_table(\"user\")"},{"line_number":88,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2FxF4%3D","line":85,"updated":"2012-11-07 17:28:36.000000000","message":"assertTableExists(table_name) ?","commit_id":"8e055128ebd1f15b6301ca07925239cceedb387c"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"912ccdb114fa17aaccc0e39d1f999c95230026cc","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        s \u003d sqlalchemy.select([user_table])"},{"line_number":83,"context_line":"        return s"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def is_user_table_created(self):"},{"line_number":86,"context_line":"        try:"},{"line_number":87,"context_line":"            self.select_table(\"user\")"},{"line_number":88,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAALn%2F%2FxFA%3D","line":85,"in_reply_to":"AAAALn%2F%2FxF4%3D","updated":"2012-11-07 17:34:46.000000000","message":"No, as sometimes you want true, and sometimes you want false.","commit_id":"8e055128ebd1f15b6301ca07925239cceedb387c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"fd4b9feea7a7c4e076b2dea2b0b1d350e00a15ae","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import sqlalchemy"},{"line_number":18,"context_line":"from keystone.common import sql"},{"line_number":19,"context_line":"from keystone import config"},{"line_number":20,"context_line":"from keystone import test"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALn%2F%2Fwkw%3D","line":17,"updated":"2012-11-08 03:17:42.000000000","message":"import migrate, then sqlalchemy, then blank line, then keystone imports","commit_id":"14ec4c9e73e9e629eb0bcda139538fad917c6f5b"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"ddd23a12f99929d830b3ee10a6c8551fe3097961","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import sqlalchemy"},{"line_number":18,"context_line":"from keystone.common import sql"},{"line_number":19,"context_line":"from keystone import config"},{"line_number":20,"context_line":"from keystone import test"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALn%2F%2Fwiw%3D","line":17,"in_reply_to":"AAAALn%2F%2Fwkw%3D","updated":"2012-11-08 03:34:37.000000000","message":"Done","commit_id":"14ec4c9e73e9e629eb0bcda139538fad917c6f5b"}]}
