tiramisu/test/test_mandatory.py

260 lines
7.1 KiB
Python

import autopath
#from py.test import raises
from tiramisu.config import Config, mandatory_warnings
from tiramisu.option import StrOption, OptionDescription, UnicodeOption
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', ))
stroption2 = UnicodeOption('unicode2', 'Test string option',
properties=('mandatory', ))
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
config.str1
config.str1 = 'yes'
assert config.str1 == 'yes'
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
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)
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']
setting.add_property('disabled', descr.str1)
prop = []
try:
config.str1
except PropertiesOptionError, err:
prop = err.proptype
assert prop == ['disabled', 'mandatory']
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']
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']
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
setting.read_write()
config.str = 'a'
setting.read_only()
assert list(mandatory_warnings(config)) == ['str1', 'unicode2', 'str3']
def test_mandatory_warnings_rw():
descr = make_description()
config = Config(descr)
config.str = ''
setting = config.cfgimpl_get_settings()
setting.read_write()
config.str
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
config.str = 'a'
assert list(mandatory_warnings(config)) == ['str1', 'unicode2', 'str3']
def test_mandatory_warnings_disabled():
descr = make_description()
config = Config(descr)
config.str = ''
setting = config.cfgimpl_get_settings()
setting.read_write()
config.str
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
setting.add_property('disabled', descr.str)
assert list(mandatory_warnings(config)) == ['str1', 'unicode2', 'str3']
def test_mandatory_warnings_frozen():
descr = make_description()
config = Config(descr)
config.str = ''
setting = config.cfgimpl_get_settings()
setting.read_write()
config.str
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']
setting.add_property('frozen', descr.str)
setting.read_only()
assert list(mandatory_warnings(config)) == ['str', 'str1', 'unicode2', 'str3']