Добавлены переменные install.os.audio.available, install.os.audio.selected

master
Хирецкий Михаил 3 years ago committed by root
parent 9842b85723
commit 1f0cd60a37

@ -493,6 +493,15 @@ class PackageAtomParser:
self._atom_dictionary.clear()
return atom_name_object
def is_package_exists(self, package_atom):
try:
self.parse_package_parameter(package_atom)
return True
except PackageAtomError as e:
if e.errno == NOTEXIST:
return False
raise
def _check_package_existance(self, package_atom=''):
'''Метод для проверки существования пакета. Существование пакета
определяется наличием соответствующего CONTENTS файла.'''

@ -1,10 +1,40 @@
import os
from calculate.variables.datavars import Variable, Namespace, Dependence, \
StringType, BooleanType, HashType, Calculate, Copy
StringType, BooleanType, HashType, ListType, Calculate, Copy
from calculate.vars.main.os.func import get_arch_gentoo
from calculate.utils.package import PackageAtomParser
def get_available_audio_system():
audio_systems = (
('alsa', None),
('pulseaudio', 'media-sound/pulseaudio')
)
package_db = PackageAtomParser()
return [
audio_system
for audio_system, pkg in audio_systems
if pkg is None or package_db.is_package_exists(pkg)
]
def get_audio_selected(available_systems, cmdline_audio):
available_systems = available_systems.value
if 'pulseaudio' in available_systems:
cmdline_audio = cmdline_audio.value
if cmdline_audio and cmdline_audio == 'alsa':
return 'alsa'
else:
return 'pulseaudio'
return 'alsa'
with Namespace("arch"):
Variable("machine", type=StringType,
source=Copy("main.os.arch.machine"))
Variable("gentoo", type=StringType,
source=Calculate(get_arch_gentoo, ".machine"))
with Namespace("audio"):
Variable("available", type=ListType,
source=Calculate(get_available_audio_system))
Variable("selected", type=StringType,
source=Calculate(get_audio_selected, ".available", "main.cl.cmdline.calculate.audio"))

@ -0,0 +1,24 @@
from calculate.utils.package import PackageAtomParser
def get_available_audio_system():
audio_systems = (
('alsa', None),
('pulseaudio', 'media-sound/pulseaudio')
)
package_db = PackageAtomParser()
return [
audio_system
for audio_system, pkg in audio_systems
if pkg is None or package_db.is_package_exists(pkg)
]
def get_audio_selected(available_systems, cmdline_audio):
available_systems = available_systems.value
if 'pulseaudio' in available_systems:
cmdline_audio = cmdline_audio.value
if cmdline_audio and cmdline_audio == 'alsa':
return 'alsa'
else:
return 'pulseaudio'
return 'alsa'

@ -1,7 +1,7 @@
import pytest
import calculate.vars.main.os.x11 as main_os_x11
import calculate.vars.main.cl as main_cl
import calculate.vars.main.os as main_os
import calculate.vars.main.cl as main_cl
import calculate.vars.main.os.x11 as main_os_x11
from calculate.vars.main.cl import CmdlineParams
import mock
from itertools import chain
@ -13,8 +13,7 @@ from itertools import chain
"failed": True,
"data": "",
"result": ""
},
{
}, {
"name": "worked xdpyinfo",
"failed": False,
"data": open('tests/vars/xdpyinfo.output','r').read(),
@ -115,3 +114,48 @@ def test_main_os_get_arch_gentoo(case):
def __init__(self, value):
self.value = value
assert main_os.get_arch_gentoo(Var(case["source"])) == case["result"]
import calculate.vars.install.os.func as install_os
@pytest.mark.parametrize('case',
[
{
"name": "pulseaudio exists",
"exists": True,
"result": ["alsa","pulseaudio"]
},
{
"name": "pulseaudio not exists",
"exists": False,
"result": ["alsa"]
},
],
ids=lambda x:x["name"])
@pytest.mark.calculate_vars
def test_install_os_get_available_audio_system(case):
with mock.patch('calculate.vars.install.os.func.PackageAtomParser.is_package_exists') as exists:
exists.return_value = case["exists"]
assert install_os.get_available_audio_system() == case["result"]
#def get_available_audio_system():
# audio_systems = (
# ('alsa', None),
# ('pulseaudio', 'media-sound/pulseaudio')
# )
# package_db = PackageAtomParser()
# return [
# audio_system
# for audio_system, pkg in audio_systems
# if pkg is None or package_db.is_package_exists(pkg)
# ]
#
#def get_audio_selected(available_systems, cmdline_audio):
# available_systems = available_systems.value
#
# if 'pulseaudio' in available_systems:
# cmdline_audio = cmdline_audio.value
# if cmdline_audio and cmdline_audio == 'alsa':
# return 'alsa'
# else:
# return 'pulseaudio'
# return 'alsa'

Loading…
Cancel
Save