From 8b0072b3e80ec804fa66efde7feb4bf735b85e28 Mon Sep 17 00:00:00 2001 From: iElectric Date: Sun, 20 Jun 2010 15:29:16 +0200 Subject: [PATCH] move to unittest2, update README for testing instructions --- README | 7 +- migrate/changeset/databases/sqlite.py | 1 + migrate/tests/fixture/__init__.py | 14 +- migrate/tests/fixture/base.py | 8 +- migrate/tests/fixture/shell.py | 8 +- migrate/tests/versioning/test_schemadiff.py | 4 +- migrate/tests/versioning/test_shell.py | 174 ++++++++++---------- test-req.pip | 1 + 8 files changed, 107 insertions(+), 110 deletions(-) diff --git a/README b/README index 6a8a9a4..f54c73b 100644 --- a/README +++ b/README @@ -26,10 +26,9 @@ To run automated tests: - Copy test_db.cfg.tmpl to test_db.cfg - Edit test_db.cfg with database connection strings suitable for running tests. (Use empty databases.) -- python setup.py test - -Note that `nose `_ is required to run migrate's tests. It should be -installed automatically; if not, try "easy_install nose". +$ pip install -r test-req.pip +$ python setup.py develop +$ nosetests Please report any issues with sqlalchemy-migrate to the issue tracker at `code.google.com issues `_ diff --git a/migrate/changeset/databases/sqlite.py b/migrate/changeset/databases/sqlite.py index 64be9bf..31fdbdd 100644 --- a/migrate/changeset/databases/sqlite.py +++ b/migrate/changeset/databases/sqlite.py @@ -101,6 +101,7 @@ class SQLiteConstraintGenerator(ansisql.ANSIConstraintGenerator, SQLiteCommon): def visit_migrate_unique_constraint(self, *p, **k): self._not_supported('ALTER TABLE ADD CONSTRAINT') + class SQLiteConstraintDropper(ansisql.ANSIColumnDropper, SQLiteCommon, ansisql.ANSIConstraintCommon): diff --git a/migrate/tests/fixture/__init__.py b/migrate/tests/fixture/__init__.py index 2a40355..2bb4397 100644 --- a/migrate/tests/fixture/__init__.py +++ b/migrate/tests/fixture/__init__.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -import unittest +import unittest2 import sys @@ -12,10 +12,10 @@ def getDescription(self, test): if self.descriptions: return test.shortDescription() or ret return ret -unittest._TextTestResult.getDescription = getDescription +unittest2._TextTestResult.getDescription = getDescription -class Result(unittest._TextTestResult): +class Result(unittest2._TextTestResult): # test description may be changed as we go; store the description at # exception-time and print later def __init__(self,*p,**k): @@ -33,7 +33,7 @@ class Result(unittest._TextTestResult): super(Result,self).addError(test,err) self._addError(test,err,self.errors) def printErrorList(self, flavour, errors): - # Copied from unittest.py + # Copied from unittest2.py #for test, err in errors: for errdata in errors: test,err,desc=errdata @@ -43,12 +43,12 @@ class Result(unittest._TextTestResult): self.stream.writeln(self.separator2) self.stream.writeln("%s" % err) -class Runner(unittest.TextTestRunner): +class Runner(unittest2.TextTestRunner): def _makeResult(self): return Result(self.stream,self.descriptions,self.verbosity) def suite(imports): - return unittest.TestLoader().loadTestsFromNames(imports) + return unittest2.TestLoader().loadTestsFromNames(imports) def main(imports=None): if imports: @@ -57,7 +57,7 @@ def main(imports=None): defaultTest='fixture.suite' else: defaultTest=None - return unittest.TestProgram(defaultTest=defaultTest,\ + return unittest2.TestProgram(defaultTest=defaultTest,\ testRunner=Runner(verbosity=1)) from base import Base diff --git a/migrate/tests/fixture/base.py b/migrate/tests/fixture/base.py index 10e8f13..67aabf8 100644 --- a/migrate/tests/fixture/base.py +++ b/migrate/tests/fixture/base.py @@ -2,16 +2,16 @@ # -*- coding: utf-8 -*- import re -import unittest +import unittest2 -class Base(unittest.TestCase): +class Base(unittest2.TestCase): def setup_method(self,func=None): self.setUp() def teardown_method(self,func=None): self.tearDown() - + def assertEqualsIgnoreWhitespace(self, v1, v2): """Compares two strings that should be\ identical except for whitespace @@ -22,7 +22,7 @@ class Base(unittest.TestCase): line1 = strip_whitespace(v1) line2 = strip_whitespace(v2) - self.assertEquals(line1, line2, "%s != %s" % (v1, v2)) + self.assertEqual(line1, line2, "%s != %s" % (v1, v2)) def ignoreErrors(self, func, *p,**k): """Call a function, ignoring any exceptions""" diff --git a/migrate/tests/fixture/shell.py b/migrate/tests/fixture/shell.py index 92f9e33..51e3885 100644 --- a/migrate/tests/fixture/shell.py +++ b/migrate/tests/fixture/shell.py @@ -17,16 +17,12 @@ class Shell(Pathed): self.env = TestFileEnvironment( base_path=os.path.join(self.temp_usable_dir, 'env'), script_path=[os.path.dirname(sys.executable)], # PATH to migrate development script folder - environ={'PYTHONPATH': - os.path.join(os.getcwd(), 'migrate', 'tests')}, ) - self.env.run("virtualenv %s" % self.env.base_path) - self.env.run("%s/bin/python setup.py install" % (self.env.base_path,), cwd=os.getcwd()) def run_version(self, repos_path): - result = self.env.run('bin/migrate version %s' % repos_path) + result = self.env.run('migrate version %s' % repos_path) return int(result.stdout.strip()) def run_db_version(self, url, repos_path): - result = self.env.run('bin/migrate db_version %s %s' % (url, repos_path)) + result = self.env.run('migrate db_version %s %s' % (url, repos_path)) return int(result.stdout.strip()) diff --git a/migrate/tests/versioning/test_schemadiff.py b/migrate/tests/versioning/test_schemadiff.py index 6df6463..0fb20fe 100644 --- a/migrate/tests/versioning/test_schemadiff.py +++ b/migrate/tests/versioning/test_schemadiff.py @@ -100,8 +100,8 @@ class TestSchemaDiff(fixture.DB): if not self.engine.name == 'oracle': # Add data, later we'll make sure it's still present. result = self.engine.execute(self.table.insert(), id=1, name=u'mydata') - dataId = result.last_inserted_ids()[0] - + dataId = result.inserted_primary_key[0] + # Modify table in model (by removing it and adding it back to model) -- drop column data and add column data2. self.meta.remove(self.table) self.table = Table(self.table_name,self.meta, diff --git a/migrate/tests/versioning/test_shell.py b/migrate/tests/versioning/test_shell.py index 1ce6dae..8727626 100644 --- a/migrate/tests/versioning/test_shell.py +++ b/migrate/tests/versioning/test_shell.py @@ -24,15 +24,15 @@ class TestShellCommands(Shell): def test_help(self): """Displays default help dialog""" - self.assertEqual(self.env.run('bin/migrate -h').returncode, 0) - self.assertEqual(self.env.run('bin/migrate --help').returncode, 0) - self.assertEqual(self.env.run('bin/migrate help').returncode, 0) + self.assertEqual(self.env.run('migrate -h').returncode, 0) + self.assertEqual(self.env.run('migrate --help').returncode, 0) + self.assertEqual(self.env.run('migrate help').returncode, 0) def test_help_commands(self): """Display help on a specific command""" # we can only test that we get some output for cmd in api.__all__: - result = self.env.run('bin/migrate help %s' % cmd) + result = self.env.run('migrate help %s' % cmd) self.assertTrue(isinstance(result.stdout, basestring)) self.assertTrue(result.stdout) self.assertFalse(result.stderr) @@ -40,10 +40,10 @@ class TestShellCommands(Shell): def test_shutdown_logging(self): """Try to shutdown logging output""" repos = self.tmp_repos() - result = self.env.run('bin/migrate create %s repository_name' % repos) - result = self.env.run('bin/migrate version %s --disable_logging' % repos) + result = self.env.run('migrate create %s repository_name' % repos) + result = self.env.run('migrate version %s --disable_logging' % repos) self.assertEqual(result.stdout, '') - result = self.env.run('bin/migrate version %s -q' % repos) + result = self.env.run('migrate version %s -q' % repos) self.assertEqual(result.stdout, '') # TODO: assert logging messages to 0 @@ -88,7 +88,7 @@ class TestShellCommands(Shell): repos = self.tmp_repos() # Creating a file that doesn't exist should succeed - result = self.env.run('bin/migrate create %s repository_name' % repos) + result = self.env.run('migrate create %s repository_name' % repos) # Files should actually be created self.assert_(os.path.exists(repos)) @@ -98,35 +98,35 @@ class TestShellCommands(Shell): self.assertNotEquals(repos_.config.get('db_settings', 'version_table'), 'None') # Can't create it again: it already exists - result = self.env.run('bin/migrate create %s repository_name' % repos, + result = self.env.run('migrate create %s repository_name' % repos, expect_error=True) self.assertEqual(result.returncode, 2) def test_script(self): """We can create a migration script via the command line""" repos = self.tmp_repos() - result = self.env.run('bin/migrate create %s repository_name' % repos) + result = self.env.run('migrate create %s repository_name' % repos) - result = self.env.run('bin/migrate script --repository=%s Desc' % repos) + result = self.env.run('migrate script --repository=%s Desc' % repos) self.assert_(os.path.exists('%s/versions/001_Desc.py' % repos)) - result = self.env.run('bin/migrate script More %s' % repos) + result = self.env.run('migrate script More %s' % repos) self.assert_(os.path.exists('%s/versions/002_More.py' % repos)) - result = self.env.run('bin/migrate script "Some Random name" %s' % repos) + result = self.env.run('migrate script "Some Random name" %s' % repos) self.assert_(os.path.exists('%s/versions/003_Some_Random_name.py' % repos)) def test_script_sql(self): """We can create a migration sql script via the command line""" repos = self.tmp_repos() - result = self.env.run('bin/migrate create %s repository_name' % repos) + result = self.env.run('migrate create %s repository_name' % repos) - result = self.env.run('bin/migrate script_sql mydb %s' % repos) + result = self.env.run('migrate script_sql mydb %s' % repos) self.assert_(os.path.exists('%s/versions/001_mydb_upgrade.sql' % repos)) self.assert_(os.path.exists('%s/versions/001_mydb_downgrade.sql' % repos)) # Test creating a second - result = self.env.run('bin/migrate script_sql postgres --repository=%s' % repos) + result = self.env.run('migrate script_sql postgres --repository=%s' % repos) self.assert_(os.path.exists('%s/versions/002_postgres_upgrade.sql' % repos)) self.assert_(os.path.exists('%s/versions/002_postgres_downgrade.sql' % repos)) @@ -138,7 +138,7 @@ class TestShellCommands(Shell): self.assert_(not os.path.exists(script)) # No attempt is made to verify correctness of the repository path here - result = self.env.run('bin/migrate manage %s --repository=/bla/' % script) + result = self.env.run('migrate manage %s --repository=/bla/' % script) self.assert_(os.path.exists(script)) @@ -149,41 +149,41 @@ class TestShellRepository(Shell): """Create repository, python change script""" super(TestShellRepository, self).setUp() self.path_repos = self.tmp_repos() - result = self.env.run('bin/migrate create %s repository_name' % self.path_repos) + result = self.env.run('migrate create %s repository_name' % self.path_repos) def test_version(self): """Correctly detect repository version""" # Version: 0 (no scripts yet); successful execution - result = self.env.run('bin/migrate version --repository=%s' % self.path_repos) + result = self.env.run('migrate version --repository=%s' % self.path_repos) self.assertEqual(result.stdout.strip(), "0") # Also works as a positional param - result = self.env.run('bin/migrate version %s' % self.path_repos) + result = self.env.run('migrate version %s' % self.path_repos) self.assertEqual(result.stdout.strip(), "0") # Create a script and version should increment - result = self.env.run('bin/migrate script Desc %s' % self.path_repos) - result = self.env.run('bin/migrate version %s' % self.path_repos) + result = self.env.run('migrate script Desc %s' % self.path_repos) + result = self.env.run('migrate version %s' % self.path_repos) self.assertEqual(result.stdout.strip(), "1") def test_source(self): """Correctly fetch a script's source""" - result = self.env.run('bin/migrate script Desc --repository=%s' % self.path_repos) + result = self.env.run('migrate script Desc --repository=%s' % self.path_repos) filename = '%s/versions/001_Desc.py' % self.path_repos source = open(filename).read() self.assert_(source.find('def upgrade') >= 0) # Version is now 1 - result = self.env.run('bin/migrate version %s' % self.path_repos) + result = self.env.run('migrate version %s' % self.path_repos) self.assertEqual(result.stdout.strip(), "1") # Output/verify the source of version 1 - result = self.env.run('bin/migrate source 1 --repository=%s' % self.path_repos) + result = self.env.run('migrate source 1 --repository=%s' % self.path_repos) self.assertEqual(result.stdout.strip(), source.strip()) # We can also send the source to a file... test that too - result = self.env.run('bin/migrate source 1 %s --repository=%s' % + result = self.env.run('migrate source 1 %s --repository=%s' % (filename, self.path_repos)) self.assert_(os.path.exists(filename)) fd = open(filename) @@ -203,17 +203,17 @@ class TestShellDatabase(Shell, DB): """Ensure we can set version control on a database""" path_repos = repos = self.tmp_repos() url = self.url - result = self.env.run('bin/migrate create %s repository_name' % repos) + result = self.env.run('migrate create %s repository_name' % repos) - result = self.env.run('bin/migrate drop_version_control %(url)s %(repos)s'\ + result = self.env.run('migrate drop_version_control %(url)s %(repos)s'\ % locals(), expect_error=True) self.assertEqual(result.returncode, 1) - result = self.env.run('bin/migrate version_control %(url)s %(repos)s' % locals()) + result = self.env.run('migrate version_control %(url)s %(repos)s' % locals()) # Clean up - result = self.env.run('bin/migrate drop_version_control %(url)s %(repos)s' % locals()) + result = self.env.run('migrate drop_version_control %(url)s %(repos)s' % locals()) # Attempting to drop vc from a database without it should fail - result = self.env.run('bin/migrate drop_version_control %(url)s %(repos)s'\ + result = self.env.run('migrate drop_version_control %(url)s %(repos)s'\ % locals(), expect_error=True) self.assertEqual(result.returncode, 1) @@ -222,41 +222,41 @@ class TestShellDatabase(Shell, DB): """Commands with default arguments set by manage.py""" path_repos = repos = self.tmp_repos() url = self.url - result = self.env.run('bin/migrate create --name=repository_name %s' % repos) - result = self.env.run('bin/migrate drop_version_control %(url)s %(repos)s' % locals(), expect_error=True) + result = self.env.run('migrate create --name=repository_name %s' % repos) + result = self.env.run('migrate drop_version_control %(url)s %(repos)s' % locals(), expect_error=True) self.assertEqual(result.returncode, 1) - result = self.env.run('bin/migrate version_control %(url)s %(repos)s' % locals()) + result = self.env.run('migrate version_control %(url)s %(repos)s' % locals()) - result = self.env.run('bin/migrate drop_version_control %(url)s %(repos)s' % locals()) + result = self.env.run('migrate drop_version_control %(url)s %(repos)s' % locals()) @usedb() def test_version_control_specified(self): """Ensure we can set version control to a particular version""" path_repos = self.tmp_repos() url = self.url - result = self.env.run('bin/migrate create --name=repository_name %s' % path_repos) - result = self.env.run('bin/migrate drop_version_control %(url)s %(path_repos)s' % locals(), expect_error=True) + result = self.env.run('migrate create --name=repository_name %s' % path_repos) + result = self.env.run('migrate drop_version_control %(url)s %(path_repos)s' % locals(), expect_error=True) self.assertEqual(result.returncode, 1) # Fill the repository path_script = self.tmp_py() version = 2 for i in range(version): - result = self.env.run('bin/migrate script Desc --repository=%s' % path_repos) + result = self.env.run('migrate script Desc --repository=%s' % path_repos) # Repository version is correct - result = self.env.run('bin/migrate version %s' % path_repos) + result = self.env.run('migrate version %s' % path_repos) self.assertEqual(result.stdout.strip(), str(version)) # Apply versioning to DB - result = self.env.run('bin/migrate version_control %(url)s %(path_repos)s %(version)s' % locals()) + result = self.env.run('migrate version_control %(url)s %(path_repos)s %(version)s' % locals()) # Test db version number (should start at 2) - result = self.env.run('bin/migrate db_version %(url)s %(path_repos)s' % locals()) + result = self.env.run('migrate db_version %(url)s %(path_repos)s' % locals()) self.assertEqual(result.stdout.strip(), str(version)) # Clean up - result = self.env.run('bin/migrate drop_version_control %(url)s %(path_repos)s' % locals()) + result = self.env.run('migrate drop_version_control %(url)s %(path_repos)s' % locals()) @usedb() def test_upgrade(self): @@ -264,67 +264,67 @@ class TestShellDatabase(Shell, DB): # Create a repository repos_name = 'repos_name' repos_path = self.tmp() - result = self.env.run('bin/migrate create %(repos_path)s %(repos_name)s' % locals()) + result = self.env.run('migrate create %(repos_path)s %(repos_name)s' % locals()) self.assertEquals(self.run_version(repos_path), 0) # Version the DB - result = self.env.run('bin/migrate drop_version_control %s %s' % (self.url, repos_path), expect_error=True) - result = self.env.run('bin/migrate version_control %s %s' % (self.url, repos_path)) + result = self.env.run('migrate drop_version_control %s %s' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate version_control %s %s' % (self.url, repos_path)) # Upgrades with latest version == 0 self.assertEquals(self.run_db_version(self.url, repos_path), 0) - result = self.env.run('bin/migrate upgrade %s %s' % (self.url, repos_path)) + result = self.env.run('migrate upgrade %s %s' % (self.url, repos_path)) self.assertEquals(self.run_db_version(self.url, repos_path), 0) - result = self.env.run('bin/migrate upgrade %s %s' % (self.url, repos_path)) + result = self.env.run('migrate upgrade %s %s' % (self.url, repos_path)) self.assertEquals(self.run_db_version(self.url, repos_path), 0) - result = self.env.run('bin/migrate upgrade %s %s 1' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate upgrade %s %s 1' % (self.url, repos_path), expect_error=True) self.assertEquals(result.returncode, 1) - result = self.env.run('bin/migrate upgrade %s %s -1' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate upgrade %s %s -1' % (self.url, repos_path), expect_error=True) self.assertEquals(result.returncode, 2) # Add a script to the repository; upgrade the db - result = self.env.run('bin/migrate script Desc --repository=%s' % (repos_path)) + result = self.env.run('migrate script Desc --repository=%s' % (repos_path)) self.assertEquals(self.run_version(repos_path), 1) self.assertEquals(self.run_db_version(self.url, repos_path), 0) # Test preview - result = self.env.run('bin/migrate upgrade %s %s 0 --preview_sql' % (self.url, repos_path)) - result = self.env.run('bin/migrate upgrade %s %s 0 --preview_py' % (self.url, repos_path)) + result = self.env.run('migrate upgrade %s %s 0 --preview_sql' % (self.url, repos_path)) + result = self.env.run('migrate upgrade %s %s 0 --preview_py' % (self.url, repos_path)) - result = self.env.run('bin/migrate upgrade %s %s' % (self.url, repos_path)) + result = self.env.run('migrate upgrade %s %s' % (self.url, repos_path)) self.assertEquals(self.run_db_version(self.url, repos_path), 1) # Downgrade must have a valid version specified - result = self.env.run('bin/migrate downgrade %s %s' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate downgrade %s %s' % (self.url, repos_path), expect_error=True) self.assertEquals(result.returncode, 2) - result = self.env.run('bin/migrate downgrade %s %s -1' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate downgrade %s %s -1' % (self.url, repos_path), expect_error=True) self.assertEquals(result.returncode, 2) - result = self.env.run('bin/migrate downgrade %s %s 2' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate downgrade %s %s 2' % (self.url, repos_path), expect_error=True) self.assertEquals(result.returncode, 2) self.assertEquals(self.run_db_version(self.url, repos_path), 1) - result = self.env.run('bin/migrate downgrade %s %s 0' % (self.url, repos_path)) + result = self.env.run('migrate downgrade %s %s 0' % (self.url, repos_path)) self.assertEquals(self.run_db_version(self.url, repos_path), 0) - result = self.env.run('bin/migrate downgrade %s %s 1' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate downgrade %s %s 1' % (self.url, repos_path), expect_error=True) self.assertEquals(result.returncode, 2) self.assertEquals(self.run_db_version(self.url, repos_path), 0) - result = self.env.run('bin/migrate drop_version_control %s %s' % (self.url, repos_path)) + result = self.env.run('migrate drop_version_control %s %s' % (self.url, repos_path)) def _run_test_sqlfile(self, upgrade_script, downgrade_script): # TODO: add test script that checks if db really changed repos_path = self.tmp() repos_name = 'repos' - result = self.env.run('bin/migrate create %s %s' % (repos_path, repos_name)) - result = self.env.run('bin/migrate drop_version_control %s %s' % (self.url, repos_path), expect_error=True) - result = self.env.run('bin/migrate version_control %s %s' % (self.url, repos_path)) + result = self.env.run('migrate create %s %s' % (repos_path, repos_name)) + result = self.env.run('migrate drop_version_control %s %s' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate version_control %s %s' % (self.url, repos_path)) self.assertEquals(self.run_version(repos_path), 0) self.assertEquals(self.run_db_version(self.url, repos_path), 0) beforeCount = len(os.listdir(os.path.join(repos_path, 'versions'))) # hmm, this number changes sometimes based on running from svn - result = self.env.run('bin/migrate script_sql %s --repository=%s' % ('postgres', repos_path)) + result = self.env.run('migrate script_sql %s --repository=%s' % ('postgres', repos_path)) self.assertEquals(self.run_version(repos_path), 1) self.assertEquals(len(os.listdir(os.path.join(repos_path, 'versions'))), beforeCount + 2) @@ -334,11 +334,11 @@ class TestShellDatabase(Shell, DB): self.assertEquals(self.run_db_version(self.url, repos_path), 0) self.assertRaises(Exception, self.engine.text('select * from t_table').execute) - result = self.env.run('bin/migrate upgrade %s %s' % (self.url, repos_path)) + result = self.env.run('migrate upgrade %s %s' % (self.url, repos_path)) self.assertEquals(self.run_db_version(self.url, repos_path), 1) self.engine.text('select * from t_table').execute() - result = self.env.run('bin/migrate downgrade %s %s 0' % (self.url, repos_path)) + result = self.env.run('migrate downgrade %s %s 0' % (self.url, repos_path)) self.assertEquals(self.run_db_version(self.url, repos_path), 0) self.assertRaises(Exception, self.engine.text('select * from t_table').execute) @@ -378,15 +378,15 @@ class TestShellDatabase(Shell, DB): repos_name = 'repos_name' repos_path = self.tmp() - result = self.env.run('bin/migrate create repository_name --repository=%s' % repos_path) - result = self.env.run('bin/migrate drop_version_control %s %s' % (self.url, repos_path), expect_error=True) - result = self.env.run('bin/migrate version_control %s %s' % (self.url, repos_path)) + result = self.env.run('migrate create repository_name --repository=%s' % repos_path) + result = self.env.run('migrate drop_version_control %s %s' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate version_control %s %s' % (self.url, repos_path)) self.assertEquals(self.run_version(repos_path), 0) self.assertEquals(self.run_db_version(self.url, repos_path), 0) # Empty script should succeed - result = self.env.run('bin/migrate script Desc %s' % repos_path) - result = self.env.run('bin/migrate test %s %s' % (self.url, repos_path)) + result = self.env.run('migrate script Desc %s' % repos_path) + result = self.env.run('migrate test %s %s' % (self.url, repos_path)) self.assertEquals(self.run_version(repos_path), 1) self.assertEquals(self.run_db_version(self.url, repos_path), 0) @@ -408,7 +408,7 @@ class TestShellDatabase(Shell, DB): file.write(script_text) file.close() - result = self.env.run('bin/migrate test %s %s bla' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate test %s %s bla' % (self.url, repos_path), expect_error=True) self.assertEqual(result.returncode, 2) self.assertEquals(self.run_version(repos_path), 1) self.assertEquals(self.run_db_version(self.url, repos_path), 0) @@ -439,7 +439,7 @@ class TestShellDatabase(Shell, DB): file = open(script_path, 'w') file.write(script_text) file.close() - result = self.env.run('bin/migrate test %s %s' % (self.url, repos_path)) + result = self.env.run('migrate test %s %s' % (self.url, repos_path)) self.assertEquals(self.run_version(repos_path), 1) self.assertEquals(self.run_db_version(self.url, repos_path), 0) @@ -458,43 +458,43 @@ class TestShellDatabase(Shell, DB): self.meta.reflect() self.meta.drop_all() # in case junk tables are lying around in the test database - result = self.env.run('bin/migrate create %s %s' % (repos_path, repos_name)) - result = self.env.run('bin/migrate drop_version_control %s %s' % (self.url, repos_path), expect_error=True) - result = self.env.run('bin/migrate version_control %s %s' % (self.url, repos_path)) + result = self.env.run('migrate create %s %s' % (repos_path, repos_name)) + result = self.env.run('migrate drop_version_control %s %s' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate version_control %s %s' % (self.url, repos_path)) self.assertEquals(self.run_version(repos_path), 0) self.assertEquals(self.run_db_version(self.url, repos_path), 0) # Setup helper script. - result = self.env.run('bin/migrate manage %s --repository=%s --url=%s --model=%s'\ + result = self.env.run('migrate manage %s --repository=%s --url=%s --model=%s'\ % (script_path, repos_path, self.url, model_module)) self.assert_(os.path.exists(script_path)) # Model is defined but database is empty. - result = self.env.run('bin/migrate compare_model_to_db %s %s --model=%s' \ + result = self.env.run('migrate compare_model_to_db %s %s --model=%s' \ % (self.url, repos_path, model_module)) self.assert_("tables missing in database: tmp_account_rundiffs" in result.stdout) # Test Deprecation - result = self.env.run('bin/migrate compare_model_to_db %s %s --model=%s' \ + result = self.env.run('migrate compare_model_to_db %s %s --model=%s' \ % (self.url, repos_path, model_module.replace(":", ".")), expect_error=True) self.assertEqual(result.returncode, 0) self.assertTrue("DeprecationWarning" in result.stderr) self.assert_("tables missing in database: tmp_account_rundiffs" in result.stdout) # Update db to latest model. - result = self.env.run('bin/migrate update_db_from_model %s %s %s'\ + result = self.env.run('migrate update_db_from_model %s %s %s'\ % (self.url, repos_path, model_module)) self.assertEquals(self.run_version(repos_path), 0) self.assertEquals(self.run_db_version(self.url, repos_path), 0) # version did not get bumped yet because new version not yet created - result = self.env.run('bin/migrate compare_model_to_db %s %s %s'\ + result = self.env.run('migrate compare_model_to_db %s %s %s'\ % (self.url, repos_path, model_module)) self.assert_("No schema diffs" in result.stdout) - result = self.env.run('bin/migrate drop_version_control %s %s' % (self.url, repos_path), expect_error=True) - result = self.env.run('bin/migrate version_control %s %s' % (self.url, repos_path)) + result = self.env.run('migrate drop_version_control %s %s' % (self.url, repos_path), expect_error=True) + result = self.env.run('migrate version_control %s %s' % (self.url, repos_path)) - result = self.env.run('bin/migrate create_model %s %s' % (self.url, repos_path)) + result = self.env.run('migrate create_model %s %s' % (self.url, repos_path)) temp_dict = dict() exec result.stdout in temp_dict @@ -506,10 +506,10 @@ class TestShellDatabase(Shell, DB): #Column('passwd', String(length=None, convert_unicode=False, assert_unicode=None))""" in result.stdout) # We're happy with db changes, make first db upgrade script to go from version 0 -> 1. - result = self.env.run('bin/migrate make_update_script_for_model', expect_error=True) + result = self.env.run('migrate make_update_script_for_model', expect_error=True) self.assertTrue('Not enough arguments' in result.stderr) - result_script = self.env.run('bin/migrate make_update_script_for_model %s %s %s %s'\ + result_script = self.env.run('migrate make_update_script_for_model %s %s %s %s'\ % (self.url, repos_path, old_model_module, model_module)) self.assertEqualsIgnoreWhitespace(result_script.stdout, '''from sqlalchemy import * @@ -536,11 +536,11 @@ class TestShellDatabase(Shell, DB): tmp_account_rundiffs.drop()''') # Save the upgrade script. - result = self.env.run('bin/migrate script Desc %s' % repos_path) + result = self.env.run('migrate script Desc %s' % repos_path) upgrade_script_path = '%s/versions/001_Desc.py' % repos_path open(upgrade_script_path, 'w').write(result_script.stdout) - result = self.env.run('bin/migrate compare_model_to_db %s %s %s'\ + result = self.env.run('migrate compare_model_to_db %s %s %s'\ % (self.url, repos_path, model_module)) self.assert_("No schema diffs" in result.stdout) diff --git a/test-req.pip b/test-req.pip index 1c17d49..8b1fa62 100644 --- a/test-req.pip +++ b/test-req.pip @@ -8,3 +8,4 @@ pysqlite mysql-python http://downloads.sourceforge.net/firebird/kinterbasdb-3.3.0.tar.bz2 virtualenv +unittest2