2013-04-16 22:44:16 +02:00
|
|
|
import autopath
|
|
|
|
|
|
|
|
#from py.test import raises
|
|
|
|
from tiramisu.config import Config, mandatory_warnings
|
2013-04-17 22:06:10 +02:00
|
|
|
from tiramisu.option import StrOption, OptionDescription, UnicodeOption
|
2013-04-16 22:44:16 +02:00
|
|
|
from tiramisu.error import PropertiesOptionError
|
|
|
|
|
|
|
|
|
|
|
|
def make_description():
|
|
|
|
stroption = StrOption('str', 'Test string option', default="abc",
|
|
|
|
properties=('mandatory', ))
|
|
|
|
stroption1 = StrOption('str1', 'Test string option',
|
|
|
|
properties=('mandatory', ))
|
2013-04-17 22:06:10 +02:00
|
|
|
stroption2 = UnicodeOption('unicode2', 'Test string option',
|
2013-04-20 11:25:14 +02:00
|
|
|
properties=('mandatory', ))
|
2013-04-16 22:44:16 +02:00
|
|
|
stroption3 = StrOption('str3', 'Test string option', multi=True,
|
|
|
|
properties=('mandatory', ))
|
|
|
|
descr = OptionDescription('tiram', '', [stroption, stroption1, stroption2, stroption3])
|
|
|
|
return descr
|
|
|
|
|
|
|
|
|
|
|
|
def test_mandatory_ro():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
setting.read_only()
|
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.str1
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert 'mandatory' in prop
|
|
|
|
setting.read_write()
|
|
|
|
config.str1 = 'yes'
|
|
|
|
setting.read_only()
|
|
|
|
assert config.str1 == 'yes'
|
|
|
|
|
|
|
|
|
|
|
|
def test_mandatory_rw():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
setting.read_write()
|
|
|
|
#not mandatory in rw
|
2013-04-17 22:06:10 +02:00
|
|
|
config.str1
|
|
|
|
config.str1 = 'yes'
|
|
|
|
assert config.str1 == 'yes'
|
2013-04-16 22:44:16 +02:00
|
|
|
|
|
|
|
|
|
|
|
def test_mandatory_default():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
setting.read_only()
|
|
|
|
#not mandatory in rw
|
|
|
|
config.str
|
|
|
|
setting.read_write()
|
|
|
|
config.str = 'yes'
|
|
|
|
setting.read_only()
|
|
|
|
config.str
|
|
|
|
setting.read_write()
|
|
|
|
config.str = None
|
|
|
|
setting.read_only()
|
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.str
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert 'mandatory' in prop
|
|
|
|
|
|
|
|
|
|
|
|
#valeur vide : None, '', u'', ...
|
|
|
|
def test_mandatory_none():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
config.str1 = None
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
assert config.cfgimpl_get_values().getowner(descr.str1) == 'user'
|
|
|
|
setting.read_only()
|
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.str1
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert 'mandatory' in prop
|
|
|
|
|
|
|
|
|
|
|
|
def test_mandatory_empty():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
config.str1 = ''
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
assert config.cfgimpl_get_values().getowner(descr.str1) == 'user'
|
|
|
|
setting.read_only()
|
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.str1
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert 'mandatory' in prop
|
|
|
|
|
|
|
|
|
|
|
|
def test_mandatory_multi_none():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
config.str3 = [None]
|
|
|
|
setting.read_only()
|
|
|
|
assert config.cfgimpl_get_values().getowner(descr.str3) == 'user'
|
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.str3
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert 'mandatory' in prop
|
|
|
|
setting.read_write()
|
|
|
|
config.str3 = ['yes', None]
|
|
|
|
setting.read_only()
|
|
|
|
assert config.cfgimpl_get_values().getowner(descr.str3) == 'user'
|
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.str3
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert 'mandatory' in prop
|
|
|
|
|
|
|
|
|
|
|
|
def test_mandatory_multi_empty():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
config.str3 = ['']
|
|
|
|
setting.read_only()
|
|
|
|
assert config.cfgimpl_get_values().getowner(descr.str3) == 'user'
|
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.str3
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert 'mandatory' in prop
|
|
|
|
setting.read_write()
|
|
|
|
config.str3 = ['yes', '']
|
|
|
|
setting.read_only()
|
|
|
|
assert config.cfgimpl_get_values().getowner(descr.str3) == 'user'
|
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.str3
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert 'mandatory' in prop
|
|
|
|
|
|
|
|
|
2013-04-17 21:33:34 +02:00
|
|
|
def test_mandatory_multi_append():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
config.str3 = ['yes']
|
|
|
|
setting.read_write()
|
|
|
|
config.str3.append(None)
|
|
|
|
|
|
|
|
|
2013-04-16 22:44:16 +02:00
|
|
|
def test_mandatory_disabled():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
config.str1
|
|
|
|
setting.read_only()
|
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.str1
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert prop == ['mandatory']
|
2013-04-20 17:30:05 +02:00
|
|
|
setting[descr.str1].append('disabled')
|
2013-04-16 22:44:16 +02:00
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.str1
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert prop == ['disabled', 'mandatory']
|
|
|
|
|
|
|
|
|
2013-04-17 22:06:10 +02:00
|
|
|
def test_mandatory_unicode():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
config.unicode2
|
|
|
|
setting.read_only()
|
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.unicode2
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert prop == ['mandatory']
|
|
|
|
setting.read_write()
|
|
|
|
config.unicode2 = u''
|
|
|
|
setting.read_only()
|
|
|
|
prop = []
|
|
|
|
try:
|
|
|
|
config.unicode2
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
prop = err.proptype
|
|
|
|
assert prop == ['mandatory']
|
|
|
|
|
|
|
|
|
2013-04-16 22:44:16 +02:00
|
|
|
def test_mandatory_warnings_ro():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
config.str = ''
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
setting.read_only()
|
|
|
|
proc = []
|
|
|
|
try:
|
|
|
|
config.str
|
|
|
|
except PropertiesOptionError, err:
|
|
|
|
proc = err.proptype
|
|
|
|
assert proc == ['mandatory']
|
2013-04-17 22:06:10 +02:00
|
|
|
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
|
2013-04-16 22:44:16 +02:00
|
|
|
setting.read_write()
|
|
|
|
config.str = 'a'
|
|
|
|
setting.read_only()
|
2013-04-17 22:06:10 +02:00
|
|
|
assert list(mandatory_warnings(config)) == ['str1', 'unicode2', 'str3']
|
2013-04-16 22:44:16 +02:00
|
|
|
|
|
|
|
|
|
|
|
def test_mandatory_warnings_rw():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
config.str = ''
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
setting.read_write()
|
|
|
|
config.str
|
2013-04-17 22:06:10 +02:00
|
|
|
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
|
2013-04-16 22:44:16 +02:00
|
|
|
config.str = 'a'
|
2013-04-17 22:06:10 +02:00
|
|
|
assert list(mandatory_warnings(config)) == ['str1', 'unicode2', 'str3']
|
2013-04-16 22:44:16 +02:00
|
|
|
|
|
|
|
|
|
|
|
def test_mandatory_warnings_disabled():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
config.str = ''
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
setting.read_write()
|
|
|
|
config.str
|
2013-04-17 22:06:10 +02:00
|
|
|
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
|
2013-04-20 17:30:05 +02:00
|
|
|
setting[descr.str].append('disabled')
|
2013-04-17 22:06:10 +02:00
|
|
|
assert list(mandatory_warnings(config)) == ['str1', 'unicode2', 'str3']
|
2013-04-17 21:33:34 +02:00
|
|
|
|
|
|
|
|
|
|
|
def test_mandatory_warnings_frozen():
|
|
|
|
descr = make_description()
|
|
|
|
config = Config(descr)
|
|
|
|
config.str = ''
|
|
|
|
setting = config.cfgimpl_get_settings()
|
|
|
|
setting.read_write()
|
|
|
|
config.str
|
2013-04-17 22:06:10 +02:00
|
|
|
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
|
2013-04-20 17:30:05 +02:00
|
|
|
setting[descr.str].append('frozen')
|
2013-04-17 21:33:34 +02:00
|
|
|
setting.read_only()
|
2013-04-17 22:06:10 +02:00
|
|
|
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
|