Files
bearhub/tests/gems/arch/test_aur.py
Sebastian Palencsar e95a23bc20 M3 namespace migration: complete Phase B, partial Phase D, docs and tests
- Native runtime under bearhub/ (api, commons, gems, view/util, view/core, view/qt)
- bauh/ compatibility re-export shims for legacy imports
- Phase D: canonical __version__/__app_name__ in bearhub/__init__.py; pyproject.toml
  and setup.py point at bearhub package
- Native gem loader at bearhub/view/core/gems.py
- Namespace compatibility tests (159 tests passing)
- Documentation: CHANGELOG [Unreleased], NAMESPACE_MIGRATION, ROADMAP, README,
  CONTRIBUTING, docs/qt6-migration.md, packaging/aur/README.md
2026-06-27 10:26:41 +02:00

267 lines
11 KiB
Python

import os
from unittest import TestCase
from bearhub.gems.arch import aur
FILE_DIR = os.path.dirname(os.path.abspath(__file__))
class AURModuleTest(TestCase):
def test_map_srcinfo__only_one_pkgname(self):
expected_fields = {
'pkgbase': 'bauh',
'pkgname': 'bauh',
'pkgver': '0.9.6',
'pkgrel': '2',
'url': 'https://github.com/vinifmor/bauh',
'arch': 'any',
'license': 'zlib/libpng',
'makedepends': ['git', 'python', 'python-pip', 'python-setuptools'],
'depends': [
'python', 'python-colorama', 'python-pyaml', 'python-pyqt5', 'python-pyqt5-sip', 'python-requests', 'qt5-svg'
],
'optdepends': [
'flatpak: required for Flatpak support',
'python-beautifulsoup4: for Native Web applications support',
'python-lxml: for Native Web applications support',
'snapd: required for Snap support'
],
'source': ['https://github.com/vinifmor/bauh/archive/0.9.6.tar.gz'],
'sha512sums': ['cb1820b8a41dccec746d91d71b7f524c2e3caf6b30b0cd9666598b8ad49302654d9ce9bd1a0a2a9612afebc27ef78a2a94ac10e4e6c183742effe4feeabaa7b2']
}
with open(FILE_DIR + '/resources/bauh_srcinfo') as f:
srcinfo = f.read()
res = aur.map_srcinfo(srcinfo, 'bauh')
for key, val in expected_fields.items():
self.assertIn(key, res, "key '{}' not in res".format(key))
if isinstance(val, list):
val.sort()
res[key].sort()
self.assertEqual(val, res[key], "expected: {}. current: {}".format(val, res[key]))
def test_map_srcinfo__one_name__only_specific_fields(self):
expected_fields = {
'pkgver': '0.9.6',
'pkgrel': '2'
}
with open(FILE_DIR + '/resources/bauh_srcinfo') as f:
srcinfo = f.read()
res = aur.map_srcinfo(srcinfo, 'bauh', fields={*expected_fields.keys()})
self.assertEqual(len(expected_fields), len(res), "Expected: {}. Current: {}".format(len(expected_fields), len(res)))
for key, val in expected_fields.items():
self.assertIn(key, res, "key '{}' not in res".format(key))
if isinstance(val, list):
val.sort()
res[key].sort()
self.assertEqual(val, res[key], "expected: {}. current: {}".format(val, res[key]))
def test_map_srcinfo__several_pkgnames__pkgname_specified_case_1(self):
expected_fields = {
'pkgbase': 'mangohud',
'pkgname': 'mangohud',
'pkgver': '0.5.1',
'pkgrel': '3',
'pkgdesc': 'A Vulkan overlay layer for monitoring FPS, temperatures, CPU/GPU load and more',
'source': ['mangohud-0.5.1.tar.gz::https://github.com/flightlessmango/MangoHud/archive/v0.5.1.tar.gz'],
'sha256sums': ['3e91d4fc7369d46763894c13f3315133871dd02705072981770c3cf58e8081c6'],
'license': 'MIT',
'arch': 'x86_64',
'url': 'https://github.com/flightlessmango/MangoHud',
'makedepends': [
'glslang', 'libglvnd', 'lib32-libglvnd', 'meson', 'python-mako', 'vulkan-headers', 'vulkan-icd-loader',
'lib32-vulkan-icd-loader', 'libxnvctrl'
],
'depends': ['gcc-libs', 'mangohud-common'],
'optdepends': ['bash: mangohud helper script', 'libxnvctrl: support for older NVIDIA GPUs']
}
with open(FILE_DIR + '/resources/mangohud_srcinfo') as f:
srcinfo = f.read()
res = aur.map_srcinfo(srcinfo, 'mangohud')
self.assertEqual(len(expected_fields), len(res), "Expected: {}. Current: {}".format(len(expected_fields), len(res)))
for key, val in expected_fields.items():
self.assertIn(key, res, "key '{}' not in res".format(key))
if isinstance(val, list):
val.sort()
if isinstance(res[key], list):
res[key].sort()
self.assertEqual(val, res[key], "expected: {}. current: {}".format(val, res[key]))
def test_map_srcinfo__several_pkgnames__pkgname_specified_case_2(self):
expected_fields = {
'pkgbase': 'mangohud',
'pkgname': 'mangohud-common',
'pkgver': '0.5.1',
'pkgrel': '3',
'pkgdesc': 'Common files for mangohud and lib32-mangohud',
'source': ['mangohud-0.5.1.tar.gz::https://github.com/flightlessmango/MangoHud/archive/v0.5.1.tar.gz'],
'sha256sums': ['3e91d4fc7369d46763894c13f3315133871dd02705072981770c3cf58e8081c6'],
'license': 'MIT',
'url': 'https://github.com/flightlessmango/MangoHud',
'arch': 'x86_64',
'makedepends': [
'glslang', 'libglvnd', 'lib32-libglvnd', 'meson', 'python-mako', 'vulkan-headers', 'vulkan-icd-loader',
'lib32-vulkan-icd-loader', 'libxnvctrl'
],
'optdepends': ['bash: mangohud helper script']
}
with open(FILE_DIR + '/resources/mangohud_srcinfo') as f:
srcinfo = f.read()
res = aur.map_srcinfo(srcinfo, 'mangohud-common')
self.assertEqual(len(expected_fields), len(res), "Expected: {}. Current: {}".format(len(expected_fields), len(res)))
for key, val in expected_fields.items():
self.assertIn(key, res, "key '{}' not in res".format(key))
if isinstance(val, list):
val.sort()
if isinstance(res[key], list):
res[key].sort()
self.assertEqual(val, res[key], "expected: {}. current: {}".format(val, res[key]))
def test_map_srcinfo__several_pkgnames__pkgname_specified_case_3(self):
expected_fields = {
'pkgbase': 'mangohud',
'pkgname': 'lib32-mangohud',
'pkgver': '0.5.1',
'pkgrel': '3',
'pkgdesc': 'A Vulkan overlay layer for monitoring FPS, temperatures, CPU/GPU load and more (32-bit)',
'source': ['mangohud-0.5.1.tar.gz::https://github.com/flightlessmango/MangoHud/archive/v0.5.1.tar.gz'],
'sha256sums': ['3e91d4fc7369d46763894c13f3315133871dd02705072981770c3cf58e8081c6'],
'license': 'MIT',
'url': 'https://github.com/flightlessmango/MangoHud',
'arch': 'x86_64',
'makedepends': [
'glslang', 'libglvnd', 'lib32-libglvnd', 'meson', 'python-mako', 'vulkan-headers', 'vulkan-icd-loader',
'lib32-vulkan-icd-loader', 'libxnvctrl'
],
'depends': ['mangohud', 'mangohud-common', 'lib32-gcc-libs'],
'optdepends': ['lib32-libxnvctrl: support for older NVIDIA GPUs']
}
with open(FILE_DIR + '/resources/mangohud_srcinfo') as f:
srcinfo = f.read()
res = aur.map_srcinfo(srcinfo, 'lib32-mangohud')
self.assertEqual(len(expected_fields), len(res), "Expected: {}. Current: {}".format(len(expected_fields), len(res)))
for key, val in expected_fields.items():
self.assertIn(key, res, "key '{}' not in res".format(key))
if isinstance(val, list):
val.sort()
if isinstance(res[key], list):
res[key].sort()
self.assertEqual(val, res[key], "expected: {}. current: {}".format(val, res[key]))
def test_map_srcinfo__several_pkgnames__different_pkgname(self):
expected_fields = {
'pkgbase': 'mangohud',
'pkgname': ['lib32-mangohud', 'mangohud', 'mangohud-common'],
'pkgver': '0.5.1',
'pkgrel': '3',
'pkgdesc': [
'A Vulkan overlay layer for monitoring FPS, temperatures, CPU/GPU load and more (32-bit)',
'Common files for mangohud and lib32-mangohud',
'A Vulkan overlay layer for monitoring FPS, temperatures, CPU/GPU load and more',
],
'source': ['mangohud-0.5.1.tar.gz::https://github.com/flightlessmango/MangoHud/archive/v0.5.1.tar.gz'],
'sha256sums': ['3e91d4fc7369d46763894c13f3315133871dd02705072981770c3cf58e8081c6'],
'license': 'MIT',
'url': 'https://github.com/flightlessmango/MangoHud',
'arch': 'x86_64',
'makedepends': [
'glslang', 'libglvnd', 'lib32-libglvnd', 'meson', 'python-mako', 'vulkan-headers', 'vulkan-icd-loader',
'lib32-vulkan-icd-loader', 'libxnvctrl'
],
'depends': ['mangohud', 'mangohud-common', 'lib32-gcc-libs', 'gcc-libs'],
'optdepends': ['lib32-libxnvctrl: support for older NVIDIA GPUs',
'bash: mangohud helper script',
'libxnvctrl: support for older NVIDIA GPUs']
}
with open(FILE_DIR + '/resources/mangohud_srcinfo') as f:
srcinfo = f.read()
res = aur.map_srcinfo(srcinfo, 'xpto')
self.assertEqual(len(expected_fields), len(res), "Expected: {}. Current: {}".format(len(expected_fields), len(res)))
for key, val in expected_fields.items():
self.assertIn(key, res, "key '{}' not in res".format(key))
if isinstance(val, list):
val.sort()
if isinstance(res[key], list):
res[key].sort()
self.assertEqual(val, res[key], "expected: {}. current: {}".format(val, res[key]))
def test_map_srcinfo__several_names__pkgname_present__only_specific_fields(self):
expected_fields = {
'pkgver': '0.5.1',
'pkgrel': '3'
}
with open(FILE_DIR + '/resources/mangohud_srcinfo') as f:
srcinfo = f.read()
res = aur.map_srcinfo(srcinfo, 'mangohud-commons', fields={*expected_fields.keys()})
self.assertEqual(len(expected_fields), len(res), "Expected: {}. Current: {}".format(len(expected_fields), len(res)))
for key, val in expected_fields.items():
self.assertIn(key, res, "key '{}' not in res".format(key))
if isinstance(val, list):
val.sort()
res[key].sort()
self.assertEqual(val, res[key], "expected: {}. current: {}".format(val, res[key]))
def test_map_srcinfo__several_names__pkgname_not_present__only_specific_fields(self):
expected_fields = {
'pkgname': ['mangohud', 'lib32-mangohud', 'mangohud-common'],
'pkgver': '0.5.1'
}
with open(FILE_DIR + '/resources/mangohud_srcinfo') as f:
srcinfo = f.read()
res = aur.map_srcinfo(srcinfo, 'xpto', fields={*expected_fields.keys()})
self.assertEqual(len(expected_fields), len(res), "Expected: {}. Current: {}".format(len(expected_fields), len(res)))
for key, val in expected_fields.items():
self.assertIn(key, res, "key '{}' not in res".format(key))
if isinstance(val, list):
val.sort()
res[key].sort()
self.assertEqual(val, res[key], "expected: {}. current: {}".format(val, res[key]))