remove pep8 validation errors

This commit is contained in:
Emmanuel Garette 2015-07-24 17:54:10 +02:00
parent 6cc74506fb
commit 44cd618704
37 changed files with 146 additions and 346 deletions

View File

@ -7,8 +7,8 @@ checkout)
from os.path import dirname, abspath, join, normpath from os.path import dirname, abspath, join, normpath
import sys import sys
HERE = dirname(abspath(__file__)) def do_autopath():
PATH = normpath(join(HERE, '..', 'tiramisu')) HERE = dirname(abspath(__file__))
if PATH not in sys.path: PATH = normpath(join(HERE, '..', 'tiramisu'))
sys.path.insert(1, PATH) if PATH not in sys.path:
sys.path.insert(1, PATH)

View File

@ -1,5 +1,7 @@
# coding: utf-8 # coding: utf-8
import autopath from autopath import do_autopath
do_autopath()
from tiramisu import setting from tiramisu import setting
setting.expires_time = 1 setting.expires_time = 1
from tiramisu.option import IntOption, OptionDescription from tiramisu.option import IntOption, OptionDescription
@ -20,9 +22,10 @@ def make_description():
def test_cache_config(): def test_cache_config():
od1 = make_description() od1 = make_description()
assert od1.impl_already_build_caches() == False assert od1.impl_already_build_caches() is False
c = Config(od1) c = Config(od1)
assert od1.impl_already_build_caches() == True assert od1.impl_already_build_caches() is True
c
def test_cache(): def test_cache():

View File

@ -1,5 +1,6 @@
# coding: utf-8 # coding: utf-8
import autopath from autopath import do_autopath
do_autopath()
from tiramisu.setting import owners from tiramisu.setting import owners
from tiramisu.option import ChoiceOption, StrOption, OptionDescription from tiramisu.option import ChoiceOption, StrOption, OptionDescription

View File

@ -2,8 +2,9 @@
"""theses tests are much more to test that config, option description, vs... """theses tests are much more to test that config, option description, vs...
**it's there** and answers via attribute access""" **it's there** and answers via attribute access"""
from autopath import do_autopath
do_autopath()
import autopath
from py.test import raises from py.test import raises
from tiramisu.config import Config, SubConfig from tiramisu.config import Config, SubConfig
@ -165,6 +166,7 @@ def test_config_impl_get_path_by_opt():
dummy = config.unwrap_from_path('gc.dummy') dummy = config.unwrap_from_path('gc.dummy')
boo = config.unwrap_from_path('bool') boo = config.unwrap_from_path('bool')
unknown = IntOption('test', '') unknown = IntOption('test', '')
unknown
assert config.cfgimpl_get_description().impl_get_path_by_opt(boo) == 'bool' assert config.cfgimpl_get_description().impl_get_path_by_opt(boo) == 'bool'
assert config.cfgimpl_get_description().impl_get_path_by_opt(dummy) == 'gc.dummy' assert config.cfgimpl_get_description().impl_get_path_by_opt(dummy) == 'gc.dummy'
raises(AttributeError, "config.cfgimpl_get_description().impl_get_path_by_opt(unknown)") raises(AttributeError, "config.cfgimpl_get_description().impl_get_path_by_opt(unknown)")
@ -236,11 +238,13 @@ def test_values_not_setitem():
d1 = OptionDescription('od', '', [g1, g2, g3, g4, g5]) d1 = OptionDescription('od', '', [g1, g2, g3, g4, g5])
root = OptionDescription('root', '', [d1]) root = OptionDescription('root', '', [d1])
config = Config(root) config = Config(root)
config
raises(ConfigError, "config.cfgimpl_get_values()[g1] = 2") raises(ConfigError, "config.cfgimpl_get_values()[g1] = 2")
def test_duplicated_option(): def test_duplicated_option():
g1 = IntOption('g1', '', 1) g1 = IntOption('g1', '', 1)
g1
#in same OptionDescription #in same OptionDescription
raises(ConflictError, "d1 = OptionDescription('od', '', [g1, g1])") raises(ConflictError, "d1 = OptionDescription('od', '', [g1, g1])")
@ -250,12 +254,14 @@ def test_duplicated_option_diff_od():
d1 = OptionDescription('od1', '', [g1]) d1 = OptionDescription('od1', '', [g1])
#in different OptionDescription #in different OptionDescription
d2 = OptionDescription('od2', '', [g1, d1]) d2 = OptionDescription('od2', '', [g1, d1])
d2
raises(ConflictError, 'Config(d2)') raises(ConflictError, 'Config(d2)')
def test_cannot_assign_value_to_option_description(): def test_cannot_assign_value_to_option_description():
descr = make_description() descr = make_description()
cfg = Config(descr) cfg = Config(descr)
cfg
raises(TypeError, "cfg.gc = 3") raises(TypeError, "cfg.gc = 3")

View File

@ -1,5 +1,7 @@
"configuration objects global API" "configuration objects global API"
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.config import Config from tiramisu.config import Config
@ -197,6 +199,7 @@ def test_find_multi():
def test_does_not_find_in_config(): def test_does_not_find_in_config():
descr = make_description() descr = make_description()
conf = Config(descr) conf = Config(descr)
conf
raises(AttributeError, "conf.find(byname='IDontExist')") raises(AttributeError, "conf.find(byname='IDontExist')")
@ -266,14 +269,21 @@ def test_impl_getpaths():
def test_invalid_option(): def test_invalid_option():
ChoiceOption('a', '', ('1', '2'))
raises(TypeError, "ChoiceOption('a', '', [1, 2])") raises(TypeError, "ChoiceOption('a', '', [1, 2])")
raises(TypeError, "ChoiceOption('a', '', 1)") raises(TypeError, "ChoiceOption('a', '', 1)")
raises(ValueError, "ChoiceOption('a', '', (1,), 3)") raises(ValueError, "ChoiceOption('a', '', (1,), 3)")
FloatOption('a', '')
raises(ValueError, "FloatOption('a', '', 'string')") raises(ValueError, "FloatOption('a', '', 'string')")
UnicodeOption('a', '')
raises(ValueError, "UnicodeOption('a', '', 1)") raises(ValueError, "UnicodeOption('a', '', 1)")
u = UnicodeOption('a', '')
SymLinkOption('a', u)
raises(ValueError, "SymLinkOption('a', 'string')") raises(ValueError, "SymLinkOption('a', 'string')")
IPOption('a', '')
raises(ValueError, "IPOption('a', '', 1)") raises(ValueError, "IPOption('a', '', 1)")
raises(ValueError, "IPOption('a', '', 'string')") raises(ValueError, "IPOption('a', '', 'string')")
PortOption('a', '')
raises(ValueError, "PortOption('a', '', 'string')") raises(ValueError, "PortOption('a', '', 'string')")
raises(ValueError, "PortOption('a', '', '11:12:13', allow_range=True)") raises(ValueError, "PortOption('a', '', '11:12:13', allow_range=True)")
raises(ValueError, "PortOption('a', '', 11111111111111111111)") raises(ValueError, "PortOption('a', '', 11111111111111111111)")
@ -282,9 +292,13 @@ def test_invalid_option():
raises(ValueError, "PortOption('a', '', allow_zero=True, allow_wellknown=False, allow_registred=False, allow_private=True)") raises(ValueError, "PortOption('a', '', allow_zero=True, allow_wellknown=False, allow_registred=False, allow_private=True)")
raises(ValueError, "PortOption('a', '', allow_zero=True, allow_wellknown=False, allow_registred=True, allow_private=True)") raises(ValueError, "PortOption('a', '', allow_zero=True, allow_wellknown=False, allow_registred=True, allow_private=True)")
raises(ValueError, "PortOption('a', '', allow_zero=False, allow_wellknown=False, allow_registred=False, allow_private=False)") raises(ValueError, "PortOption('a', '', allow_zero=False, allow_wellknown=False, allow_registred=False, allow_private=False)")
NetworkOption('a', '')
raises(ValueError, "NetworkOption('a', '', 'string')") raises(ValueError, "NetworkOption('a', '', 'string')")
NetmaskOption('a', '')
raises(ValueError, "NetmaskOption('a', '', 'string')") raises(ValueError, "NetmaskOption('a', '', 'string')")
BroadcastOption('a', '')
raises(ValueError, "BroadcastOption('a', '', 'string')") raises(ValueError, "BroadcastOption('a', '', 'string')")
DomainnameOption('a', '')
raises(ValueError, "DomainnameOption('a', '', 'string')") raises(ValueError, "DomainnameOption('a', '', 'string')")
raises(ValueError, "DomainnameOption('a', '', type_='string')") raises(ValueError, "DomainnameOption('a', '', type_='string')")
raises(ValueError, "DomainnameOption('a', '', allow_ip='string')") raises(ValueError, "DomainnameOption('a', '', allow_ip='string')")

View File

@ -1,258 +0,0 @@
##just a proof of concept with a lot of options and option groups
#import autopath
#from tiramisu.config import *
#from tiramisu.option import *
#all_modules = ['amon', 'sphynx', 'zephir']
#example__optiondescription = OptionDescription("objspace", "Object Space Options", [
# ChoiceOption("name", "Object Space name",
# ["std", "flow", "thunk", "dump", "taint"],
# "std"),
# OptionDescription("opcodes", "opcodes to enable in the interpreter", [
# BoolOption("CALL_LIKELY_BUILTIN", "emit a special bytecode for likely calls to builtin functions",
# default=False,
# requires=[("translation.stackless", False)]),
# BoolOption("CALL_METHOD", "emit a special bytecode for expr.name()",
# default=False),
# ]),
# BoolOption("nofaking", "disallow faking in the object space",
# default=False,
# requires=[
# ("objspace.usemodules.posix", True),
# ("objspace.usemodules.time", True),
# ("objspace.usemodules.errno", True)],
# ),
# OptionDescription("usemodules", "Which Modules should be used", [
# BoolOption(modname, "use module %s" % (modname, ),
# default=True,
# requires= [('amon', False)],
# )
# for modname in all_modules]),
# BoolOption("allworkingmodules", "use as many working modules as possible",
# default=True,
# ),
# BoolOption("translationmodules",
# "use only those modules that are needed to run translate.py on pypy",
# default=False,
# ),
# BoolOption("geninterp", "specify whether geninterp should be used",
# default=True),
# BoolOption("logbytecodes",
# "keep track of bytecode usage",
# default=False),
# BoolOption("usepycfiles", "Write and read pyc files when importing",
# default=True),
# BoolOption("lonepycfiles", "Import pyc files with no matching py file",
# default=False,
# requires=[("objspace.usepycfiles", True)]),
# StrOption("soabi",
# "Tag to differentiate extension modules built for different Python interpreters",
# default=None),
# BoolOption("honor__builtins__",
# "Honor the __builtins__ key of a module dictionary",
# default=False),
# BoolOption("disable_call_speedhacks",
# "make sure that all calls go through space.call_args",
# default=False),
# BoolOption("timing",
# "timing of various parts of the interpreter (simple profiling)",
# default=False),
# OptionDescription("std", "Standard Object Space Options", [
# BoolOption("withtproxy", "support transparent proxies",
# default=True),
# BoolOption("withsmallint", "use tagged integers",
# default=False,
# requires=[("objspace.std.withprebuiltint", False),
# ("translation.taggedpointers", True)]),
# BoolOption("withprebuiltint", "prebuild commonly used int objects",
# default=False),
# IntOption("prebuiltintfrom", "lowest integer which is prebuilt",
# default=-5),
# IntOption("prebuiltintto", "highest integer which is prebuilt",
# default=100),
# BoolOption("withstrjoin", "use strings optimized for addition",
# default=False),
# BoolOption("withstrslice", "use strings optimized for slicing",
# default=False),
# BoolOption("withstrbuf", "use strings optimized for addition (ver 2)",
# default=False),
# BoolOption("withprebuiltchar",
# "use prebuilt single-character string objects",
# default=False),
# BoolOption("sharesmallstr",
# "always reuse the prebuilt string objects "
# "(the empty string and potentially single-char strings)",
# default=False),
# BoolOption("withrope", "use ropes as the string implementation",
# default=False,
# requires=[("objspace.std.withstrslice", False),
# ("objspace.std.withstrjoin", False),
# ("objspace.std.withstrbuf", False)],
# ),
# BoolOption("withropeunicode", "use ropes for the unicode implementation",
# default=False,
# requires=[("objspace.std.withrope", True)]),
# BoolOption("withcelldict",
# "use dictionaries that are optimized for being used as module dicts",
# default=False,
# requires=[("objspace.opcodes.CALL_LIKELY_BUILTIN", False),
# ("objspace.honor__builtins__", False)]),
# BoolOption("withdictmeasurement",
# "create huge files with masses of information "
# "about dictionaries",
# default=False),
# BoolOption("withmapdict",
# "make instances really small but slow without the JIT",
# default=False,
# requires=[("objspace.std.getattributeshortcut", True),
# ("objspace.std.withtypeversion", True),
# ]),
# BoolOption("withrangelist",
# "enable special range list implementation that does not "
# "actually create the full list until the resulting "
# "list is mutated",
# default=False),
# BoolOption("withtypeversion",
# "version type objects when changing them",
# default=False,
# # weakrefs needed, because of get_subclasses()
# requires=[("translation.rweakref", True)]),
# BoolOption("withmethodcache",
# "try to cache method lookups",
# default=False,
# requires=[("objspace.std.withtypeversion", True),
# ("translation.rweakref", True)]),
# BoolOption("withmethodcachecounter",
# "try to cache methods and provide a counter in __pypy__. "
# "for testing purposes only.",
# default=False,
# requires=[("objspace.std.withmethodcache", True)]),
# IntOption("methodcachesizeexp",
# " 2 ** methodcachesizeexp is the size of the of the method cache ",
# default=11),
# BoolOption("optimized_int_add",
# "special case the addition of two integers in BINARY_ADD",
# default=False),
# BoolOption("optimized_comparison_op",
# "special case the comparison of integers",
# default=False),
# BoolOption("optimized_list_getitem",
# "special case the 'list[integer]' expressions",
# default=False),
# BoolOption("builtinshortcut",
# "a shortcut for operations between built-in types",
# default=False),
# BoolOption("getattributeshortcut",
# "track types that override __getattribute__",
# default=False),
# BoolOption("newshortcut",
# "cache and shortcut calling __new__ from builtin types",
# default=False),
# BoolOption("logspaceoptypes",
# "a instrumentation option: before exit, print the types seen by "
# "certain simpler bytecodes",
# default=False),
# ChoiceOption("multimethods", "the multimethod implementation to use",
# ["doubledispatch", "mrd"],
# default="mrd"),
# BoolOption("immutable_builtintypes",
# "Forbid the changing of builtin types", default=True),
# ]),
#])
## ____________________________________________________________
#def get_combined_translation_config(other_optdescr=None,
# existing_config=None,
# overrides=None,
# translating=False):
# if overrides is None:
# overrides = {}
# d = BoolOption("translating",
# "indicates whether we are translating currently",
# default=False)
# if other_optdescr is None:
# children = []
# newname = ""
# else:
# children = [other_optdescr]
# newname = other_optdescr._name
# descr = OptionDescription("eole", "all options", children)
# config = Config(descr, **overrides)
# if translating:
# config.translating = True
# if existing_config is not None:
# for child in existing_config._cfgimpl_descr._children:
# if child._name == newname:
# continue
# value = getattr(existing_config, child._name)
# config._cfgimpl_values[child._name] = value
# return config
#def get_example_config(overrides=None, translating=False):
# return get_combined_translation_config(
# example__optiondescription, overrides=overrides,
# translating=translating)
## ____________________________________________________________
#def test_example_option():
# config = get_example_config()
# result = ['objspace.name', 'objspace.opcodes.CALL_LIKELY_BUILTIN',
# 'objspace.opcodes.CALL_METHOD', 'objspace.nofaking',
# 'objspace.usemodules.amon', 'objspace.usemodules.sphynx',
# 'objspace.usemodules.zephir', 'objspace.allworkingmodules',
# 'objspace.translationmodules', 'objspace.geninterp',
# 'objspace.logbytecodes', 'objspace.usepycfiles', 'objspace.lonepycfiles',
# 'objspace.soabi', 'objspace.honor__builtins__',
# 'objspace.disable_call_speedhacks', 'objspace.timing',
# 'objspace.std.withtproxy', 'objspace.std.withsmallint',
# 'objspace.std.withprebuiltint', 'objspace.std.prebuiltintfrom',
# 'objspace.std.prebuiltintto', 'objspace.std.withstrjoin',
# 'objspace.std.withstrslice', 'objspace.std.withstrbuf',
# 'objspace.std.withprebuiltchar', 'objspace.std.sharesmallstr',
# 'objspace.std.withrope', 'objspace.std.withropeunicode',
# 'objspace.std.withcelldict', 'objspace.std.withdictmeasurement',
# 'objspace.std.withmapdict', 'objspace.std.withrangelist',
# 'objspace.std.withtypeversion', 'objspace.std.withmethodcache',
# 'objspace.std.withmethodcachecounter', 'objspace.std.methodcachesizeexp',
# 'objspace.std.optimized_int_add', 'objspace.std.optimized_comparison_op',
# 'objspace.std.optimized_list_getitem', 'objspace.std.builtinshortcut',
# 'objspace.std.getattributeshortcut', 'objspace.std.newshortcut',
# 'objspace.std.logspaceoptypes', 'objspace.std.multimethods',
# 'objspace.std.immutable_builtintypes']
# assert config.getpaths(allpaths=True) == result

View File

@ -1,4 +1,6 @@
import autopath from autopath import do_autopath
do_autopath()
import warnings import warnings
from py.test import raises from py.test import raises

View File

@ -1,4 +1,6 @@
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.config import Config from tiramisu.config import Config
from tiramisu.option import IPOption, NetworkOption, NetmaskOption, \ from tiramisu.option import IPOption, NetworkOption, NetmaskOption, \
@ -27,6 +29,7 @@ def test_ip():
c = Config(od) c = Config(od)
raises(ValueError, "c.a = '192.000.023.01'") raises(ValueError, "c.a = '192.000.023.01'")
def test_ip_default(): def test_ip_default():
a = IPOption('a', '', '88.88.88.88') a = IPOption('a', '', '88.88.88.88')
od = OptionDescription('od', '', [a]) od = OptionDescription('od', '', [a])

View File

@ -1,6 +1,6 @@
# coding: utf-8 # coding: utf-8
import autopath from autopath import do_autopath
#from py.test import raises do_autopath()
from tiramisu.config import Config, GroupConfig, MetaConfig from tiramisu.config import Config, GroupConfig, MetaConfig
from tiramisu.option import BoolOption, IntOption, StrOption, OptionDescription, submulti from tiramisu.option import BoolOption, IntOption, StrOption, OptionDescription, submulti
@ -9,6 +9,7 @@ import weakref
IS_DEREFABLE = True IS_DEREFABLE = True
def test_deref_storage(): def test_deref_storage():
b = BoolOption('b', '') b = BoolOption('b', '')
o = OptionDescription('od', '', [b]) o = OptionDescription('od', '', [b])

View File

@ -1,5 +1,6 @@
# coding: utf-8 # coding: utf-8
import autopath from autopath import do_autopath
do_autopath()
from tiramisu.setting import groups, owners from tiramisu.setting import groups, owners
from tiramisu.option import BoolOption, StrOption, ChoiceOption, IPOption, \ from tiramisu.option import BoolOption, StrOption, ChoiceOption, IPOption, \
@ -85,6 +86,7 @@ def test_unknown_dyndescription():
od = OptionDescription('od', '', [dod]) od = OptionDescription('od', '', [dod])
od2 = OptionDescription('od', '', [od]) od2 = OptionDescription('od', '', [od])
cfg = Config(od2) cfg = Config(od2)
cfg
raises(AttributeError, "cfg.od.dodval3") raises(AttributeError, "cfg.od.dodval3")
raises(AttributeError, "cfg.od.dodval1.novalue") raises(AttributeError, "cfg.od.dodval1.novalue")
@ -711,6 +713,7 @@ def test_consistency_external_dyndescription():
st2 = StrOption('st2', '') st2 = StrOption('st2', '')
dod = DynOptionDescription('dod', '', [st1, st2], callback=return_list) dod = DynOptionDescription('dod', '', [st1, st2], callback=return_list)
od = OptionDescription('od', '', [dod, st]) od = OptionDescription('od', '', [dod, st])
od
raises(ConfigError, "st.impl_add_consistency('not_equal', st2)") raises(ConfigError, "st.impl_add_consistency('not_equal', st2)")
@ -722,6 +725,7 @@ def test_consistency_notsame_dyndescription():
tst2 = StrOption('tst2', '') tst2 = StrOption('tst2', '')
tdod = DynOptionDescription('tdod', '', [tst1, tst2], callback=return_list) tdod = DynOptionDescription('tdod', '', [tst1, tst2], callback=return_list)
od = OptionDescription('od', '', [dod, tdod]) od = OptionDescription('od', '', [dod, tdod])
od
raises(ConfigError, "st1.impl_add_consistency('not_equal', tst1)") raises(ConfigError, "st1.impl_add_consistency('not_equal', tst1)")
@ -1279,30 +1283,35 @@ def test_invalid_conflict_dyndescription():
st = StrOption('st', '') st = StrOption('st', '')
dod = DynOptionDescription('dod', '', [st], callback=return_list) dod = DynOptionDescription('dod', '', [st], callback=return_list)
dodinvalid = StrOption('dodinvalid', '') dodinvalid = StrOption('dodinvalid', '')
dod, dodinvalid
raises(ConflictError, "OptionDescription('od', '', [dod, dodinvalid])") raises(ConflictError, "OptionDescription('od', '', [dod, dodinvalid])")
def test_invalid_subod_dyndescription(): def test_invalid_subod_dyndescription():
st2 = StrOption('st2', '') st2 = StrOption('st2', '')
od1 = OptionDescription('od1', '', [st2]) od1 = OptionDescription('od1', '', [st2])
od1
raises(ConfigError, "DynOptionDescription('dod', '', [od1], callback=return_list)") raises(ConfigError, "DynOptionDescription('dod', '', [od1], callback=return_list)")
def test_invalid_subdynod_dyndescription(): def test_invalid_subdynod_dyndescription():
st2 = StrOption('st2', '') st2 = StrOption('st2', '')
od1 = DynOptionDescription('od1', '', [st2], callback=return_list) od1 = DynOptionDescription('od1', '', [st2], callback=return_list)
od1
raises(ConfigError, "DynOptionDescription('dod', '', [od1], callback=return_list)") raises(ConfigError, "DynOptionDescription('dod', '', [od1], callback=return_list)")
def test_invalid_symlink_dyndescription(): def test_invalid_symlink_dyndescription():
st = StrOption('st', '') st = StrOption('st', '')
st2 = SymLinkOption('st2', st) st2 = SymLinkOption('st2', st)
st2
raises(ConfigError, "DynOptionDescription('dod', '', [st, st2], callback=return_list)") raises(ConfigError, "DynOptionDescription('dod', '', [st, st2], callback=return_list)")
def test_nocallback_dyndescription(): def test_nocallback_dyndescription():
st = StrOption('st', '') st = StrOption('st', '')
st2 = StrOption('st2', '') st2 = StrOption('st2', '')
st, st2
raises(ConfigError, "DynOptionDescription('dod', '', [st, st2])") raises(ConfigError, "DynOptionDescription('dod', '', [st, st2])")
@ -1311,6 +1320,7 @@ def test_invalid_samevalue_dyndescription():
dod = DynOptionDescription('dod', '', [st], callback=return_same_list) dod = DynOptionDescription('dod', '', [st], callback=return_same_list)
od = OptionDescription('od', '', [dod]) od = OptionDescription('od', '', [dod])
cfg = Config(od) cfg = Config(od)
cfg
raises(ConfigError, "print cfg") raises(ConfigError, "print cfg")
@ -1319,4 +1329,5 @@ def test_invalid_name_dyndescription():
dod = DynOptionDescription('dod', '', [st], callback=return_wrong_list) dod = DynOptionDescription('dod', '', [st], callback=return_wrong_list)
od = OptionDescription('od', '', [dod]) od = OptionDescription('od', '', [dod])
cfg = Config(od) cfg = Config(od)
cfg
raises(ValueError, "print cfg") raises(ValueError, "print cfg")

View File

@ -1,6 +1,7 @@
# coding: utf-8 # coding: utf-8
"frozen and hidden values" "frozen and hidden values"
import autopath from autopath import do_autopath
do_autopath()
from tiramisu.setting import owners from tiramisu.setting import owners
from tiramisu.option import ChoiceOption, BoolOption, IntOption, FloatOption, \ from tiramisu.option import ChoiceOption, BoolOption, IntOption, FloatOption, \

View File

@ -1,4 +1,6 @@
import autopath from autopath import do_autopath
do_autopath()
from time import sleep from time import sleep
#from py.test import raises #from py.test import raises

View File

@ -1,4 +1,5 @@
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
@ -177,6 +178,7 @@ def test_not_meta():
conf2 = Config(od2, name='conf2') conf2 = Config(od2, name='conf2')
conf3 = Config(od2) conf3 = Config(od2)
conf4 = Config(od2, name='conf2') conf4 = Config(od2, name='conf2')
conf3, conf4
raises(ValueError, "GroupConfig(conf1)") raises(ValueError, "GroupConfig(conf1)")
#same name #same name
raises(ConflictError, "GroupConfig([conf2, conf4])") raises(ConflictError, "GroupConfig([conf2, conf4])")
@ -215,6 +217,7 @@ def test_meta_unconsistent():
conf2 = Config(od2, name='conf2') conf2 = Config(od2, name='conf2')
conf3 = Config(od2, name='conf3') conf3 = Config(od2, name='conf3')
conf4 = Config(od1, name='conf4') conf4 = Config(od1, name='conf4')
conf3, conf4
meta = MetaConfig([conf1, conf2]) meta = MetaConfig([conf1, conf2])
meta.cfgimpl_get_settings().setowner(owners.meta) meta.cfgimpl_get_settings().setowner(owners.meta)
raises(TypeError, 'MetaConfig("string")') raises(TypeError, 'MetaConfig("string")')

View File

@ -1,5 +1,7 @@
# coding: utf-8 # coding: utf-8
import autopath from autopath import do_autopath
do_autopath()
from tiramisu.value import Multi from tiramisu.value import Multi
from tiramisu.option import IntOption, OptionDescription from tiramisu.option import IntOption, OptionDescription
from tiramisu.config import Config from tiramisu.config import Config
@ -13,7 +15,7 @@ def test_multi():
i = IntOption('int', '', multi=True) i = IntOption('int', '', multi=True)
o = OptionDescription('od', '', [i]) o = OptionDescription('od', '', [i])
c = Config(o) c = Config(o)
multi = Multi([1,2,3], weakref.ref(c), i, 'int') multi = Multi([1, 2, 3], weakref.ref(c), i, 'int')
raises(ValueError, "Multi([1,2,3], c, i, 'int')") raises(ValueError, "Multi([1,2,3], c, i, 'int')")
raises(ValueError, "Multi(multi, weakref.ref(c), i, 'int')") raises(ValueError, "Multi(multi, weakref.ref(c), i, 'int')")
assert c is multi._getcontext() assert c is multi._getcontext()

View File

@ -1,7 +1,9 @@
"""these tests are here to create some :class:`tiramisu.option.Option`'s """these tests are here to create some :class:`tiramisu.option.Option`'s
and to compare them and to compare them
""" """
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.option import IntOption, OptionDescription from tiramisu.option import IntOption, OptionDescription

View File

@ -1,4 +1,6 @@
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.config import Config from tiramisu.config import Config

View File

@ -1,4 +1,6 @@
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.setting import owners, groups from tiramisu.setting import owners, groups

View File

@ -1,5 +1,7 @@
"test all types of option default values for options, add new option in a descr" "test all types of option default values for options, add new option in a descr"
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.config import Config from tiramisu.config import Config

View File

@ -1,4 +1,6 @@
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.setting import owners from tiramisu.setting import owners

View File

@ -1,5 +1,7 @@
"config.set() or config.setoption() or option.setoption()" "config.set() or config.setoption() or option.setoption()"
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.setting import owners from tiramisu.setting import owners

View File

@ -1,6 +1,8 @@
# coding: utf-8 # coding: utf-8
"frozen and hidden values" "frozen and hidden values"
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.config import Config from tiramisu.config import Config

View File

@ -1,5 +1,7 @@
"configuration objects global API" "configuration objects global API"
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.config import Config from tiramisu.config import Config

View File

@ -1,4 +1,6 @@
import autopath from autopath import do_autopath
do_autopath()
import warnings import warnings
from py.test import raises from py.test import raises

View File

@ -1,5 +1,7 @@
#this test is much more to test that **it's there** and answers attribute access #this test is much more to test that **it's there** and answers attribute access
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.config import Config from tiramisu.config import Config

View File

@ -1,5 +1,7 @@
# coding: utf-8 # coding: utf-8
import autopath from autopath import do_autopath
do_autopath()
from tiramisu.setting import groups, owners from tiramisu.setting import groups, owners
from tiramisu.config import Config from tiramisu.config import Config
from tiramisu.option import ChoiceOption, BoolOption, IntOption, \ from tiramisu.option import ChoiceOption, BoolOption, IntOption, \

View File

@ -1,5 +1,7 @@
# coding: utf-8 # coding: utf-8
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.option import IntOption, OptionDescription from tiramisu.option import IntOption, OptionDescription

View File

@ -1,5 +1,7 @@
# coding: utf-8 # coding: utf-8
import autopath from autopath import do_autopath
do_autopath()
from copy import copy from copy import copy
from tiramisu import setting from tiramisu import setting
setting.expires_time = 1 setting.expires_time = 1

View File

@ -1,42 +0,0 @@
#import autopath
#from py.test import raises
#from tool import reverse_from_paths
#def make_description():
# gcoption = ChoiceOption('name', 'GC name', ['ref', 'framework'], 'ref')
# gcdummy = BoolOption('dummy', 'dummy', default=False)
# objspaceoption = ChoiceOption('objspace', 'Object space',
# ['std', 'thunk'], 'std')
# booloption = BoolOption('bool', 'Test boolean option', default=True)
# intoption = IntOption('int', 'Test int option', default=0)
# floatoption = FloatOption('float', 'Test float option', default=2.3)
# stroption = StrOption('str', 'Test string option', default="abc")
# boolop = BoolOption('boolop', 'Test boolean option op', default=True)
# wantref_option = BoolOption('wantref', 'Test requires', default=False)
# wantframework_option = BoolOption('wantframework', 'Test requires',
# default=False)
#
# gcgroup = OptionDescription('gc', '', [gcoption, gcdummy, floatoption])
# descr = OptionDescription('tiram', '', [gcgroup, booloption, objspaceoption,
# wantref_option, stroption,
# wantframework_option,
# intoption, boolop])
# return descr
#def test_rebuild():
# # pouvoir faire une comparaison avec equal
# d = {"s1.s2.s3.s4.a": True, "int": 43, "s2.b":True, "s3.c": True, "s3.d":[1,2,3]}
# cfg = reverse_from_paths(d)
# assert cfg.s1.s2.s3.s4.a == True
# assert cfg.int == 43
# assert cfg.s2.b == True
# assert cfg.s3.c == True
# assert cfg.s3.d == [1,2,3]
# assert config.getpaths() == ['gc.name', 'gc.dummy', 'gc.float', 'bool',
# 'objspace', 'wantref', 'str', 'wantframework',
# 'int', 'boolop']
# assert config.getpaths(include_groups=False) == ['gc.name', 'gc.dummy', 'gc.float', 'bool', 'objspace', 'wantref', 'str', 'wantframework', 'int', 'boolop']
# assert config.getpaths(include_groups=True) == ['gc', 'gc.name', 'gc.dummy', 'gc.float', 'bool', 'objspace', 'wantref', 'str', 'wantframework', 'int', 'boolop']

View File

@ -1,5 +1,7 @@
## coding: utf-8 ## coding: utf-8
import autopath from autopath import do_autopath
do_autopath()
from py.test import raises from py.test import raises
from tiramisu.config import Config, SubConfig from tiramisu.config import Config, SubConfig
@ -110,6 +112,7 @@ def test_slots_option_readonly_name():
p = DomainnameOption('p', '') p = DomainnameOption('p', '')
q = DomainnameOption('q', '') q = DomainnameOption('q', '')
m = OptionDescription('m', '', [a, b, c, d, e, f, g, h, i, j, k, l, o, p, q]) m = OptionDescription('m', '', [a, b, c, d, e, f, g, h, i, j, k, l, o, p, q])
m
raises(AttributeError, "a._name = 'a'") raises(AttributeError, "a._name = 'a'")
raises(AttributeError, "b._name = 'b'") raises(AttributeError, "b._name = 'b'")
raises(AttributeError, "c._name = 'c'") raises(AttributeError, "c._name = 'c'")
@ -154,6 +157,7 @@ def test_slots_setting():
od2 = OptionDescription('a', '', [od1]) od2 = OptionDescription('a', '', [od1])
c = Config(od2) c = Config(od2)
s = c.cfgimpl_get_settings() s = c.cfgimpl_get_settings()
s
raises(AttributeError, "s.x = 1") raises(AttributeError, "s.x = 1")
@ -162,4 +166,5 @@ def test_slots_value():
od2 = OptionDescription('a', '', [od1]) od2 = OptionDescription('a', '', [od1])
c = Config(od2) c = Config(od2)
v = c.cfgimpl_get_values() v = c.cfgimpl_get_values()
v
raises(AttributeError, "v.x = 1") raises(AttributeError, "v.x = 1")

View File

@ -1,4 +1,5 @@
import autopath from autopath import do_autopath
do_autopath()
from tiramisu.option import BoolOption, UnicodeOption, SymLinkOption, \ from tiramisu.option import BoolOption, UnicodeOption, SymLinkOption, \
IntOption, IPOption, NetmaskOption, StrOption, OptionDescription, \ IntOption, IPOption, NetmaskOption, StrOption, OptionDescription, \
@ -53,7 +54,7 @@ def _diff_opt(opt1, opt2):
try: try:
val1 = getattr(opt1, attr) val1 = getattr(opt1, attr)
msg1 = "exists" msg1 = "exists"
except Exception, err: except:
err1 = True err1 = True
msg1 = "not exists" msg1 = "not exists"
@ -189,6 +190,7 @@ def test_diff_opt():
def test_only_optiondescription(): def test_only_optiondescription():
b = BoolOption('b', '') b = BoolOption('b', '')
b
raises(SystemError, "a = dumps(b)") raises(SystemError, "a = dumps(b)")

View File

@ -1,5 +1,7 @@
# coding: utf-8 # coding: utf-8
import autopath from autopath import do_autopath
do_autopath()
#from py.test import raises #from py.test import raises
from tiramisu.config import Config from tiramisu.config import Config

View File

@ -1,5 +1,7 @@
# coding: utf-8 # coding: utf-8
import autopath from autopath import do_autopath
do_autopath()
from tiramisu.setting import groups, owners from tiramisu.setting import groups, owners
from tiramisu.config import Config from tiramisu.config import Config
from tiramisu.option import StrOption, OptionDescription, submulti from tiramisu.option import StrOption, OptionDescription, submulti

View File

@ -1,5 +1,6 @@
# coding: utf-8 # coding: utf-8
import autopath from autopath import do_autopath
do_autopath()
from tiramisu.option import BoolOption, StrOption, SymLinkOption, \ from tiramisu.option import BoolOption, StrOption, SymLinkOption, \
OptionDescription OptionDescription
@ -109,6 +110,7 @@ def test_symlink_master():
ip_admin_eth0 = SymLinkOption('ip_admin_eth0', a) ip_admin_eth0 = SymLinkOption('ip_admin_eth0', a)
netmask_admin_eth0 = StrOption('netmask_admin_eth0', "", multi=True) netmask_admin_eth0 = StrOption('netmask_admin_eth0', "", multi=True)
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0]) interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
interface1
raises(ValueError, 'interface1.impl_set_group_type(groups.master)') raises(ValueError, 'interface1.impl_set_group_type(groups.master)')
@ -117,4 +119,5 @@ def test_symlink_slaves():
ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé", multi=True) ip_admin_eth0 = StrOption('ip_admin_eth0', "ip réseau autorisé", multi=True)
netmask_admin_eth0 = SymLinkOption('netmask_admin_eth0', a) netmask_admin_eth0 = SymLinkOption('netmask_admin_eth0', a)
interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0]) interface1 = OptionDescription('ip_admin_eth0', '', [ip_admin_eth0, netmask_admin_eth0])
interface1
raises(ValueError, 'interface1.impl_set_group_type(groups.master)') raises(ValueError, 'interface1.impl_set_group_type(groups.master)')

View File

@ -20,7 +20,6 @@
# ____________________________________________________________ # ____________________________________________________________
"options handler global entry point" "options handler global entry point"
import weakref import weakref
from copy import copy
from tiramisu.error import PropertiesOptionError, ConfigError, ConflictError from tiramisu.error import PropertiesOptionError, ConfigError, ConflictError
@ -603,9 +602,16 @@ class _CommonConfig(SubConfig):
fake_config = Config(self._impl_descr, persistent=False, fake_config = Config(self._impl_descr, persistent=False,
force_storages=get_storages_validation(), force_storages=get_storages_validation(),
force_settings=self.cfgimpl_get_settings()) force_settings=self.cfgimpl_get_settings())
fake_config.cfgimpl_get_values()._p_._values = copy(self.cfgimpl_get_values()._p_.get_modified_values()) fake_config.cfgimpl_get_values()._p_._values = self.cfgimpl_get_values()._p_.get_modified_values()
return fake_config return fake_config
def duplicate(self):
config = Config(self._impl_descr)
config.cfgimpl_get_values()._p_._values = self.cfgimpl_get_values()._p_.get_modified_values()
config.cfgimpl_get_settings()._p_._properties = self.cfgimpl_get_settings()._p_.get_modified_properties()
config.cfgimpl_get_settings()._p_._permissives = self.cfgimpl_get_settings()._p_.get_modified_permissives()
return config
# ____________________________________________________________ # ____________________________________________________________
class Config(_CommonConfig): class Config(_CommonConfig):

View File

@ -302,6 +302,10 @@ class OptionDescription(BaseOption, StorageOptionDescription):
def __getattr__(self, name, context=undefined): def __getattr__(self, name, context=undefined):
if name.startswith('_'): # or name.startswith('impl_'): if name.startswith('_'): # or name.startswith('impl_'):
return object.__getattribute__(self, name) return object.__getattribute__(self, name)
if '.' in name:
path = name.split('.')[0]
subpath = '.'.join(name.split('.')[1:])
return self.__getattr__(path, context=context).__getattr__(subpath, context=context)
return self._getattr(name, context=context) return self._getattr(name, context=context)

View File

@ -15,6 +15,7 @@
# You should have received a copy of the GNU Lesser General Public License # You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# ____________________________________________________________ # ____________________________________________________________
from copy import copy
from ..util import Cache from ..util import Cache
@ -58,10 +59,10 @@ class Settings(Cache):
"""return all modified settings in a dictionary """return all modified settings in a dictionary
example: {'path1': set(['prop1', 'prop2'])} example: {'path1': set(['prop1', 'prop2'])}
""" """
return self._properties return copy(self._properties)
def get_modified_permissives(self): def get_modified_permissives(self):
"""return all modified permissives in a dictionary """return all modified permissives in a dictionary
example: {'path1': set(['perm1', 'perm2'])} example: {'path1': set(['perm1', 'perm2'])}
""" """
return self._permissives return copy(self._permissives)

View File

@ -15,7 +15,7 @@
# You should have received a copy of the GNU Lesser General Public License # You should have received a copy of the GNU Lesser General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# ____________________________________________________________ # ____________________________________________________________
from copy import copy
from ..util import Cache from ..util import Cache
@ -58,7 +58,7 @@ class Values(Cache):
"""return all values in a dictionary """return all values in a dictionary
example: {'path1': (owner, 'value1'), 'path2': (owner, 'value2')} example: {'path1': (owner, 'value1'), 'path2': (owner, 'value2')}
""" """
return self._values return copy(self._values)
# owner # owner
def setowner(self, path, owner): def setowner(self, path, owner):