Fix Windows tests when running on WINE

bzr-revno: 2477
This commit is contained in:
Tomas Groth 2015-01-16 22:42:00 +02:00 committed by Raoul Snyman
commit cf30667fb5
12 changed files with 48 additions and 44 deletions

View File

@ -156,7 +156,10 @@ def upgrade_db(url, upgrade):
except (SQLAlchemyError, DBAPIError): except (SQLAlchemyError, DBAPIError):
version_meta = Metadata.populate(key='version', value=int(upgrade.__version__)) version_meta = Metadata.populate(key='version', value=int(upgrade.__version__))
session.commit() session.commit()
return int(version_meta.value), upgrade.__version__ upgrade_version = upgrade.__version__
version_meta = int(version_meta.value)
session.close()
return version_meta, upgrade_version
def delete_database(plugin_name, db_file_name=None): def delete_database(plugin_name, db_file_name=None):

View File

@ -125,7 +125,6 @@ class InfoLabel(QtGui.QLabel):
alignment = QtCore.Qt.AlignLeft alignment = QtCore.Qt.AlignLeft
painter.drawText(self.rect(), alignment, elided) painter.drawText(self.rect(), alignment, elided)
def setText(self, text): def setText(self, text):
""" """
Reimplemented to set the tool tip text. Reimplemented to set the tool tip text.

View File

@ -431,7 +431,7 @@ def get_uno_command(connection_type='pipe'):
""" """
for command in ['libreoffice', 'soffice']: for command in ['libreoffice', 'soffice']:
if which(command): if which(command):
break break
else: else:
raise FileNotFoundError('Command not found') raise FileNotFoundError('Command not found')

View File

@ -49,7 +49,7 @@ class WorshipCenterProImport(SongImport):
""" """
Initialise the WorshipCenter Pro importer. Initialise the WorshipCenter Pro importer.
""" """
SongImport.__init__(self, manager, **kwargs) super(WorshipCenterProImport, self).__init__(manager, **kwargs)
def do_import(self): def do_import(self):
""" """

View File

@ -155,7 +155,7 @@ class TestRenderer(TestCase):
expected_words = ['<br>[---] '] expected_words = ['<br>[---] ']
service_item = ServiceItem(None) service_item = ServiceItem(None)
# WHEN: Split the line based on word split rules # WHEN: Split the line based on word split rules
result_words = renderer.format_slide(given_line, service_item) result_words = renderer.format_slide(given_line, service_item)
# THEN: The blanks have been removed. # THEN: The blanks have been removed.

View File

@ -39,7 +39,7 @@ from openlp.core.ui import MainDisplay
from openlp.core.ui.maindisplay import TRANSPARENT_STYLESHEET, OPAQUE_STYLESHEET from openlp.core.ui.maindisplay import TRANSPARENT_STYLESHEET, OPAQUE_STYLESHEET
from tests.helpers.testmixin import TestMixin from tests.helpers.testmixin import TestMixin
from tests.functional import MagicMock from tests.functional import MagicMock, patch
SCREEN = { SCREEN = {
'primary': False, 'primary': False,
@ -64,11 +64,14 @@ class TestMainDisplay(TestCase, TestMixin):
self.registry = Registry() self.registry = Registry()
self.setup_application() self.setup_application()
Registry().register('application', self.app) Registry().register('application', self.app)
self.mocked_audio_player = patch('openlp.core.ui.maindisplay.AudioPlayer')
self.mocked_audio_player.start()
def tearDown(self): def tearDown(self):
""" """
Delete QApplication. Delete QApplication.
""" """
self.mocked_audio_player.stop()
del self.screens del self.screens
def initial_main_display_test(self): def initial_main_display_test(self):

View File

@ -560,6 +560,7 @@ class TestSlideController(TestCase):
mocked_preview_widget.change_slide.assert_called_once_with(7) mocked_preview_widget.change_slide.assert_called_once_with(7)
mocked_slide_selected.assert_called_once_with() mocked_slide_selected.assert_called_once_with()
class TestInfoLabel(TestCase): class TestInfoLabel(TestCase):
def paint_event_text_fits_test(self): def paint_event_text_fits_test(self):
@ -570,7 +571,7 @@ class TestInfoLabel(TestCase):
metrics = QtGui.QFontMetrics(font) metrics = QtGui.QFontMetrics(font)
with patch('openlp.core.ui.slidecontroller.QtGui.QLabel'), \ with patch('openlp.core.ui.slidecontroller.QtGui.QLabel'), \
patch('openlp.core.ui.slidecontroller.QtGui.QPainter') as mocked_qpainter: patch('openlp.core.ui.slidecontroller.QtGui.QPainter') as mocked_qpainter:
# GIVEN: An instance of InfoLabel, with mocked text return, width and rect methods # GIVEN: An instance of InfoLabel, with mocked text return, width and rect methods
info_label = InfoLabel() info_label = InfoLabel()
@ -598,7 +599,7 @@ class TestInfoLabel(TestCase):
metrics = QtGui.QFontMetrics(font) metrics = QtGui.QFontMetrics(font)
with patch('openlp.core.ui.slidecontroller.QtGui.QLabel'), \ with patch('openlp.core.ui.slidecontroller.QtGui.QLabel'), \
patch('openlp.core.ui.slidecontroller.QtGui.QPainter') as mocked_qpainter: patch('openlp.core.ui.slidecontroller.QtGui.QPainter') as mocked_qpainter:
# GIVEN: An instance of InfoLabel, with mocked text return, width and rect methods # GIVEN: An instance of InfoLabel, with mocked text return, width and rect methods
info_label = InfoLabel() info_label = InfoLabel()

View File

@ -48,13 +48,12 @@ class TestThemeManager(TestCase):
# GIVEN: An instance of Theme Form and mocked QFileDialog which returns an empty string (similating a user # GIVEN: An instance of Theme Form and mocked QFileDialog which returns an empty string (similating a user
# pressing cancel) # pressing cancel)
with patch('openlp.core.ui.ThemeForm._setup'),\ with patch('openlp.core.ui.ThemeForm._setup'),\
patch('openlp.core.ui.themeform.get_images_filter', patch('openlp.core.ui.themeform.get_images_filter',
**{'return_value': 'Image Files (*.bmp; *.gif)(*.bmp *.gif)'}),\ **{'return_value': 'Image Files (*.bmp; *.gif)(*.bmp *.gif)'}),\
patch('openlp.core.ui.themeform.QtGui.QFileDialog.getOpenFileName', patch('openlp.core.ui.themeform.QtGui.QFileDialog.getOpenFileName',
**{'return_value': ''}) as mocked_get_open_file_name,\ **{'return_value': ''}) as mocked_get_open_file_name,\
patch('openlp.core.ui.themeform.translate', **{'return_value': 'Translated String'}),\ patch('openlp.core.ui.themeform.translate', **{'return_value': 'Translated String'}),\
patch('openlp.core.ui.ThemeForm.set_background_page_values') as mocked_set_background_page_values: patch('openlp.core.ui.ThemeForm.set_background_page_values') as mocked_set_background_page_values:
instance = ThemeForm(None) instance = ThemeForm(None)
mocked_image_file_edit = MagicMock() mocked_image_file_edit = MagicMock()
mocked_image_file_edit.text.return_value = '/original_path/file.ext' mocked_image_file_edit.text.return_value = '/original_path/file.ext'
@ -66,8 +65,8 @@ class TestThemeManager(TestCase):
# THEN: The QFileDialog getOpenFileName and set_background_page_values moethods should have been called # THEN: The QFileDialog getOpenFileName and set_background_page_values moethods should have been called
# with known arguments # with known arguments
mocked_get_open_file_name.assert_called_once_with(instance, 'Translated String', '/original_path/file.ext', mocked_get_open_file_name.assert_called_once_with(instance, 'Translated String', '/original_path/file.ext',
'Image Files (*.bmp; *.gif)(*.bmp *.gif);;All Files (*.*)' 'Image Files (*.bmp; *.gif)(*.bmp *.gif);;'
) 'All Files (*.*)')
mocked_set_background_page_values.assert_called_once_with() mocked_set_background_page_values.assert_called_once_with()
def select_image_file_dialog_new_file_test(self): def select_image_file_dialog_new_file_test(self):
@ -76,13 +75,12 @@ class TestThemeManager(TestCase):
""" """
# GIVEN: An instance of Theme Form and mocked QFileDialog which returns a file path # GIVEN: An instance of Theme Form and mocked QFileDialog which returns a file path
with patch('openlp.core.ui.ThemeForm._setup'),\ with patch('openlp.core.ui.ThemeForm._setup'),\
patch('openlp.core.ui.themeform.get_images_filter', patch('openlp.core.ui.themeform.get_images_filter',
**{'return_value': 'Image Files (*.bmp; *.gif)(*.bmp *.gif)'}),\ **{'return_value': 'Image Files (*.bmp; *.gif)(*.bmp *.gif)'}),\
patch('openlp.core.ui.themeform.QtGui.QFileDialog.getOpenFileName', patch('openlp.core.ui.themeform.QtGui.QFileDialog.getOpenFileName',
**{'return_value': '/new_path/file.ext'}) as mocked_get_open_file_name,\ **{'return_value': '/new_path/file.ext'}) as mocked_get_open_file_name,\
patch('openlp.core.ui.themeform.translate', **{'return_value': 'Translated String'}),\ patch('openlp.core.ui.themeform.translate', **{'return_value': 'Translated String'}),\
patch('openlp.core.ui.ThemeForm.set_background_page_values') as mocked_background_page_values: patch('openlp.core.ui.ThemeForm.set_background_page_values') as mocked_background_page_values:
instance = ThemeForm(None) instance = ThemeForm(None)
mocked_image_file_edit = MagicMock() mocked_image_file_edit = MagicMock()
mocked_image_file_edit.text.return_value = '/original_path/file.ext' mocked_image_file_edit.text.return_value = '/original_path/file.ext'
@ -95,8 +93,8 @@ class TestThemeManager(TestCase):
# THEN: The QFileDialog getOpenFileName and set_background_page_values moethods should have been called # THEN: The QFileDialog getOpenFileName and set_background_page_values moethods should have been called
# with known arguments and theme.background_filename should be set # with known arguments and theme.background_filename should be set
mocked_get_open_file_name.assert_called_once_with(instance, 'Translated String', '/original_path/file.ext', mocked_get_open_file_name.assert_called_once_with(instance, 'Translated String', '/original_path/file.ext',
'Image Files (*.bmp; *.gif)(*.bmp *.gif);;All Files (*.*)' 'Image Files (*.bmp; *.gif)(*.bmp *.gif);;'
) 'All Files (*.*)')
self.assertEqual(instance.theme.background_filename, '/new_path/file.ext', self.assertEqual(instance.theme.background_filename, '/new_path/file.ext',
'theme.background_filename should be set to the path that the file dialog returns') 'theme.background_filename should be set to the path that the file dialog returns')
mocked_background_page_values.assert_called_once_with() mocked_background_page_values.assert_called_once_with()

View File

@ -83,7 +83,7 @@ class TestInitFunctions(TestMixin, TestCase):
# THEN: The command 'libreoffice' should be called with the appropriate parameters # THEN: The command 'libreoffice' should be called with the appropriate parameters
self.assertEquals(result, 'libreoffice --nologo --norestore --minimized --nodefault --nofirststartwizard' self.assertEquals(result, 'libreoffice --nologo --norestore --minimized --nodefault --nofirststartwizard'
' "--accept=pipe,name=openlp_pipe;urp;"') ' "--accept=pipe,name=openlp_pipe;urp;"')
def get_uno_command_only_soffice_command_exists_test(self): def get_uno_command_only_soffice_command_exists_test(self):
""" """
@ -101,7 +101,7 @@ class TestInitFunctions(TestMixin, TestCase):
# THEN: The command 'soffice' should be called with the appropriate parameters # THEN: The command 'soffice' should be called with the appropriate parameters
self.assertEquals(result, 'soffice --nologo --norestore --minimized --nodefault --nofirststartwizard' self.assertEquals(result, 'soffice --nologo --norestore --minimized --nodefault --nofirststartwizard'
' "--accept=pipe,name=openlp_pipe;urp;"') ' "--accept=pipe,name=openlp_pipe;urp;"')
def get_uno_command_when_no_command_exists_test(self): def get_uno_command_when_no_command_exists_test(self):
""" """

View File

@ -98,4 +98,4 @@ class TestMediaItem(TestCase, TestMixin):
# THEN: the item should not be added to the database. # THEN: the item should not be added to the database.
self.assertEqual(self.media_item.create_from_service_item.call_count, 1, self.assertEqual(self.media_item.create_from_service_item.call_count, 1,
'The item should have been added to the database') 'The item should have been added to the database')

View File

@ -36,10 +36,11 @@ if os.name != 'nt':
raise SkipTest('Not Windows, skipping test') raise SkipTest('Not Windows, skipping test')
import pyodbc import pyodbc
from openlp.plugins.songs.lib.importers.worshipcenterpro import WorshipCenterProImport
from tests.functional import patch, MagicMock from tests.functional import patch, MagicMock
from openlp.core.common import Registry
from openlp.plugins.songs.lib.importers.worshipcenterpro import WorshipCenterProImport
class TestRecord(object): class TestRecord(object):
""" """
@ -61,7 +62,7 @@ class WorshipCenterProImportLogger(WorshipCenterProImport):
_title_assignment_list = [] _title_assignment_list = []
def __init__(self, manager): def __init__(self, manager):
WorshipCenterProImport.__init__(self, manager) WorshipCenterProImport.__init__(self, manager, filenames=[])
@property @property
def title(self): def title(self):
@ -136,6 +137,12 @@ class TestWorshipCenterProSongImport(TestCase):
""" """
Test the functions in the :mod:`worshipcenterproimport` module. Test the functions in the :mod:`worshipcenterproimport` module.
""" """
def setUp(self):
"""
Create the registry
"""
Registry.create()
def create_importer_test(self): def create_importer_test(self):
""" """
Test creating an instance of the WorshipCenter Pro file importer Test creating an instance of the WorshipCenter Pro file importer
@ -145,7 +152,7 @@ class TestWorshipCenterProSongImport(TestCase):
mocked_manager = MagicMock() mocked_manager = MagicMock()
# WHEN: An importer object is created # WHEN: An importer object is created
importer = WorshipCenterProImport(mocked_manager) importer = WorshipCenterProImport(mocked_manager, filenames=[])
# THEN: The importer object should not be None # THEN: The importer object should not be None
self.assertIsNotNone(importer, 'Import should not be none') self.assertIsNotNone(importer, 'Import should not be none')
@ -157,13 +164,12 @@ class TestWorshipCenterProSongImport(TestCase):
# GIVEN: A mocked out SongImport class, a mocked out pyodbc module, a mocked out translate method, # GIVEN: A mocked out SongImport class, a mocked out pyodbc module, a mocked out translate method,
# a mocked "manager" and a mocked out log_error method. # a mocked "manager" and a mocked out log_error method.
with patch('openlp.plugins.songs.lib.importers.worshipcenterpro.SongImport'), \ with patch('openlp.plugins.songs.lib.importers.worshipcenterpro.SongImport'), \
patch('openlp.plugins.songs.lib.importers.worshipcenterpro.pyodbc.connect') \ patch('openlp.plugins.songs.lib.importers.worshipcenterpro.pyodbc.connect') as mocked_pyodbc_connect, \
as mocked_pyodbc_connect, \
patch('openlp.plugins.songs.lib.importers.worshipcenterpro.translate') as mocked_translate: patch('openlp.plugins.songs.lib.importers.worshipcenterpro.translate') as mocked_translate:
mocked_manager = MagicMock() mocked_manager = MagicMock()
mocked_log_error = MagicMock() mocked_log_error = MagicMock()
mocked_translate.return_value = 'Translated Text' mocked_translate.return_value = 'Translated Text'
importer = WorshipCenterProImport(mocked_manager) importer = WorshipCenterProImport(mocked_manager, filenames=[])
importer.log_error = mocked_log_error importer.log_error = mocked_log_error
importer.import_source = 'import_source' importer.import_source = 'import_source'
pyodbc_errors = [pyodbc.DatabaseError, pyodbc.IntegrityError, pyodbc.InternalError, pyodbc.OperationalError] pyodbc_errors = [pyodbc.DatabaseError, pyodbc.IntegrityError, pyodbc.InternalError, pyodbc.OperationalError]
@ -187,7 +193,7 @@ class TestWorshipCenterProSongImport(TestCase):
# GIVEN: A mocked out SongImport class, a mocked out pyodbc module with a simulated recordset, a mocked out # GIVEN: A mocked out SongImport class, a mocked out pyodbc module with a simulated recordset, a mocked out
# translate method, a mocked "manager", add_verse method & mocked_finish method. # translate method, a mocked "manager", add_verse method & mocked_finish method.
with patch('openlp.plugins.songs.lib.importers.worshipcenterpro.SongImport'), \ with patch('openlp.plugins.songs.lib.importers.worshipcenterpro.SongImport'), \
patch('openlp.plugins.songs.lib.importers.worshipcenterpro.pyodbc') as mocked_pyodbc, \ patch('openlp.plugins.songs.lib.importers.worshipcenterpro.pyodbc') as mocked_pyodbc, \
patch('openlp.plugins.songs.lib.importers.worshipcenterpro.translate') as mocked_translate: patch('openlp.plugins.songs.lib.importers.worshipcenterpro.translate') as mocked_translate:
mocked_manager = MagicMock() mocked_manager = MagicMock()
mocked_import_wizard = MagicMock() mocked_import_wizard = MagicMock()

View File

@ -31,8 +31,6 @@ Interface tests to test the openlp.core.ui.projector.editform.ProjectorEditForm(
class and methods. class and methods.
""" """
import os
import tempfile
from unittest import TestCase from unittest import TestCase
from openlp.core.common import Registry, Settings from openlp.core.common import Registry, Settings
@ -43,8 +41,6 @@ from tests.functional import patch
from tests.helpers.testmixin import TestMixin from tests.helpers.testmixin import TestMixin
from tests.resources.projector.data import TEST1_DATA, TEST2_DATA from tests.resources.projector.data import TEST1_DATA, TEST2_DATA
tmpfile = tempfile.mkstemp(prefix='openlp-test-projectormanager', suffix='.sql')[1]
class TestProjectorEditForm(TestCase, TestMixin): class TestProjectorEditForm(TestCase, TestMixin):
""" """
@ -60,8 +56,7 @@ class TestProjectorEditForm(TestCase, TestMixin):
self.setup_application() self.setup_application()
Registry.create() Registry.create()
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:
mocked_init_url.start() mocked_init_url.return_value = 'sqlite://'
mocked_init_url.return_value = 'sqlite:///{}'.format(tmpfile)
self.projectordb = ProjectorDB() self.projectordb = ProjectorDB()
self.projector_form = ProjectorEditForm(projectordb=self.projectordb) self.projector_form = ProjectorEditForm(projectordb=self.projectordb)
@ -74,7 +69,6 @@ class TestProjectorEditForm(TestCase, TestMixin):
""" """
self.projectordb.session.close() self.projectordb.session.close()
del(self.projector_form) del(self.projector_form)
os.remove(tmpfile)
self.destroy_settings() self.destroy_settings()
def edit_form_add_projector_test(self): def edit_form_add_projector_test(self):