diff --git a/calculate/templates/template_engine.py b/calculate/templates/template_engine.py index 9d906fd..eb5fa2c 100644 --- a/calculate/templates/template_engine.py +++ b/calculate/templates/template_engine.py @@ -1493,7 +1493,7 @@ class CalculateExtension(Extension): ''' fname = self.get_full_filepath(fname) try: - reg = re.compile(regpattern) + reg = re.compile(regpattern, re.MULTILINE) except re.error: raise TemplateSyntaxError(_("Wrong regular expression")) fileContent = readFile(fname) diff --git a/calculate/vars/install/os/__init__.py b/calculate/vars/install/os/__init__.py index c2a8fa1..7a91869 100644 --- a/calculate/vars/install/os/__init__.py +++ b/calculate/vars/install/os/__init__.py @@ -1,35 +1,11 @@ from calculate.variables.datavars import Variable, Namespace, Dependence, \ 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' +from .func import * with Namespace("arch"): Variable("machine", type=StringType, - source=Copy("main.os.arch.machine")) + source=Calculate(lambda x: x.value, "main.os.arch.machine")) Variable("gentoo", type=StringType, source=Calculate(get_arch_gentoo, ".machine")) diff --git a/tests/templates/test_template_engine.py b/tests/templates/test_template_engine.py index e6d3ef2..436bb8a 100644 --- a/tests/templates/test_template_engine.py +++ b/tests/templates/test_template_engine.py @@ -290,6 +290,16 @@ parameter_2 = {{ vars_1.var_1 }}''' "grep": "'/test_grep', 'NOSTATUSLINE=(.*)'", "result": "true" }, + { + "name": "multiline pattern found", + "grep": "'/test_grep', '^NOSTATUSLINE=true'", + "result": "NOSTATUSLINE=true" + }, + { + "name": "multiline pattern not found", + "grep": "'/test_grep', '^STATUSLINE=true'", + "result": "" + }, ], ids=lambda x:x["name"]) def test_grep(self, case): diff --git a/tests/vars/test_vars.py b/tests/vars/test_vars.py index 40b9043..cf50ebe 100644 --- a/tests/vars/test_vars.py +++ b/tests/vars/test_vars.py @@ -3,9 +3,14 @@ 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 calculate.vars.install.os.func as install_os import mock from itertools import chain +class Var: + def __init__(self, value): + self.value = value + @pytest.mark.parametrize('case', [ { @@ -110,13 +115,9 @@ def test_main_cl_cmdline(case): ids=lambda x:"{}->{}".format(x["source"],x["result"])) @pytest.mark.calculate_vars def test_main_os_get_arch_gentoo(case): - class Var: - 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', [ { @@ -135,27 +136,50 @@ import calculate.vars.install.os.func as install_os 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"] + 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' +@pytest.mark.parametrize('case', + [ + { + "name": "default all available", + "available_systems": ["alsa","pulseaudio"], + "cmdline_audio": "", + "result": "pulseaudio" + }, + { + "name": "default all pulse unavailable", + "available_systems": ["alsa"], + "cmdline_audio": "", + "result": "alsa" + }, + { + "name": "all available alsa selected", + "available_systems": ["alsa","pulseaudio"], + "cmdline_audio": "alsa", + "result": "alsa" + }, + { + "name": "all available pulse selected", + "available_systems": ["alsa","pulseaudio"], + "cmdline_audio": "pulseaudio", + "result": "pulseaudio" + }, + { + "name": "all available wrong cmd line", + "available_systems": ["alsa","pulseaudio"], + "cmdline_audio": "wrong", + "result": "pulseaudio" + }, + { + "name": "pulse not available wrong cmd line", + "available_systems": ["alsa"], + "cmdline_audio": "wrong", + "result": "alsa" + }, + ], + ids=lambda x:x["name"]) +@pytest.mark.calculate_vars +def test_install_os_get_available_audio_system(case): + assert install_os.get_audio_selected( + Var(case["available_systems"]), + Var(case["cmdline_audio"])) == case["result"]