From 29be5b7a37f0eac17f5afada9d3810b3d158b9ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gabriel=20Falc=C3=A3o?= Date: Mon, 27 Apr 2009 11:19:52 -0300 Subject: [PATCH] Refactoring the class SimpleDBMigrate to Migrations, and fixing a bug about the "drop database" command. --- .gitignore | 0 LICENSE.txt | 0 Makefile | 0 NOTICE.txt | 0 README.textile | 0 ...0090123195634_create_table_users.migration | 0 example/20090211120001_add_user_age.migration | 0 ...090211120002_add_user_mother_age.migration | 0 ...090211120003_create_table_chimps.migration | 0 ...0228235709_create_table_aleatory.migration | 0 example/simple-db-migrate.conf | 0 setup.py | 0 src/simple_db_migrate/__init__.py | 0 src/simple_db_migrate/cli.py | 0 src/simple_db_migrate/core.py | 2 +- src/simple_db_migrate/helpers.py | 0 src/simple_db_migrate/main.py | 4 +- src/simple_db_migrate/mysql.py | 2 +- tests/cli_test.py | 0 tests/core_test.py | 38 +++++++++---------- tests/helpers_test.py | 0 tests/main_test.py | 0 tests/mysql_test.py | 2 +- tests/test.py | 2 +- 24 files changed, 25 insertions(+), 25 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 LICENSE.txt mode change 100644 => 100755 Makefile mode change 100644 => 100755 NOTICE.txt mode change 100644 => 100755 README.textile mode change 100644 => 100755 example/20090123195634_create_table_users.migration mode change 100644 => 100755 example/20090211120001_add_user_age.migration mode change 100644 => 100755 example/20090211120002_add_user_mother_age.migration mode change 100644 => 100755 example/20090211120003_create_table_chimps.migration mode change 100644 => 100755 example/20090228235709_create_table_aleatory.migration mode change 100644 => 100755 example/simple-db-migrate.conf mode change 100644 => 100755 setup.py mode change 100644 => 100755 src/simple_db_migrate/__init__.py mode change 100644 => 100755 src/simple_db_migrate/cli.py mode change 100644 => 100755 src/simple_db_migrate/core.py mode change 100644 => 100755 src/simple_db_migrate/helpers.py mode change 100644 => 100755 src/simple_db_migrate/main.py mode change 100644 => 100755 src/simple_db_migrate/mysql.py mode change 100644 => 100755 tests/cli_test.py mode change 100644 => 100755 tests/core_test.py mode change 100644 => 100755 tests/helpers_test.py mode change 100644 => 100755 tests/main_test.py mode change 100644 => 100755 tests/mysql_test.py mode change 100644 => 100755 tests/test.py diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/LICENSE.txt b/LICENSE.txt old mode 100644 new mode 100755 diff --git a/Makefile b/Makefile old mode 100644 new mode 100755 diff --git a/NOTICE.txt b/NOTICE.txt old mode 100644 new mode 100755 diff --git a/README.textile b/README.textile old mode 100644 new mode 100755 diff --git a/example/20090123195634_create_table_users.migration b/example/20090123195634_create_table_users.migration old mode 100644 new mode 100755 diff --git a/example/20090211120001_add_user_age.migration b/example/20090211120001_add_user_age.migration old mode 100644 new mode 100755 diff --git a/example/20090211120002_add_user_mother_age.migration b/example/20090211120002_add_user_mother_age.migration old mode 100644 new mode 100755 diff --git a/example/20090211120003_create_table_chimps.migration b/example/20090211120003_create_table_chimps.migration old mode 100644 new mode 100755 diff --git a/example/20090228235709_create_table_aleatory.migration b/example/20090228235709_create_table_aleatory.migration old mode 100644 new mode 100755 diff --git a/example/simple-db-migrate.conf b/example/simple-db-migrate.conf old mode 100644 new mode 100755 diff --git a/setup.py b/setup.py old mode 100644 new mode 100755 diff --git a/src/simple_db_migrate/__init__.py b/src/simple_db_migrate/__init__.py old mode 100644 new mode 100755 diff --git a/src/simple_db_migrate/cli.py b/src/simple_db_migrate/cli.py old mode 100644 new mode 100755 diff --git a/src/simple_db_migrate/core.py b/src/simple_db_migrate/core.py old mode 100644 new mode 100755 index 241b80e..ec61559 --- a/src/simple_db_migrate/core.py +++ b/src/simple_db_migrate/core.py @@ -5,7 +5,7 @@ import re #TODO: Refactor: rename to "Migrations" -class SimpleDBMigrate(object): +class Migrations(object): __migration_files_extension = ".migration" diff --git a/src/simple_db_migrate/helpers.py b/src/simple_db_migrate/helpers.py old mode 100644 new mode 100755 diff --git a/src/simple_db_migrate/main.py b/src/simple_db_migrate/main.py old mode 100644 new mode 100755 index efa29f9..c21f189 --- a/src/simple_db_migrate/main.py +++ b/src/simple_db_migrate/main.py @@ -1,5 +1,5 @@ from cli import CLI -from core import SimpleDBMigrate +from core import Migrations from helpers import Lists from mysql import MySQL import sys @@ -17,7 +17,7 @@ def __init__(self, options=None, args=None, mysql=None, db_migrate=None): self.__db_migrate = db_migrate if self.__db_migrate is None: - self.__db_migrate = SimpleDBMigrate(self.__options.migrations_dir) + self.__db_migrate = Migrations(self.__options.migrations_dir) def execute(self): self.__cli.msg("\nStarting DB migration...") diff --git a/src/simple_db_migrate/mysql.py b/src/simple_db_migrate/mysql.py old mode 100644 new mode 100755 index eebf869..4f0627a --- a/src/simple_db_migrate/mysql.py +++ b/src/simple_db_migrate/mysql.py @@ -56,7 +56,7 @@ def __execute(self, sql): def _drop_database(self): db = self.__mysql_connect(False) try: - db.query("drop database %s;" % self.__mysql_db) + db.query("drop database if exists %s;" % self.__mysql_db) except Exception, e: self.__cli.error_and_exit("can't drop database '%s'; database doesn't exist" % self.__mysql_db) db.close() diff --git a/tests/cli_test.py b/tests/cli_test.py old mode 100644 new mode 100755 diff --git a/tests/core_test.py b/tests/core_test.py old mode 100644 new mode 100755 index e9aca91..1e9404f --- a/tests/core_test.py +++ b/tests/core_test.py @@ -4,7 +4,7 @@ import os import unittest -class SimpleDBMigrateTest(unittest.TestCase): +class MigrationsTest(unittest.TestCase): def __create_empty_file(self, file_name): f = open(file_name, "w") @@ -63,20 +63,20 @@ def tearDown(self): # eventually the tests that fail leave some garbage behind # this is to clean up the mess try: - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") for each_file in db_migrate.get_all_migration_files(): os.remove(each_file) except: pass def test_it_should_get_all_migration_files_in_dir(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") migration_files = db_migrate.get_all_migration_files() for each_file in migration_files: self.assertTrue(each_file in self.__test_migration_files) def test_it_should_get_only_valid_migration_files_in_dir(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") migration_files = db_migrate.get_all_migration_files() for file_name in self.__test_migration_files: @@ -86,7 +86,7 @@ def test_it_should_get_only_valid_migration_files_in_dir(self): self.assertFalse(bad_file_name in migration_files) def test_it_should_get_all_migration_versions_available(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") migration_files = db_migrate.get_all_migration_files() expected_versions = [] for each_file in migration_files: @@ -97,25 +97,25 @@ def test_it_should_get_all_migration_versions_available(self): self.assertTrue(each_version_got in expected_versions) def test_it_should_get_all_migration_versions_up_to_a_version(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") migration_files = db_migrate.get_all_migration_versions_up_to("20090214115200") self.assertEquals(len(migration_files), 1) self.assertEquals(migration_files[0], "20090214115100") def test_it_should_get_migration_up_command_in_file(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") migration_file = "20090214120600_example_migration_file_with_commands.migration" sql = db_migrate.get_sql_command(migration_file, True) self.assertEquals(sql, "create table test;") def test_it_should_get_migration_down_command_in_file(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") migration_file = "20090214120600_example_migration_file_with_commands.migration" sql = db_migrate.get_sql_command(migration_file, False) self.assertEquals(sql, "drop table test;") def test_it_should_not_get_migration_command_in_files_with_blank_commands(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") migration_file = "20090214120700_example_migration_file_without_commands.migration" try: sql = db_migrate.get_sql_command(migration_file, True) @@ -124,7 +124,7 @@ def test_it_should_not_get_migration_command_in_files_with_blank_commands(self): pass def test_it_should_not_get_migration_command_in_empty_file(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") migration_file = self.__test_migration_files[0] try: sql = db_migrate.get_sql_command(migration_file, True) @@ -135,7 +135,7 @@ def test_it_should_not_get_migration_command_in_empty_file(self): pass def test_it_should_get_migration_version_from_file(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") # good file name example_file_name = "20090214120600_example_migration_file_name.migration" version = db_migrate.get_migration_version(example_file_name) @@ -146,17 +146,17 @@ def test_it_should_get_migration_version_from_file(self): self.assertEquals(version, "2009021401") def test_it_should_check_if_schema_version_exists_in_files(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") exists = db_migrate.check_if_version_exists("20090214115100") self.assertTrue(exists) def test_it_should_get_the_latest_schema_version_available(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") latest_version = db_migrate.latest_schema_version_available() self.assertEquals(latest_version, "21420101000000") def test_it_should_validate_file_name_format_mask(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") for file_name in self.__test_migration_files: self.assertTrue(db_migrate.is_file_name_valid(file_name)) @@ -165,12 +165,12 @@ def test_it_should_validate_file_name_format_mask(self): self.assertFalse(db_migrate.is_file_name_valid(bad_file_name)) def test_it_should_not_validate_gedit_swap_files(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") invalid_file_name = "%s~" % self.__test_migration_files[0] self.assertFalse(db_migrate.is_file_name_valid(invalid_file_name)) def test_it_should_create_migration_file(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") new_migration_file_name = db_migrate.create_migration("create_a_migration_file") self.assertTrue(db_migrate.is_file_name_valid(new_migration_file_name)) @@ -180,7 +180,7 @@ def test_it_should_create_migration_file(self): self.__test_migration_files.append(new_migration_file_name) def test_it_should_not_create_migration_file_with_bad_name(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") try: db_migrate.create_migration("INVALID FILE NAME") self.fail("it should not pass here") @@ -188,12 +188,12 @@ def test_it_should_not_create_migration_file_with_bad_name(self): pass def test_it_should_get_migration_file_from_version_number(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") migration_file_name = db_migrate.get_migration_file_name_from_version_number("20090214115100") self.assertEquals(migration_file_name, "20090214115100_example_migration_file1.migration") def test_it_should_get_none_migration_file_from_invalid_version_number(self): - db_migrate = SimpleDBMigrate(".") + db_migrate = Migrations(".") migration_file_name = db_migrate.get_migration_file_name_from_version_number("***invalid***") self.assertTrue(migration_file_name is None) diff --git a/tests/helpers_test.py b/tests/helpers_test.py old mode 100644 new mode 100755 diff --git a/tests/main_test.py b/tests/main_test.py old mode 100644 new mode 100755 diff --git a/tests/mysql_test.py b/tests/mysql_test.py old mode 100644 new mode 100755 index d762b86..8549586 --- a/tests/mysql_test.py +++ b/tests/mysql_test.py @@ -61,7 +61,7 @@ def test_it_should_drop_database_on_init_if_its_asked(self): self.__mock_db_init(mysql_driver_mock, db_mock, cursor_mock) - db_mock.expects(once()).method("query").query(eq("drop database migration_test;")) + db_mock.expects(once()).method("query").query(eq("drop database if exists migration_test;")) db_mock.expects(once()).method("close") mysql = MySQL(db_config_file="test.conf", mysql_driver=mysql_driver_mock, drop_db_first=True) diff --git a/tests/test.py b/tests/test.py old mode 100644 new mode 100755 index 49ba355..a0e83a0 --- a/tests/test.py +++ b/tests/test.py @@ -22,7 +22,7 @@ test_suites.append(unittest.TestLoader().loadTestsFromTestCase(ListsTest)) test_suites.append(unittest.TestLoader().loadTestsFromTestCase(MainTest)) test_suites.append(unittest.TestLoader().loadTestsFromTestCase(MySQLTest)) - test_suites.append(unittest.TestLoader().loadTestsFromTestCase(SimpleDBMigrateTest)) + test_suites.append(unittest.TestLoader().loadTestsFromTestCase(MigrationsTest)) alltests = unittest.TestSuite(test_suites)