spiegel-keyman/linux/keyman-config/tests/package_install_completion_tests.py
Eberhard Beilharz 4a852c9522
chore(linux): rename test files
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`.
2024-11-26 19:06:02 +01:00

65 lines
2.5 KiB
Python

#!/usr/bin/python3
import os
import tempfile
import unittest
from unittest.mock import patch
from importlib.machinery import SourceFileLoader
from importlib.util import module_from_spec, spec_from_loader
class PackageInstallCompletionTests(unittest.TestCase):
def setUp(self):
self.mockExtractKmp = self._setupMock('keyman_config.install_kmp.extract_kmp')
self.mockGetMetadata = self._setupMock('keyman_config.kmpmetadata.get_metadata')
loader = SourceFileLoader('km_package_install', os.path.join(os.path.dirname(
os.path.abspath(__file__)), '../km-package-install'))
if spec := spec_from_loader(loader.name, loader):
self.mod = module_from_spec(spec)
loader.exec_module(self.mod)
self.tempDir = tempfile.TemporaryDirectory()
os.environ["XDG_CACHE_HOME"] = self.tempDir.name
self.cacheDir = os.path.join(self.tempDir.name, 'keyman')
os.makedirs(self.cacheDir)
def tearDown(self):
self.tempDir.cleanup()
def _setupMock(self, arg0):
patcher = patch(arg0)
result = patcher.start()
self.addCleanup(patcher.stop)
return result
def _list_languages_for_keyboard_impl(self, packageId):
return self.mod._list_languages_for_keyboard_impl(packageId, 'someDir')
def test_PackageCompletionNoLanguage(self):
with open(os.path.join(self.cacheDir, 'foo'), 'w'):
self.mockGetMetadata.return_value = (None, None, None, [{}], None)
result = self._list_languages_for_keyboard_impl('foo')
self.assertEqual(result, "")
def test_PackageCompletionOneLanguage(self):
with open(os.path.join(self.cacheDir, 'khmer_angkor'), 'w'):
self.mockGetMetadata.return_value = (
None, None, None,
[{'languages': [{'name': 'Central Khmer (Khmer, Cambodia)', 'id': 'km'}]}],
None
)
result = self._list_languages_for_keyboard_impl('khmer_angkor')
self.assertEqual(result, "km")
def test_PackageCompletionMultipleLanguages(self):
with open(os.path.join(self.cacheDir, 'sil_euro_latin'), 'w'):
self.mockGetMetadata.return_value = (
None, None, None,
[{'languages': [
{'name': 'English', 'id': 'en'},
{'name': 'French', 'id': 'fr'},
{'name': 'German', 'id': 'de'}]}],
None
)
result = self._list_languages_for_keyboard_impl('sil_euro_latin')
self.assertEqual(result, 'en\nfr\nde')