database: add open_existing_db() for migration tool

This commit is contained in:
Brian Warner 2017-11-07 21:52:14 -06:00
parent 69d66dd4c1
commit 54be4cd8d3
2 changed files with 28 additions and 0 deletions

View File

@ -116,6 +116,15 @@ def get_db(dbfile, target_version=TARGET_VERSION):
return db return db
class DBDoesntExist(Exception):
pass
def open_existing_db(dbfile):
assert dbfile != ":memory:"
if not os.path.exists(dbfile):
raise DBDoesntExist()
return _open_db_connection(dbfile)
class DBAlreadyExists(Exception): class DBAlreadyExists(Exception):
pass pass

View File

@ -83,3 +83,22 @@ class Create(unittest.TestCase):
latest_text = dump_db(db) latest_text = dump_db(db)
self.assertIn("CREATE TABLE", latest_text) self.assertIn("CREATE TABLE", latest_text)
class Open(unittest.TestCase):
def test_open(self):
basedir = self.mktemp()
os.mkdir(basedir)
fn = os.path.join(basedir, "created.db")
db1 = database.create_db(fn)
latest_text = dump_db(db1)
self.assertIn("CREATE TABLE", latest_text)
db2 = database.open_existing_db(fn)
self.assertIn("CREATE TABLE", dump_db(db2))
def test_doesnt_exist(self):
basedir = self.mktemp()
os.mkdir(basedir)
fn = os.path.join(basedir, "created.db")
with self.assertRaises(database.DBDoesntExist):
database.open_existing_db(fn)