mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-06 08:55:34 +00:00
This change rename the test files for Linux according to the discussion at the Keyman conference in November 2024. Python is pretty opinionated about the naming of files, so we have to use `*_tests.py` as test filename instead of the usual `*.tests.py`.
137 lines
5.6 KiB
Python
137 lines
5.6 KiB
Python
#!/usr/bin/python3
|
|
import unittest
|
|
from unittest.mock import patch
|
|
|
|
from keyman_config import KeymanComUrl, __tier__
|
|
from keyman_config.handle_install import download_and_install_package
|
|
|
|
|
|
class HandleInstallTests(unittest.TestCase):
|
|
|
|
@patch('keyman_config.handle_install.is_zipfile')
|
|
@patch('keyman_config.handle_install._install_package')
|
|
def test_downloadAndInstallPackage_file(self, installPackageMethod, mockIsZipfile):
|
|
# Setup
|
|
mockIsZipfile.return_value = True
|
|
|
|
# Execute
|
|
download_and_install_package('/tmp/keyboard/sil_euro_latin.kmp')
|
|
|
|
# Verify
|
|
installPackageMethod.assert_called_with('/tmp/keyboard/sil_euro_latin.kmp', '')
|
|
|
|
@patch('keyman_config.handle_install.is_zipfile')
|
|
@patch('keyman_config.handle_install._install_package')
|
|
def test_downloadAndInstallPackage_fileUrl(self, installPackageMethod, mockIsZipfile):
|
|
# Setup
|
|
mockIsZipfile.return_value = True
|
|
|
|
# Execute
|
|
download_and_install_package('file:///tmp/keyboard/sil_euro_latin.kmp')
|
|
|
|
# Verify
|
|
installPackageMethod.assert_called_with('/tmp/keyboard/sil_euro_latin.kmp', '')
|
|
|
|
@patch('keyman_config.handle_install.is_zipfile')
|
|
@patch('keyman_config.handle_install._install_package')
|
|
def test_downloadAndInstallPackage_fileUrlWithBcp47(self, installPackageMethod,
|
|
mockIsZipfile):
|
|
# Setup
|
|
mockIsZipfile.return_value = True
|
|
|
|
# Execute
|
|
download_and_install_package('file:///tmp/keyboard/sil_euro_latin.kmp?bcp47=dyo')
|
|
|
|
# Verify
|
|
installPackageMethod.assert_called_with('/tmp/keyboard/sil_euro_latin.kmp', 'dyo')
|
|
|
|
@patch('keyman_config.handle_install.is_zipfile')
|
|
@patch('keyman_config.handle_install._install_package')
|
|
def test_downloadAndInstallPackage_fileUrlWithBcp47AndVersion(self, installPackageMethod,
|
|
mockIsZipfile):
|
|
# Setup
|
|
mockIsZipfile.return_value = True
|
|
|
|
# Execute
|
|
download_and_install_package('file:///tmp/keyboard/sil_euro_latin.kmp?bcp47=dyo&version=1')
|
|
|
|
# Verify
|
|
installPackageMethod.assert_called_with('/tmp/keyboard/sil_euro_latin.kmp', 'dyo')
|
|
|
|
@patch('keyman_config.handle_install.is_zipfile')
|
|
@patch('keyman_config.handle_install._install_package')
|
|
def test_downloadAndInstallPackage_InvalidUrl(self, installPackageMethod, mockIsZipfile):
|
|
# Setup
|
|
mockIsZipfile.return_value = True
|
|
|
|
# Execute
|
|
download_and_install_package('http://localhost/keyboard/sil_euro_latin.kmp')
|
|
|
|
# Verify
|
|
installPackageMethod.assert_not_called()
|
|
|
|
@patch('keyman_config.handle_install.is_zipfile')
|
|
@patch('keyman_config.handle_install._install_package')
|
|
@patch('keyman_config.get_kmp.download_kmp_file')
|
|
def test_downloadAndInstallPackage_invalidUrl(self, downloadKmpFileMethod,
|
|
installPackageMethod, mockIsZipfile):
|
|
for url in ['foo://download/keyboard/sil_euro_latin', 'keyman://keyboard/sil_euro_latin',
|
|
'keyman://download/sil_euro_latin', 'keyman://download/keyboard/']:
|
|
with self.subTest(url=url):
|
|
# Setup
|
|
mockIsZipfile.return_value = True
|
|
|
|
# Execute
|
|
download_and_install_package(url)
|
|
|
|
# Verify
|
|
downloadKmpFileMethod.assert_not_called()
|
|
installPackageMethod.assert_not_called()
|
|
|
|
@patch('keyman_config.handle_install.is_zipfile')
|
|
@patch('keyman_config.handle_install._install_package')
|
|
@patch('keyman_config.get_kmp.keyman_cache_dir')
|
|
@patch('keyman_config.handle_install.download_kmp_file')
|
|
def test_downloadAndInstallPackage_keymanUrl(self, downloadKmpFileMethod,
|
|
keymanCacheDirMethod, installPackageMethod,
|
|
mockIsZipfile):
|
|
# Setup
|
|
mockPackagePath = '/tmp/sil_euro_latin'
|
|
keymanCacheDirMethod.return_value = '/tmp'
|
|
downloadKmpFileMethod.return_value = mockPackagePath
|
|
mockIsZipfile.return_value = True
|
|
|
|
# Execute
|
|
download_and_install_package('keyman://download/keyboard/sil_euro_latin')
|
|
|
|
# Verify
|
|
downloadKmpFileMethod.assert_called_with(
|
|
KeymanComUrl + '/go/package/download/sil_euro_latin?platform=linux&tier=' + __tier__,
|
|
mockPackagePath)
|
|
installPackageMethod.assert_called_with(mockPackagePath, '')
|
|
|
|
@patch('keyman_config.handle_install.is_zipfile')
|
|
@patch('keyman_config.handle_install._install_package')
|
|
@patch('keyman_config.get_kmp.keyman_cache_dir')
|
|
@patch('keyman_config.handle_install.download_kmp_file')
|
|
def test_downloadAndInstallPackage_keymanUrlWithBcp47(self, downloadKmpFileMethod,
|
|
keymanCacheDirMethod,
|
|
installPackageMethod, mockIsZipfile):
|
|
# Setup
|
|
mockPackagePath = '/tmp/sil_euro_latin'
|
|
keymanCacheDirMethod.return_value = '/tmp'
|
|
downloadKmpFileMethod.return_value = mockPackagePath
|
|
mockIsZipfile.return_value = True
|
|
|
|
# Execute
|
|
download_and_install_package('keyman://download/keyboard/sil_euro_latin?bcp47=de')
|
|
|
|
# Verify
|
|
downloadKmpFileMethod.assert_called_with(
|
|
KeymanComUrl + '/go/package/download/sil_euro_latin?platform=linux&tier=' + __tier__,
|
|
mockPackagePath)
|
|
installPackageMethod.assert_called_with(mockPackagePath, 'de')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|