forked from openlp/openlp
Fix up the tests for Windows by retrying deleting the databases.
bzr-revno: 2608
This commit is contained in:
commit
f588b82976
@ -87,8 +87,6 @@ class TestProjectorDB(TestCase):
|
|||||||
Set up anything necessary for all tests
|
Set up anything necessary for all tests
|
||||||
"""
|
"""
|
||||||
with patch('openlp.core.lib.projector.db.init_url') as mocked_init_url:
|
with patch('openlp.core.lib.projector.db.init_url') as mocked_init_url:
|
||||||
if os.path.exists(TEST_DB):
|
|
||||||
os.unlink(TEST_DB)
|
|
||||||
mocked_init_url.return_value = 'sqlite:///%s' % TEST_DB
|
mocked_init_url.return_value = 'sqlite:///%s' % TEST_DB
|
||||||
self.projector = ProjectorDB()
|
self.projector = ProjectorDB()
|
||||||
|
|
||||||
@ -98,6 +96,15 @@ class TestProjectorDB(TestCase):
|
|||||||
"""
|
"""
|
||||||
self.projector.session.close()
|
self.projector.session.close()
|
||||||
self.projector = None
|
self.projector = None
|
||||||
|
retries = 0
|
||||||
|
while retries < 5:
|
||||||
|
try:
|
||||||
|
if os.path.exists(TEST_DB):
|
||||||
|
os.unlink(TEST_DB)
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
time.sleep(1)
|
||||||
|
retries += 1
|
||||||
|
|
||||||
def find_record_by_ip_test(self):
|
def find_record_by_ip_test(self):
|
||||||
"""
|
"""
|
||||||
|
@ -22,14 +22,17 @@
|
|||||||
"""
|
"""
|
||||||
Package to test the openlp.core.utils.db package.
|
Package to test the openlp.core.utils.db package.
|
||||||
"""
|
"""
|
||||||
|
from tempfile import mkdtemp
|
||||||
|
from unittest import TestCase
|
||||||
|
import gc
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
from unittest import TestCase
|
import time
|
||||||
from tempfile import mkdtemp
|
|
||||||
|
|
||||||
from openlp.core.utils.db import drop_column, drop_columns
|
from openlp.core.utils.db import drop_column, drop_columns
|
||||||
from openlp.core.lib.db import init_db, get_upgrade_op
|
from openlp.core.lib.db import init_db, get_upgrade_op
|
||||||
|
|
||||||
from tests.utils.constants import TEST_RESOURCES_PATH
|
from tests.utils.constants import TEST_RESOURCES_PATH
|
||||||
|
|
||||||
|
|
||||||
@ -40,30 +43,41 @@ class TestUtilsDBFunctions(TestCase):
|
|||||||
Create temp folder for keeping db file
|
Create temp folder for keeping db file
|
||||||
"""
|
"""
|
||||||
self.tmp_folder = mkdtemp()
|
self.tmp_folder = mkdtemp()
|
||||||
|
db_path = os.path.join(TEST_RESOURCES_PATH, 'songs', 'songs-1.9.7.sqlite')
|
||||||
|
self.db_tmp_path = os.path.join(self.tmp_folder, 'songs-1.9.7.sqlite')
|
||||||
|
shutil.copyfile(db_path, self.db_tmp_path)
|
||||||
|
db_url = 'sqlite:///' + self.db_tmp_path
|
||||||
|
self.session, metadata = init_db(db_url)
|
||||||
|
self.op = get_upgrade_op(self.session)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
"""
|
"""
|
||||||
Clean up
|
Clean up
|
||||||
"""
|
"""
|
||||||
shutil.rmtree(self.tmp_folder)
|
self.session.close()
|
||||||
|
self.session = None
|
||||||
|
gc.collect()
|
||||||
|
retries = 0
|
||||||
|
while retries < 5:
|
||||||
|
try:
|
||||||
|
if os.path.exists(self.tmp_folder):
|
||||||
|
shutil.rmtree(self.tmp_folder)
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
time.sleep(1)
|
||||||
|
retries += 1
|
||||||
|
|
||||||
def delete_column_test(self):
|
def delete_column_test(self):
|
||||||
"""
|
"""
|
||||||
Test deleting a single column in a table
|
Test deleting a single column in a table
|
||||||
"""
|
"""
|
||||||
# GIVEN: A temporary song db
|
# GIVEN: A temporary song db
|
||||||
db_path = os.path.join(TEST_RESOURCES_PATH, 'songs', 'songs-1.9.7.sqlite')
|
|
||||||
db_tmp_path = os.path.join(self.tmp_folder, 'songs-1.9.7.sqlite')
|
|
||||||
shutil.copyfile(db_path, db_tmp_path)
|
|
||||||
db_url = 'sqlite:///' + db_tmp_path
|
|
||||||
session, metadata = init_db(db_url)
|
|
||||||
op = get_upgrade_op(session)
|
|
||||||
|
|
||||||
# WHEN: Deleting a columns in a table
|
# WHEN: Deleting a columns in a table
|
||||||
drop_column(op, 'songs', 'song_book_id')
|
drop_column(self.op, 'songs', 'song_book_id')
|
||||||
|
|
||||||
# THEN: The column should have been deleted
|
# THEN: The column should have been deleted
|
||||||
meta = sqlalchemy.MetaData(bind=op.get_bind())
|
meta = sqlalchemy.MetaData(bind=self.op.get_bind())
|
||||||
meta.reflect()
|
meta.reflect()
|
||||||
columns = meta.tables['songs'].columns
|
columns = meta.tables['songs'].columns
|
||||||
|
|
||||||
@ -76,18 +90,12 @@ class TestUtilsDBFunctions(TestCase):
|
|||||||
Test deleting multiple columns in a table
|
Test deleting multiple columns in a table
|
||||||
"""
|
"""
|
||||||
# GIVEN: A temporary song db
|
# GIVEN: A temporary song db
|
||||||
db_path = os.path.join(TEST_RESOURCES_PATH, 'songs', 'songs-1.9.7.sqlite')
|
|
||||||
db_tmp_path = os.path.join(self.tmp_folder, 'songs-1.9.7.sqlite')
|
|
||||||
shutil.copyfile(db_path, db_tmp_path)
|
|
||||||
db_url = 'sqlite:///' + db_tmp_path
|
|
||||||
session, metadata = init_db(db_url)
|
|
||||||
op = get_upgrade_op(session)
|
|
||||||
|
|
||||||
# WHEN: Deleting a columns in a table
|
# WHEN: Deleting a columns in a table
|
||||||
drop_columns(op, 'songs', ['song_book_id', 'song_number'])
|
drop_columns(self.op, 'songs', ['song_book_id', 'song_number'])
|
||||||
|
|
||||||
# THEN: The columns should have been deleted
|
# THEN: The columns should have been deleted
|
||||||
meta = sqlalchemy.MetaData(bind=op.get_bind())
|
meta = sqlalchemy.MetaData(bind=self.op.get_bind())
|
||||||
meta.reflect()
|
meta.reflect()
|
||||||
columns = meta.tables['songs'].columns
|
columns = meta.tables['songs'].columns
|
||||||
|
|
||||||
|
@ -65,8 +65,6 @@ class ProjectorSourceFormTest(TestCase, TestMixin):
|
|||||||
"""
|
"""
|
||||||
Set up anything necessary for all tests
|
Set up anything necessary for all tests
|
||||||
"""
|
"""
|
||||||
if os.path.exists(TEST_DB):
|
|
||||||
os.unlink(TEST_DB)
|
|
||||||
mocked_init_url.return_value = 'sqlite:///{}'.format(TEST_DB)
|
mocked_init_url.return_value = 'sqlite:///{}'.format(TEST_DB)
|
||||||
self.build_settings()
|
self.build_settings()
|
||||||
self.setup_application()
|
self.setup_application()
|
||||||
@ -90,6 +88,15 @@ class ProjectorSourceFormTest(TestCase, TestMixin):
|
|||||||
self.projectordb.session.close()
|
self.projectordb.session.close()
|
||||||
del(self.projectordb)
|
del(self.projectordb)
|
||||||
del(self.projector)
|
del(self.projector)
|
||||||
|
retries = 0
|
||||||
|
while retries < 5:
|
||||||
|
try:
|
||||||
|
if os.path.exists(TEST_DB):
|
||||||
|
os.unlink(TEST_DB)
|
||||||
|
break
|
||||||
|
except:
|
||||||
|
time.sleep(1)
|
||||||
|
retries += 1
|
||||||
self.destroy_settings()
|
self.destroy_settings()
|
||||||
|
|
||||||
def source_dict_test(self):
|
def source_dict_test(self):
|
||||||
|
Loading…
Reference in New Issue
Block a user