dynamic option description and filename with calculation

This commit is contained in:
2019-12-21 12:21:42 +01:00
parent 729b35d372
commit 024fecddbb
14 changed files with 172 additions and 23 deletions

View File

@ -1,4 +1,4 @@
from tiramisu import valid_not_equal, valid_ip_netmask
from tiramisu import valid_not_equal, valid_ip_netmask, calc_value
def calc_val(*args, **kwargs):
pass

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<creole>
<variables>
<family name='general'>
<variable name='varname' type='string' description="No change" multi="True">
<value>val1</value>
<value>val2</value>
</variable>
</family>
<family name='dyn' dynamic="varname">
<variable name='vardyn' type='string' description="No change"/>
</family>
</variables>
</creole>

View File

@ -0,0 +1 @@
{"creole.general.varname": ["val1", "val2"], "creole.dynval1.vardynval1": null, "creole.dynval2.vardynval2": null}

View File

@ -0,0 +1,20 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<family doc="" name="creole">
<family doc="general" name="general">
<property>normal</property>
<variable doc="No change" multi="True" name="varname" type="string">
<property>mandatory</property>
<property>normal</property>
<value>val1</value>
<value>val2</value>
</variable>
</family>
<family dynamic="creole.general.varname" doc="dyn" name="dyn">
<property>normal</property>
<variable doc="No change" multi="False" name="vardyn" type="string">
<property>normal</property>
</variable>
</family>
</family>
</creole>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<creole>
<containers>
<container name='test' id='23'>
<file name='file_name' name_type="SymLinkOption" source="mailname"/>
</container>
</containers>
<variables>
<family name='général'>
<variable name='mode_conteneur_actif' type='oui/non' description="No change" hidden="True">
<value>oui</value>
</variable>
<variable name='file_name' type='string' multi='True'>
<value>/etc/mailname</value>
<value>/etc/mailname2</value>
</variable>
</family>
<separators/>
</variables>
</creole>

View File

@ -0,0 +1 @@
{"creole.general.file_name": ["/etc/mailname", "/etc/mailname2"], "containers.container0.files.file0.mkdir": false, "containers.container0.files.file0.name": ["/etc/mailname", "/etc/mailname2"], "containers.container0.files.file0.rm": false, "containers.container0.files.file0.source": "mailname", "containers.container0.files.file0.activate": true}

View File

@ -0,0 +1,47 @@
<?xml version='1.0' encoding='UTF-8'?>
<creole>
<family name="containers">
<family name="container0" doc="test">
<family doc="files" name="files">
<family doc="file0" name="file0">
<variable doc="" multi="False" name="mkdir" type="boolean">
<value>False</value>
</variable>
<variable multi="False" name="name" opt="creole.general.file_name" type="symlink"/>
<variable doc="" multi="False" name="rm" type="boolean">
<value>False</value>
</variable>
<variable doc="" multi="False" name="source" type="string">
<value>mailname</value>
</variable>
<variable doc="" multi="False" name="activate" type="boolean">
<value>True</value>
</variable>
</family>
</family>
<property>basic</property>
</family>
</family>
<family doc="" name="creole">
<family doc="général" name="general">
<property>normal</property>
<variable doc="No change" multi="False" name="mode_conteneur_actif" type="choice">
<choice type="string">oui</choice>
<choice type="string">non</choice>
<property>force_default_on_freeze</property>
<property>frozen</property>
<property>hidden</property>
<property>mandatory</property>
<property>normal</property>
<value type="string">oui</value>
</variable>
<variable doc="file_name" multi="True" name="file_name" type="string">
<property>mandatory</property>
<property>normal</property>
<value>/etc/mailname</value>
<value>/etc/mailname2</value>
</variable>
</family>
<separators/>
</family>
</creole>

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<creole>
<containers>
<container name='test' id='23'>
<file name='file_name' name_type="SymLinkOption"/>
</container>
</containers>
<variables>
<family name='général'>
<variable name='mode_conteneur_actif' type='oui/non' description="No change" hidden="True">
<value>oui</value>
</variable>
<variable name='file_name' type='string'>
<value>/etc/mailname</value>
</variable>
</family>
<separators/>
</variables>
</creole>

View File

@ -4,11 +4,9 @@ from pytest import fixture, raises
from os import listdir
from json import load
#from creole.xmlreflector import CreoleObjSpace, CreoleDictConsistencyError
#from creole import xmlreflector
from rougail import objspace, annotator
from creole.xml_compare import xml_compare
from creole.error import CreoleDictConsistencyError
from rougail.xml_compare import xml_compare
from rougail.error import CreoleDictConsistencyError
from rougail.config import dtdfilename
@ -85,7 +83,7 @@ def launch_flattener(test_dir):
eolobj.save(destfile)
result_file = join(test_dir, 'result/00-base.xml')
if isfile(result_file):
# eolobj.save(result_file)
# eolobj.save(result_file)
compare_xml(destfile, result_file)

View File

@ -24,7 +24,7 @@ for test in listdir(dico_dirs):
excludes = set([])
excludes = set([])
test_ok -= excludes
#test_ok = ['70container_all']
#test_ok = ['20family_dynamic']
test_ok = list(test_ok)

View File

@ -22,13 +22,11 @@ def test_dictionary(test_dir):
test_dir = join(template_dirs, test_dir)
tmp_dir = join(test_dir, 'tmp')
funcs_file = join(template_dirs, '../eosfunc/test.py')
template.distrib_dir = join(test_dir, 'tmpl')
template.templatedir = tmp_dir
distrib_dir = join(test_dir, 'tmpl')
if isdir(tmp_dir):
rmtree(tmp_dir)
mkdir(tmp_dir)
dest_dir = join(test_dir, 'dest')
template.dest_dir = dest_dir
if isdir(dest_dir):
rmtree(dest_dir)
mkdir(dest_dir)
@ -41,13 +39,19 @@ def test_dictionary(test_dir):
config = Config(optiondescription)
config.property.read_only()
template.generate(config,
funcs_file)
funcs_file,
distrib_dir,
tmp_dir,
dest_dir)
list_templates = set(listdir(dest_dir))
if isdir(join(dest_dir, 'test')):
list_templates = set(listdir(join(dest_dir, 'test')))
else:
list_templates = set()
list_results = set(listdir(join(test_dir, 'result')))
assert list_templates == list_results
for result in listdir(join(test_dir, 'result')):
template_file = join(dest_dir, result)
template_file = join(dest_dir, 'test', result)
if not isfile(template_file):
raise Exception(f'{template_file} is not generated')
with open(join(test_dir, 'result', result), 'r') as fh: