diff --git a/openlp/core/api/deploy.py b/openlp/core/api/deploy.py index d198382b5..a39298ca7 100644 --- a/openlp/core/api/deploy.py +++ b/openlp/core/api/deploy.py @@ -35,7 +35,7 @@ from openlp.core.common.registry import Registry from openlp.core.threading import ThreadWorker, run_thread REMOTE_URL = 'https://get.openlp.org/remote/' -LOCAL_VERSION = re.compile(r'appVersion.*=.*\'(.*?)\';') +LOCAL_VERSION = re.compile(r'appVersion.*=.*[\'"](.*?)[\'"];?') log = logging.getLogger(__name__) @@ -162,8 +162,9 @@ def get_installed_version(): version_file = AppLocation.get_section_data_path('remotes') / 'assets' / 'version.js' if not version_file.exists(): return None - version_read = version_file.read() - print(version_read) + version_read = version_file.read_text() + if not version_read: + return None match = LOCAL_VERSION.search(version_read) if not match: return None diff --git a/tests/openlp_core/api/test_deploy.py b/tests/openlp_core/api/test_deploy.py index 9ca333881..5be8325a9 100644 --- a/tests/openlp_core/api/test_deploy.py +++ b/tests/openlp_core/api/test_deploy.py @@ -177,13 +177,13 @@ def test_get_installed_version_not_installed(mocked_get_section_data_path): @patch('openlp.core.api.deploy.AppLocation.get_section_data_path') -def test_get_installed_version_no_version(mocked_get_section_data_path): - """Test that if there is no matching version number, None is returned""" +def test_get_installed_version_no_valid_version(mocked_get_section_data_path): + """Test that if there is no valid version number, None is returned""" # GIVEN: A mocked AppLocation and no file installed mocked_version_file = MagicMock() mocked_version_file.__truediv__.return_value = mocked_version_file mocked_version_file.exists.return_value = True - mocked_version_file.read.return_value = 'let app_version = 0.9.7;' + mocked_version_file.read_text.return_value = 'let app_version = 0.9.7;' mocked_get_section_data_path.return_value = mocked_version_file # WHEN: get_installed_version() is called but there is no version in the file @@ -200,11 +200,28 @@ def test_get_installed_version(mocked_get_section_data_path): mocked_version_file = MagicMock() mocked_version_file.__truediv__.return_value = mocked_version_file mocked_version_file.exists.return_value = True - mocked_version_file.read.return_value = 'let appVersion = \'0.9.7\';' + mocked_version_file.read_text.return_value = 'let appVersion = \'0.9.7\';' mocked_get_section_data_path.return_value = mocked_version_file - # WHEN: get_installed_version() is called but there is no version file + # WHEN: get_installed_version() is called result = get_installed_version() - # THEN: The result should be None + # THEN: The result should be 0.9.7 + assert result == '0.9.7' + + +@patch('openlp.core.api.deploy.AppLocation.get_section_data_path') +def test_get_installed_version_nondefault_syntax(mocked_get_section_data_path): + """Test that get_installed_version accepts double quotes and no trailing semicolon in version file""" + # GIVEN: A mocked AppLocation and no file installed + mocked_version_file = MagicMock() + mocked_version_file.__truediv__.return_value = mocked_version_file + mocked_version_file.exists.return_value = True + mocked_version_file.read_text.return_value = 'let appVersion = "0.9.7"' + mocked_get_section_data_path.return_value = mocked_version_file + + # WHEN: get_installed_version() is called + result = get_installed_version() + + # THEN: The result should be 0.9.7 assert result == '0.9.7'