forked from openlp/openlp
Fix a bunch of tests and warnings
Some of the song import tests were not being run, and pytest was warning about them. I refactored them so that pytest would run them again. Also, there were some other warnings in the code about deprecations, so I fixed as many of those as I could too.
This commit is contained in:
parent
a61541a6ad
commit
a17039ba30
@ -375,10 +375,10 @@ def resize_image(image_path, width, height, background='#000000', ignore_aspect_
|
|||||||
size = QtCore.QSize(width, height)
|
size = QtCore.QSize(width, height)
|
||||||
elif image_ratio < resize_ratio:
|
elif image_ratio < resize_ratio:
|
||||||
# Use the image's height as reference for the new size.
|
# Use the image's height as reference for the new size.
|
||||||
size = QtCore.QSize(image_ratio * height, height)
|
size = QtCore.QSize(int(image_ratio * height), height)
|
||||||
else:
|
else:
|
||||||
# Use the image's width as reference for the new size.
|
# Use the image's width as reference for the new size.
|
||||||
size = QtCore.QSize(width, 1 / (image_ratio / width))
|
size = QtCore.QSize(width, int(1 / (image_ratio / width)))
|
||||||
reader.setScaledSize(size)
|
reader.setScaledSize(size)
|
||||||
preview = reader.read()
|
preview = reader.read()
|
||||||
if image_ratio == resize_ratio:
|
if image_ratio == resize_ratio:
|
||||||
|
@ -166,7 +166,7 @@ class AspectRatioLayout(QtWidgets.QLayout):
|
|||||||
x = rect.width() - self.margin - width
|
x = rect.width() - self.margin - width
|
||||||
else:
|
else:
|
||||||
x = self.margin + (available_width - width) / 2
|
x = self.margin + (available_width - width) / 2
|
||||||
widget.setGeometry(rect.x() + x, rect.y() + self.margin, width, height)
|
widget.setGeometry(rect.x() + int(x), rect.y() + self.margin, width, height)
|
||||||
self.resize.emit(QtCore.QSize(width, height))
|
self.resize.emit(QtCore.QSize(width, height))
|
||||||
|
|
||||||
def sizeHint(self):
|
def sizeHint(self):
|
||||||
|
@ -33,30 +33,21 @@ from tests.utils.constants import RESOURCE_PATH
|
|||||||
TEST_PATH = RESOURCE_PATH / 'songs' / 'opensong'
|
TEST_PATH = RESOURCE_PATH / 'songs' / 'opensong'
|
||||||
|
|
||||||
|
|
||||||
class TestOpenSongFileImport(SongImportTestHelper):
|
def test_opensong_file_import(settings):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
self.importer_class_name = 'OpenSongImport'
|
|
||||||
self.importer_module_name = 'opensong'
|
|
||||||
super(TestOpenSongFileImport, self).__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
def test_song_import(self):
|
|
||||||
"""
|
"""
|
||||||
Test that loading an OpenSong file works correctly on various files
|
Test that loading an OpenSong file works correctly on various files
|
||||||
"""
|
"""
|
||||||
# Mock out the settings - always return False
|
with SongImportTestHelper('OpenSongImport', 'opensong') as helper:
|
||||||
self.settings.value.side_effect = lambda value: True if value == 'songs/enable chords' else False
|
helper.file_import([TEST_PATH / 'Amazing Grace'],
|
||||||
# Do the test import
|
helper.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
||||||
self.file_import([TEST_PATH / 'Amazing Grace'],
|
helper.file_import([TEST_PATH / 'Beautiful Garden Of Prayer'],
|
||||||
self.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
helper.load_external_result_data(TEST_PATH / 'Beautiful Garden Of Prayer.json'))
|
||||||
self.file_import([TEST_PATH / 'Beautiful Garden Of Prayer'],
|
helper.file_import([TEST_PATH / 'One, Two, Three, Four, Five'],
|
||||||
self.load_external_result_data(TEST_PATH / 'Beautiful Garden Of Prayer.json'))
|
helper.load_external_result_data(TEST_PATH / 'One, Two, Three, Four, Five.json'))
|
||||||
self.file_import([TEST_PATH / 'One, Two, Three, Four, Five'],
|
helper.file_import([TEST_PATH / 'Amazing Grace2'],
|
||||||
self.load_external_result_data(TEST_PATH / 'One, Two, Three, Four, Five.json'))
|
helper.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
||||||
self.file_import([TEST_PATH / 'Amazing Grace2'],
|
helper.file_import([TEST_PATH / 'Amazing Grace with bad CCLI'],
|
||||||
self.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
helper.load_external_result_data(TEST_PATH / 'Amazing Grace without CCLI.json'))
|
||||||
self.file_import([TEST_PATH / 'Amazing Grace with bad CCLI'],
|
|
||||||
self.load_external_result_data(TEST_PATH / 'Amazing Grace without CCLI.json'))
|
|
||||||
|
|
||||||
|
|
||||||
class TestOpenSongImport(TestCase):
|
class TestOpenSongImport(TestCase):
|
||||||
|
@ -25,34 +25,31 @@ ProPresenter song files into the current installation database.
|
|||||||
from tests.helpers.songfileimport import SongImportTestHelper
|
from tests.helpers.songfileimport import SongImportTestHelper
|
||||||
from tests.utils.constants import RESOURCE_PATH
|
from tests.utils.constants import RESOURCE_PATH
|
||||||
|
|
||||||
|
|
||||||
TEST_PATH = RESOURCE_PATH / 'songs' / 'propresenter'
|
TEST_PATH = RESOURCE_PATH / 'songs' / 'propresenter'
|
||||||
|
|
||||||
|
|
||||||
class TestProPresenterFileImport(SongImportTestHelper):
|
def test_pro4_song_import(settings):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
self.importer_class_name = 'ProPresenterImport'
|
|
||||||
self.importer_module_name = 'propresenter'
|
|
||||||
super(TestProPresenterFileImport, self).__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
def test_pro4_song_import(self):
|
|
||||||
"""
|
"""
|
||||||
Test that loading a ProPresenter 4 file works correctly
|
Test that loading a ProPresenter 4 file works correctly
|
||||||
"""
|
"""
|
||||||
self.file_import([TEST_PATH / 'Amazing Grace.pro4'],
|
with SongImportTestHelper('ProPresenterImport', 'propresenter') as helper:
|
||||||
self.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
helper.file_import([TEST_PATH / 'Amazing Grace.pro4'],
|
||||||
|
helper.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
||||||
|
|
||||||
def test_pro5_song_import(self):
|
|
||||||
|
def test_pro5_song_import(settings):
|
||||||
"""
|
"""
|
||||||
Test that loading a ProPresenter 5 file works correctly
|
Test that loading a ProPresenter 5 file works correctly
|
||||||
"""
|
"""
|
||||||
self.file_import([TEST_PATH / 'Amazing Grace.pro5'],
|
with SongImportTestHelper('ProPresenterImport', 'propresenter') as helper:
|
||||||
self.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
helper.file_import([TEST_PATH / 'Amazing Grace.pro5'],
|
||||||
|
helper.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
||||||
|
|
||||||
def test_pro6_song_import(self):
|
|
||||||
|
def test_pro6_song_import(settings):
|
||||||
"""
|
"""
|
||||||
Test that loading a ProPresenter 6 file works correctly
|
Test that loading a ProPresenter 6 file works correctly
|
||||||
"""
|
"""
|
||||||
self.file_import([TEST_PATH / 'Amazing Grace.pro6'],
|
with SongImportTestHelper('ProPresenterImport', 'propresenter') as helper:
|
||||||
self.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
helper.file_import([TEST_PATH / 'Amazing Grace.pro6'],
|
||||||
|
helper.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
||||||
|
@ -28,26 +28,20 @@ from tests.utils.constants import RESOURCE_PATH
|
|||||||
TEST_PATH = RESOURCE_PATH / 'songs' / 'singingthefaith'
|
TEST_PATH = RESOURCE_PATH / 'songs' / 'singingthefaith'
|
||||||
|
|
||||||
|
|
||||||
class TestSingingTheFaithFileImport(SongImportTestHelper):
|
def test_singingthefaith_file_import(registry):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
self.importer_class_name = 'SingingTheFaithImport'
|
|
||||||
self.importer_module_name = 'singingthefaith'
|
|
||||||
super(TestSingingTheFaithFileImport, self).__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
def test_song_import(self):
|
|
||||||
"""
|
"""
|
||||||
Test that loading a Singing The Faith file works correctly on various files
|
Test that loading a Singing The Faith file works correctly on various files
|
||||||
"""
|
"""
|
||||||
|
with SongImportTestHelper('SingingTheFaithImport', 'singingthefaith') as helper:
|
||||||
# Note that the previous tests without hints no longer apply as there is always a
|
# Note that the previous tests without hints no longer apply as there is always a
|
||||||
# hints file, which contains the hints for the real Singing The Faith Songs.
|
# hints file, which contains the hints for the real Singing The Faith Songs.
|
||||||
# Unhinted songs here must be numbered above any real Singing The Faith Song
|
# Unhinted songs here must be numbered above any real Singing The Faith Song
|
||||||
# Single verse
|
# Single verse
|
||||||
self.file_import([TEST_PATH / 'H901.txt'],
|
helper.file_import([TEST_PATH / 'H901.txt'],
|
||||||
self.load_external_result_data(TEST_PATH / 'STF901.json'))
|
helper.load_external_result_data(TEST_PATH / 'STF901.json'))
|
||||||
# Whole song
|
# Whole song
|
||||||
self.file_import([TEST_PATH / 'H902.txt'],
|
helper.file_import([TEST_PATH / 'H902.txt'],
|
||||||
self.load_external_result_data(TEST_PATH / 'STF902.json'))
|
helper.load_external_result_data(TEST_PATH / 'STF902.json'))
|
||||||
|
|
||||||
# Tests with hints - note that the hints directory has a hints.tag which specifies
|
# Tests with hints - note that the hints directory has a hints.tag which specifies
|
||||||
# SongbookNumberInTitle: True
|
# SongbookNumberInTitle: True
|
||||||
@ -55,8 +49,8 @@ class TestSingingTheFaithFileImport(SongImportTestHelper):
|
|||||||
# song tests will need it
|
# song tests will need it
|
||||||
|
|
||||||
# Single verse
|
# Single verse
|
||||||
self.file_import([TEST_PATH / 'hints' / 'H1.txt'],
|
helper.file_import([TEST_PATH / 'hints' / 'H1.txt'],
|
||||||
self.load_external_result_data(TEST_PATH / 'hints' / 'STF001.json'))
|
helper.load_external_result_data(TEST_PATH / 'hints' / 'STF001.json'))
|
||||||
# Whole song
|
# Whole song
|
||||||
self.file_import([TEST_PATH / 'hints' / 'H2.txt'],
|
helper.file_import([TEST_PATH / 'hints' / 'H2.txt'],
|
||||||
self.load_external_result_data(TEST_PATH / 'hints' / 'STF002.json'))
|
helper.load_external_result_data(TEST_PATH / 'hints' / 'STF002.json'))
|
||||||
|
@ -25,6 +25,7 @@ from unittest import TestCase
|
|||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
from openlp.core.common.registry import Registry
|
from openlp.core.common.registry import Registry
|
||||||
|
from openlp.core.common.settings import Settings
|
||||||
from openlp.plugins.songs.lib.importers.songbeamer import SongBeamerImport, SongBeamerTypes
|
from openlp.plugins.songs.lib.importers.songbeamer import SongBeamerImport, SongBeamerTypes
|
||||||
from tests.helpers.songfileimport import SongImportTestHelper
|
from tests.helpers.songfileimport import SongImportTestHelper
|
||||||
from tests.utils.constants import RESOURCE_PATH
|
from tests.utils.constants import RESOURCE_PATH
|
||||||
@ -33,32 +34,28 @@ from tests.utils.constants import RESOURCE_PATH
|
|||||||
TEST_PATH = RESOURCE_PATH / 'songs' / 'songbeamer'
|
TEST_PATH = RESOURCE_PATH / 'songs' / 'songbeamer'
|
||||||
|
|
||||||
|
|
||||||
class TestSongBeamerFileImport(SongImportTestHelper):
|
def test_songbeamer_file_import(settings):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
self.importer_class_name = 'SongBeamerImport'
|
|
||||||
self.importer_module_name = 'songbeamer'
|
|
||||||
super(TestSongBeamerFileImport, self).__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
def test_song_import(self):
|
|
||||||
"""
|
"""
|
||||||
Test that loading an SongBeamer file works correctly on various files
|
Test that loading an SongBeamer file works correctly on various files
|
||||||
"""
|
"""
|
||||||
|
with SongImportTestHelper('SongBeamerImport', 'songbeamer') as helper:
|
||||||
# Mock out the settings - always return False
|
# Mock out the settings - always return False
|
||||||
self.settings.value.side_effect = lambda value: True if value == 'songs/enable chords' else False
|
Settings().setValue('songs/enable chords', True)
|
||||||
self.file_import([TEST_PATH / 'Amazing Grace.sng'],
|
helper.file_import([TEST_PATH / 'Amazing Grace.sng'],
|
||||||
self.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
helper.load_external_result_data(TEST_PATH / 'Amazing Grace.json'))
|
||||||
self.file_import([TEST_PATH / 'Lobsinget dem Herrn.sng'],
|
helper.file_import([TEST_PATH / 'Lobsinget dem Herrn.sng'],
|
||||||
self.load_external_result_data(TEST_PATH / 'Lobsinget dem Herrn.json'))
|
helper.load_external_result_data(TEST_PATH / 'Lobsinget dem Herrn.json'))
|
||||||
self.file_import([TEST_PATH / 'When I Call On You.sng'],
|
helper.file_import([TEST_PATH / 'When I Call On You.sng'],
|
||||||
self.load_external_result_data(TEST_PATH / 'When I Call On You.json'))
|
helper.load_external_result_data(TEST_PATH / 'When I Call On You.json'))
|
||||||
|
|
||||||
def test_cp1252_encoded_file(self):
|
|
||||||
|
def test_songbeamer_cp1252_encoded_file(settings):
|
||||||
"""
|
"""
|
||||||
Test that a CP1252 encoded file get's decoded properly.
|
Test that a CP1252 encoded file get's decoded properly.
|
||||||
"""
|
"""
|
||||||
self.file_import([TEST_PATH / 'cp1252song.sng'],
|
with SongImportTestHelper('SongBeamerImport', 'songbeamer') as helper:
|
||||||
self.load_external_result_data(TEST_PATH / 'cp1252song.json'))
|
helper.file_import([TEST_PATH / 'cp1252song.sng'],
|
||||||
|
helper.load_external_result_data(TEST_PATH / 'cp1252song.json'))
|
||||||
|
|
||||||
|
|
||||||
class TestSongBeamerImport(TestCase):
|
class TestSongBeamerImport(TestCase):
|
||||||
|
@ -922,16 +922,12 @@ class TestSongSelectForm(TestCase, TestMixin):
|
|||||||
mocked_view_song.assert_called_with()
|
mocked_view_song.assert_called_with()
|
||||||
|
|
||||||
|
|
||||||
class TestSongSelectFileImport(SongImportTestHelper):
|
def test_songselect_file_import():
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
self.importer_class_name = 'CCLIFileImport'
|
|
||||||
self.importer_module_name = 'cclifile'
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
def test_song_import(self):
|
|
||||||
"""
|
"""
|
||||||
Test that loading an OpenSong file works correctly on various files
|
Test that loading a SongSelect file works correctly on various files
|
||||||
"""
|
"""
|
||||||
self.file_import([TEST_PATH / 'TestSong.bin'], self.load_external_result_data(TEST_PATH / 'TestSong-bin.json'))
|
with SongImportTestHelper('CCLIFileImport', 'cclifile') as helper:
|
||||||
self.file_import([TEST_PATH / 'TestSong.txt'], self.load_external_result_data(TEST_PATH / 'TestSong-txt.json'))
|
helper.file_import([TEST_PATH / 'TestSong.bin'],
|
||||||
|
helper.load_external_result_data(TEST_PATH / 'TestSong-bin.json'))
|
||||||
|
helper.file_import([TEST_PATH / 'TestSong.txt'],
|
||||||
|
helper.load_external_result_data(TEST_PATH / 'TestSong-txt.json'))
|
||||||
|
@ -28,44 +28,46 @@ from tests.utils.constants import RESOURCE_PATH
|
|||||||
TEST_PATH = RESOURCE_PATH / 'songs' / 'wordsofworship'
|
TEST_PATH = RESOURCE_PATH / 'songs' / 'wordsofworship'
|
||||||
|
|
||||||
|
|
||||||
class TestWordsOfWorshipFileImport(SongImportTestHelper):
|
def test_amazing_grace_song_import(registry):
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
|
||||||
self.importer_class_name = 'WordsOfWorshipImport'
|
|
||||||
self.importer_module_name = 'wordsofworship'
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
|
|
||||||
def test_amazing_grace_song_import(self):
|
|
||||||
"""
|
"""
|
||||||
Test that loading a Words of Worship file works correctly
|
Test that loading a Words of Worship file works correctly
|
||||||
"""
|
"""
|
||||||
self.file_import([TEST_PATH / 'Amazing Grace (6 Verses)_v2_1_2.wow-song'],
|
with SongImportTestHelper('WordsOfWorshipImport', 'wordsofworship') as helper:
|
||||||
self.load_external_result_data(TEST_PATH / 'Amazing Grace (6 Verses)_v2_1_2.json'))
|
helper.file_import([TEST_PATH / 'Amazing Grace (6 Verses)_v2_1_2.wow-song'],
|
||||||
|
helper.load_external_result_data(TEST_PATH / 'Amazing Grace (6 Verses)_v2_1_2.json'))
|
||||||
|
|
||||||
def test_when_morning_gilds_song_import(self):
|
|
||||||
|
def test_when_morning_gilds_song_import(registry):
|
||||||
"""
|
"""
|
||||||
Test that loading a Words of Worship file v2.0.0 works correctly
|
Test that loading a Words of Worship file v2.0.0 works correctly
|
||||||
"""
|
"""
|
||||||
self.file_import([TEST_PATH / 'When morning gilds the skies_v2_0_0.wsg'],
|
with SongImportTestHelper('WordsOfWorshipImport', 'wordsofworship') as helper:
|
||||||
self.load_external_result_data(TEST_PATH / 'When morning gilds the skies_v2_0_0.json'))
|
helper.file_import([TEST_PATH / 'When morning gilds the skies_v2_0_0.wsg'],
|
||||||
|
helper.load_external_result_data(TEST_PATH / 'When morning gilds the skies_v2_0_0.json'))
|
||||||
|
|
||||||
def test_holy_holy_holy_song_import(self):
|
|
||||||
|
def test_holy_holy_holy_song_import(registry):
|
||||||
"""
|
"""
|
||||||
Test that loading a Words of Worship file works correctly
|
Test that loading a Words of Worship file works correctly
|
||||||
"""
|
"""
|
||||||
self.file_import([TEST_PATH / 'Holy Holy Holy Lord God Almighty_v2_1_2.wow-song'],
|
with SongImportTestHelper('WordsOfWorshipImport', 'wordsofworship') as helper:
|
||||||
self.load_external_result_data(TEST_PATH / 'Holy Holy Holy Lord God Almighty_v2_1_2.json'))
|
helper.file_import([TEST_PATH / 'Holy Holy Holy Lord God Almighty_v2_1_2.wow-song'],
|
||||||
|
helper.load_external_result_data(TEST_PATH / 'Holy Holy Holy Lord God Almighty_v2_1_2.json'))
|
||||||
|
|
||||||
def test_test_song_v2_0_0_song_import(self):
|
|
||||||
|
def test_test_song_v2_0_0_song_import(registry):
|
||||||
"""
|
"""
|
||||||
Test that loading a Words of Worship file v2.0.0 works correctly
|
Test that loading a Words of Worship file v2.0.0 works correctly
|
||||||
"""
|
"""
|
||||||
self.file_import([TEST_PATH / 'Test_Song_v2_0_0.wsg'],
|
with SongImportTestHelper('WordsOfWorshipImport', 'wordsofworship') as helper:
|
||||||
self.load_external_result_data(TEST_PATH / 'Test_Song_v2_0_0.json'))
|
helper.file_import([TEST_PATH / 'Test_Song_v2_0_0.wsg'],
|
||||||
|
helper.load_external_result_data(TEST_PATH / 'Test_Song_v2_0_0.json'))
|
||||||
|
|
||||||
def test_test_song_song_import(self):
|
|
||||||
|
def test_test_song_song_import(registry):
|
||||||
"""
|
"""
|
||||||
Test that loading a Words of Worship file v2.1.2 works correctly
|
Test that loading a Words of Worship file v2.1.2 works correctly
|
||||||
"""
|
"""
|
||||||
self.file_import([TEST_PATH / 'Test_Song_v2_1_2.wow-song'],
|
with SongImportTestHelper('WordsOfWorshipImport', 'wordsofworship') as helper:
|
||||||
self.load_external_result_data(TEST_PATH / 'Test_Song_v2_1_2.json'))
|
helper.file_import([TEST_PATH / 'Test_Song_v2_1_2.wow-song'],
|
||||||
|
helper.load_external_result_data(TEST_PATH / 'Test_Song_v2_1_2.json'))
|
||||||
|
@ -73,6 +73,15 @@ class SongImportTestHelper(object):
|
|||||||
self.add_author_patcher.stop()
|
self.add_author_patcher.stop()
|
||||||
self.song_import_patcher.stop()
|
self.song_import_patcher.stop()
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
"""Make this class into a context manager"""
|
||||||
|
self.setUp()
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, exc_type, exc_value, traceback):
|
||||||
|
"""Make this class into a context manager"""
|
||||||
|
self.tearDown
|
||||||
|
|
||||||
def load_external_result_data(self, file_path):
|
def load_external_result_data(self, file_path):
|
||||||
"""
|
"""
|
||||||
A method to load and return an object containing the song data from an external file.
|
A method to load and return an object containing the song data from an external file.
|
||||||
|
Loading…
Reference in New Issue
Block a user