diff --git a/openlp/plugins/songs/lib/importers/lyrix.py b/openlp/plugins/songs/lib/importers/lyrix.py index 5caa46258..4facbafc8 100644 --- a/openlp/plugins/songs/lib/importers/lyrix.py +++ b/openlp/plugins/songs/lib/importers/lyrix.py @@ -73,9 +73,10 @@ class LyrixImport(SongImport): try: # Read the file for line in file: + line = line.strip() line_number += 1 if line_number == 4: - song_title = line.strip() + song_title = line if line_number < 7: continue # Detect and get CCLI number @@ -84,22 +85,22 @@ class LyrixImport(SongImport): try: # If the CCLI was found, we are near the end # Find author - line = next(file) - author = line[line.find(':') + 2:].strip() + line = next(file).strip() + author = line[line.find(':') + 2:] # Find copyright - copyright = next(file) + copyright = next(file).strip() except StopIteration: pass break - if line.strip() == '': + if line == '': if current_verse != '': verses.append(current_verse) current_verse = '' else: if current_verse == '': - current_verse += line.strip() + current_verse += line else: - current_verse += '\n' + line.strip() + current_verse += '\n' + line except Exception as e: self.log_error(translate('SongsPlugin.LyrixImport', 'File %s' % file.name), translate('SongsPlugin.LyrixImport', 'Error: %s') % e) diff --git a/tests/functional/openlp_plugins/songs/test_lyriximport.py b/tests/functional/openlp_plugins/songs/test_lyriximport.py new file mode 100644 index 000000000..1a239c00e --- /dev/null +++ b/tests/functional/openlp_plugins/songs/test_lyriximport.py @@ -0,0 +1,53 @@ +# vim: autoindent shiftwidth=4 expandtab textwidth=120 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2015 OpenLP Developers # +# --------------------------------------------------------------------------- # +# This program is free software; you can redistribute it and/or modify it # +# under the terms of the GNU General Public License as published by the Free # +# Software Foundation; version 2 of the License. # +# # +# This program is distributed in the hope that it will be useful, but WITHOUT # +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for # +# more details. # +# # +# You should have received a copy of the GNU General Public License along # +# with this program; if not, write to the Free Software Foundation, Inc., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### +""" +This module contains tests for the LyriX song importer. +""" + +import os +from unittest import TestCase + +from tests.helpers.songfileimport import SongImportTestHelper +from openlp.plugins.songs.lib.importers.opensong import OpenSongImport +from openlp.core.common import Registry +from tests.functional import patch, MagicMock + +TEST_PATH = os.path.abspath( + os.path.join(os.path.dirname(__file__), '..', '..', '..', 'resources', 'lyrixsongs')) + + +class TestLyrixFileImport(SongImportTestHelper): + + def __init__(self, *args, **kwargs): + self.importer_class_name = 'LyrixImport' + self.importer_module_name = 'lyrix' + super(TestLyrixFileImport, self).__init__(*args, **kwargs) + + def test_song_import(self): + """ + Test that loading an LyriX file works correctly on various files + """ + self.file_import([os.path.join(TEST_PATH, 'A06.TXT')], + self.load_external_result_data(os.path.join(TEST_PATH, 'Amazing Grace.json'))) + self.file_import([os.path.join(TEST_PATH, 'A002.TXT')], + self.load_external_result_data(os.path.join(TEST_PATH, 'Amazing Grace2.json'))) + self.file_import([os.path.join(TEST_PATH, 'AO05.TXT')], + self.load_external_result_data(os.path.join(TEST_PATH, 'in die regterhand.json'))) diff --git a/tests/functional/openlp_plugins/songs/test_videopsalm.py b/tests/functional/openlp_plugins/songs/test_videopsalm.py index 5f2cd9fde..348f7f0f3 100644 --- a/tests/functional/openlp_plugins/songs/test_videopsalm.py +++ b/tests/functional/openlp_plugins/songs/test_videopsalm.py @@ -19,7 +19,7 @@ # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### """ -This module contains tests for the OpenSong song importer. +This module contains tests for the VideoPsalm song importer. """ import os diff --git a/tests/helpers/songfileimport.py b/tests/helpers/songfileimport.py index 7cf6d115a..723cb8a36 100644 --- a/tests/helpers/songfileimport.py +++ b/tests/helpers/songfileimport.py @@ -127,7 +127,7 @@ class SongImportTestHelper(TestCase): if isinstance(author, str): self.mocked_add_author.assert_any_call(author) else: - self.mocked_add_author.assert_any_call(author[0], author[1]) + self.mocked_add_author.assert_any_call(*author) if song_copyright: self.mocked_add_copyright.assert_called_with(song_copyright) if ccli_number: diff --git a/tests/resources/lyrixsongs/A002.TXT b/tests/resources/lyrixsongs/A002.TXT new file mode 100644 index 000000000..c2d82cd4f --- /dev/null +++ b/tests/resources/lyrixsongs/A002.TXT @@ -0,0 +1,34 @@ + +------------- +A002 +AMAZING GRACE +------------- + +1. AMAZING GRACE! HOW SWEET THE SOUND +THAT SAVED A WRETCH LIKE ME; +I ONCE WAS LOST, BUT NOW AM FOUND; +WAS BLIND, BUT NOW I SEE. + +2. 'TWAS GRACE THAT TAUGHT MY HEART TO FEAR +AND GRACE MY FEARS RELIEVED; +HOW PRECIOUS DID THAT GRACE APPEAR, +THE HOUR I FIRST BELIEVED! + +3. THROUGH MANY DANGERS, TRIALS AND SNARES +I HAVE ALREADY COME; +'TIS GRACE THAT BROUGHT ME SAFE THUS FAR +AND GRACE WILL LEAD ME HOME. + +4. THE LORD HAS PROMISED GOOD TO ME, +HIS WORD MY HOPE SECURES; +HE WILL MY SHIELD AND FORTRESS BE +AS LONG AS LIFE ENDURES. + +5. WHEN WE'VE BEEN THERE TEN THOUSAND YEARS +BRIGHT SHINING AS THE SUN, +WE'VE NO LESS DAYS TO SING GOD'S PRAISE +THAN WHEN WE'D FIRST BEGUN. + +CCLI no.: 22025 +Words/Music: Edwin Excell, John Newton, John P. Rees +Public Domain diff --git a/tests/resources/lyrixsongs/A06.TXT b/tests/resources/lyrixsongs/A06.TXT new file mode 100644 index 000000000..97c5be52b --- /dev/null +++ b/tests/resources/lyrixsongs/A06.TXT @@ -0,0 +1,31 @@ + +---------------------------------- +A06 +AMAZING GRACE, HOW SWEET THE SOUND +---------------------------------- + +1. AMAZING GRACE, HOW SWEET THE SOUND +THAT SAVED A WRETCH LIKE ME +I ONCE WAS LOST, BUT NOW I'M FOUND +WAS BLIND, BUT NOW I SEE + +2. 'TWAS GRACE THAT TAUGHT MY HEART TO FEAR +AND GRACE MY FEARS RELIEVED +HOW PRECIOUS DID THAT GRACE APPEAR +THE HOUR I FIRST BELIEVED + +3. THROUGH MANY DANGERS, TOILS AND SNARES +I HAVE ALREADY COME, 'TWAS GRACE +THAT BROUGHT ME SAFE THUS FAR +AND GRACE WILL LEAD ME HOME + +4. WHEN WE'VE BEEN THERE TEN THOUSAND YEARS +BRIGHT SHINING AS THE SUN +WE'VE NO LESS DAYS TO SING GOD'S PRAISE +THAN WHEN WE'VE FIRST BEGUN + +5. PRAISE GOD, PRAISE GOD +PRAISE GOD, PRAISE GOD +PRAISE GOD, PRAISE GOD +PRAISE GOD.. + diff --git a/tests/resources/lyrixsongs/AO05.TXT b/tests/resources/lyrixsongs/AO05.TXT new file mode 100644 index 000000000..0700ba42f --- /dev/null +++ b/tests/resources/lyrixsongs/AO05.TXT @@ -0,0 +1,48 @@ + +-------------------------------- +AO05 +IN DIE REGTERHAND VAN HOM WAT IN +-------------------------------- + +1. IN DIE REGTERHAND VAN HOM +WAT IN MAJESTEIT REGEER +Lê DIE BOEKROL VAN VERLOSSING +SEWEMAAL VERSEëL +EN NIEMAND KON GEVIND WORD +OM SY SEëLS OOP TE BREEK +TOT DIE LAM VAN GOD NA VORE KOM +OM DIE BOEKROL SELF TE NEEM +DIE VIER-EN-TWINTIG OUDERLINGE +VAL TOE VOOR HOM NEER +SAAM MET AL DIE ENG'LE +IN DIE GANSE HEMELLEëR, +EN ELKE WESE WAT ASEM HET +OP DIE AARDE, IN DIE SEE, EN OOR DIE +LENGTE EN DIE BREEDTE +VAN DIE SKEPPING BRING HOM EER + +2. HERE U ALLEEN IS WAARDIG +OM DIE LEWENSBOEK TE NEEM +EN U ALLEEN IS MAGTIG +OM SY SEëLS OOP TE BREEK, +WANT U'T VIR ONS GESTERWE, +MET U BLOED HET U BETAAL +OM ONS LOS TE KOOP +UIT ELKE STAM EN NASIE,VOLK EN TAAL + +AL DIE LOF EN DIE KRAG +EN DIE EER +EN DIE HEERLIKHEID +EN RYKDON EN STERKTE +AAN U ALLEEN O HEER +AL DIE LOF EN DIE KRAG +EN DIE EER +EN WYSHEID AAN DIE LAM +OP DIE TROON +WAT NOU EN TOT IN +EWIGHEID REGEER +NOU EN TOT IN EWIGHEID +REGEER +DIE LAM WAT TOT IN +EWIGHEID REGEER + diff --git a/tests/resources/lyrixsongs/Amazing Grace.json b/tests/resources/lyrixsongs/Amazing Grace.json new file mode 100644 index 000000000..ef92bffaf --- /dev/null +++ b/tests/resources/lyrixsongs/Amazing Grace.json @@ -0,0 +1,26 @@ +{ + "title": "AMAZING GRACE, HOW SWEET THE SOUND", + "verse_order_list": [], + "verses": [ + [ + "1. AMAZING GRACE, HOW SWEET THE SOUND\nTHAT SAVED A WRETCH LIKE ME\nI ONCE WAS LOST, BUT NOW I'M FOUND\nWAS BLIND, BUT NOW I SEE", + "v" + ], + [ + "2. 'TWAS GRACE THAT TAUGHT MY HEART TO FEAR\nAND GRACE MY FEARS RELIEVED\nHOW PRECIOUS DID THAT GRACE APPEAR\nTHE HOUR I FIRST BELIEVED", + "v" + ], + [ + "3. THROUGH MANY DANGERS, TOILS AND SNARES\nI HAVE ALREADY COME, 'TWAS GRACE\nTHAT BROUGHT ME SAFE THUS FAR\nAND GRACE WILL LEAD ME HOME", + "v" + ], + [ + "4. WHEN WE'VE BEEN THERE TEN THOUSAND YEARS\nBRIGHT SHINING AS THE SUN\nWE'VE NO LESS DAYS TO SING GOD'S PRAISE\nTHAN WHEN WE'VE FIRST BEGUN", + "v" + ], + [ + "5. PRAISE GOD, PRAISE GOD\nPRAISE GOD, PRAISE GOD\nPRAISE GOD, PRAISE GOD\nPRAISE GOD..", + "v" + ] + ] +} diff --git a/tests/resources/lyrixsongs/Amazing Grace2.json b/tests/resources/lyrixsongs/Amazing Grace2.json new file mode 100644 index 000000000..07c52b5b7 --- /dev/null +++ b/tests/resources/lyrixsongs/Amazing Grace2.json @@ -0,0 +1,33 @@ +{ + "authors": [ + "John Newton", + "Edwin Excell", + "John P. Rees" + ], + "ccli_number": "22025", + "copyright": "Public Domain", + "title": "AMAZING GRACE", + "verse_order_list": [], + "verses": [ + [ + "1. AMAZING GRACE! HOW SWEET THE SOUND\nTHAT SAVED A WRETCH LIKE ME;\nI ONCE WAS LOST, BUT NOW AM FOUND;\nWAS BLIND, BUT NOW I SEE.", + "v" + ], + [ + "2. 'TWAS GRACE THAT TAUGHT MY HEART TO FEAR\nAND GRACE MY FEARS RELIEVED;\nHOW PRECIOUS DID THAT GRACE APPEAR,\nTHE HOUR I FIRST BELIEVED!", + "v" + ], + [ + "3. THROUGH MANY DANGERS, TRIALS AND SNARES\nI HAVE ALREADY COME;\n'TIS GRACE THAT BROUGHT ME SAFE THUS FAR\nAND GRACE WILL LEAD ME HOME.", + "v" + ], + [ + "4. THE LORD HAS PROMISED GOOD TO ME,\nHIS WORD MY HOPE SECURES;\nHE WILL MY SHIELD AND FORTRESS BE\nAS LONG AS LIFE ENDURES.", + "v" + ], + [ + "5. WHEN WE'VE BEEN THERE TEN THOUSAND YEARS\nBRIGHT SHINING AS THE SUN,\nWE'VE NO LESS DAYS TO SING GOD'S PRAISE\nTHAN WHEN WE'D FIRST BEGUN.", + "v" + ] + ] +} diff --git a/tests/resources/lyrixsongs/in die regterhand.json b/tests/resources/lyrixsongs/in die regterhand.json new file mode 100644 index 000000000..f5860def5 --- /dev/null +++ b/tests/resources/lyrixsongs/in die regterhand.json @@ -0,0 +1,18 @@ +{ + "title": "IN DIE REGTERHAND VAN HOM WAT IN", + "verse_order_list": [], + "verses": [ + [ + "1. IN DIE REGTERHAND VAN HOM\nWAT IN MAJESTEIT REGEER\nLк DIE BOEKROL VAN VERLOSSING\nSEWEMAAL VERSEлL\nEN NIEMAND KON GEVIND WORD\nOM SY SEлLS OOP TE BREEK\nTOT DIE LAM VAN GOD NA VORE KOM\nOM DIE BOEKROL SELF TE NEEM\nDIE VIER-EN-TWINTIG OUDERLINGE\nVAL TOE VOOR HOM NEER\nSAAM MET AL DIE ENG'LE\nIN DIE GANSE HEMELLEлR,\nEN ELKE WESE WAT ASEM HET\nOP DIE AARDE, IN DIE SEE, EN OOR DIE\nLENGTE EN DIE BREEDTE\nVAN DIE SKEPPING BRING HOM EER", + "v" + ], + [ + "2. HERE U ALLEEN IS WAARDIG\nOM DIE LEWENSBOEK TE NEEM\nEN U ALLEEN IS MAGTIG\nOM SY SEлLS OOP TE BREEK,\nWANT U'T VIR ONS GESTERWE,\nMET U BLOED HET U BETAAL\nOM ONS LOS TE KOOP\nUIT ELKE STAM EN NASIE,VOLK EN TAAL", + "v" + ], + [ + "AL DIE LOF EN DIE KRAG\nEN DIE EER\nEN DIE HEERLIKHEID\nEN RYKDON EN STERKTE\nAAN U ALLEEN O HEER\nAL DIE LOF EN DIE KRAG\nEN DIE EER\nEN WYSHEID AAN DIE LAM\nOP DIE TROON\nWAT NOU EN TOT IN\nEWIGHEID REGEER\nNOU EN TOT IN EWIGHEID\nREGEER\nDIE LAM WAT TOT IN\nEWIGHEID REGEER", + "v" + ] + ] +}