From fe1f1deca8110c0ea40cd544f815d05abc36e8ec Mon Sep 17 00:00:00 2001
From: "asuffield@gmail.com" <unknown>
Date: Mon, 23 Jan 2012 21:34:12 +0100
Subject: [PATCH] apply patch for issue #72 by asuffield@gmail.com

fixes #72
---
 migrate/tests/versioning/test_util.py | 10 ++++++++++
 migrate/versioning/util/__init__.py   |  2 +-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/migrate/tests/versioning/test_util.py b/migrate/tests/versioning/test_util.py
index 28015d0..6b22b7a 100644
--- a/migrate/tests/versioning/test_util.py
+++ b/migrate/tests/versioning/test_util.py
@@ -9,6 +9,7 @@ from migrate.exceptions import MigrateDeprecationWarning
 from migrate.tests import fixture
 from migrate.tests.fixture.warnings import catch_warnings
 from migrate.versioning.util import *
+from migrate.versioning import api
 
 import warnings
 
@@ -63,6 +64,15 @@ class TestUtil(fixture.Pathed):
         # unsupported argument
         self.assertRaises(ValueError, construct_engine, 1)
 
+    def test_passing_engine(self):
+        repo = self.tmp_repos()
+        api.create(repo, 'temp')
+        api.script('First Version', repo)
+        engine = construct_engine('sqlite:///:memory:')
+        
+        api.version_control(engine, repo)
+        api.upgrade(engine, repo)
+
     def test_asbool(self):
         """test asbool parsing"""
         result = asbool(True)
diff --git a/migrate/versioning/util/__init__.py b/migrate/versioning/util/__init__.py
index 9b79f40..0928644 100644
--- a/migrate/versioning/util/__init__.py
+++ b/migrate/versioning/util/__init__.py
@@ -158,7 +158,7 @@ def with_engine(f, *a, **kw):
         kw['engine'] = engine
         return f(*a, **kw)
     finally:
-        if isinstance(engine, Engine):
+        if isinstance(engine, Engine) and engine is not url:
             log.debug('Disposing SQLAlchemy engine %s', engine)
             engine.dispose()