From 41e1e7521142a7e061ff4904fafc46ba71ea7d5f Mon Sep 17 00:00:00 2001 From: Stefan Hacker Date: Mon, 20 Dec 2010 14:19:55 +0100 Subject: [PATCH] Add commaSeperatedIntegers/commaSeperatedStrings validator functions to configuration. Rename testsuite collection test.py to testsuite.py to prevent name collision with test module test.py --- config.py | 18 +++++++++++++++++- config_test.py | 9 ++++++++- mumo.py | 6 ++++-- mumo_module.py | 6 +++++- test.py => testsuite.py | 0 5 files changed, 34 insertions(+), 5 deletions(-) rename test.py => testsuite.py (100%) diff --git a/config.py b/config.py index 838d570..4459014 100644 --- a/config.py +++ b/config.py @@ -87,9 +87,25 @@ class Config(object): self.__dict__[section].__dict__[name] = vdefault def x2bool(s): - """Helper function to convert strings from the config to bool""" + """ + Helper function to convert strings from the config to bool + """ if isinstance(s, bool): return s elif isinstance(s, basestring): return s.lower() in ['1', 'true'] raise ValueError() + +def commaSeperatedIntegers(s): + """ + Helper function to convert a string from the config + containing comma seperated integers into a list of integers + """ + return map(int, s.split(',')) + +def commaSeperatedStrings(s): + """ + Helper function to convert a string from the config + containing comma seperated strings into a list of strings + """ + return map(str.strip, s.split(',')) diff --git a/config_test.py b/config_test.py index 6f9bbc0..0c181c4 100644 --- a/config_test.py +++ b/config_test.py @@ -30,7 +30,7 @@ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. import unittest -from config import Config, x2bool +from config import Config, x2bool, commaSeperatedIntegers, commaSeperatedStrings from tempfile import mkstemp import os import re @@ -97,6 +97,13 @@ value = True assert(x2bool("10") == False) assert(x2bool("notabool") == False) + def testCommaSeperatedIntegers(self): + assert(commaSeperatedIntegers(" 1,2 , 333 ") == [1,2,333]) + self.assertRaises(ValueError, commaSeperatedIntegers, "1,2,a") + + def testCommaSeperatedStrings(self): + assert(commaSeperatedStrings("Bernd, the, bred !") == ["Bernd", "the", "bred !"]) + def testConfig(self): path = create_file(self.cfg_content) try: diff --git a/mumo.py b/mumo.py index 7ad50f6..5281402 100644 --- a/mumo.py +++ b/mumo.py @@ -32,7 +32,9 @@ import sys import Ice import logging -from config import Config, x2bool +from config import (Config, + x2bool, + commaSeperatedIntegers) from threading import Timer from optparse import OptionParser @@ -57,7 +59,7 @@ default.update({'ice':(('host', str, '127.0.0.1'), ('watchdog', int, 30)), 'iceraw':None, - 'murmur':(('servers', lambda x:map(int, x.split(',')), []),), + 'murmur':(('servers', commaSeperatedIntegers, []),), 'log':(('level', int, logging.DEBUG), ('file', str, 'mumo.log'))}) diff --git a/mumo_module.py b/mumo_module.py index 1956971..fb93acf 100644 --- a/mumo_module.py +++ b/mumo_module.py @@ -29,7 +29,11 @@ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -from config import Config, x2bool +from config import (Config, + x2bool, + commaSeperatedIntegers, + commaSeperatedStrings) + from worker import Worker class MumoModule(Worker): diff --git a/test.py b/testsuite.py similarity index 100% rename from test.py rename to testsuite.py