sqlalchemy-migrate/migrate/tests/versioning/test_runchangeset.py
2013-07-11 16:54:46 -04:00

53 lines
1.7 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os,shutil
from migrate.tests import fixture
from migrate.versioning.schema import *
from migrate.versioning import script
class TestRunChangeset(fixture.Pathed,fixture.DB):
level=fixture.DB.CONNECT
def _setup(self, url):
super(TestRunChangeset, self)._setup(url)
Repository.clear()
self.path_repos=self.tmp_repos()
# Create repository, script
Repository.create(self.path_repos,'repository_name')
@fixture.usedb()
def test_changeset_run(self):
"""Running a changeset against a repository gives expected results"""
repos=Repository(self.path_repos)
for i in range(10):
repos.create_script('')
try:
ControlledSchema(self.engine,repos).drop()
except:
pass
db=ControlledSchema.create(self.engine,repos)
# Scripts are empty; we'll check version # correctness.
# (Correct application of their content is checked elsewhere)
self.assertEqual(db.version,0)
db.upgrade(1)
self.assertEqual(db.version,1)
db.upgrade(5)
self.assertEqual(db.version,5)
db.upgrade(5)
self.assertEqual(db.version,5)
db.upgrade(None) # Latest is implied
self.assertEqual(db.version,10)
self.assertRaises(Exception,db.upgrade,11)
self.assertEqual(db.version,10)
db.upgrade(9)
self.assertEqual(db.version,9)
db.upgrade(0)
self.assertEqual(db.version,0)
self.assertRaises(Exception,db.upgrade,-1)
self.assertEqual(db.version,0)
#changeset = repos.changeset(self.url,0)
db.drop()