Merge branch 'remote-version-fix' into 'master'

Fixing Web Remote's version.js file handling

See merge request openlp/openlp!517
This commit is contained in:
Tim Bentley 2022-12-12 08:04:09 +00:00
commit 6b7ed17c98
2 changed files with 27 additions and 9 deletions

View File

@ -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

View File

@ -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'