[tor-commits] [stem/master] Configuration parse_enum() function

atagar at torproject.org atagar at torproject.org
Tue Jan 1 23:20:29 UTC 2013


commit 2b43313d72c4a73ff5055e2bf5c5b162d8f1f4b6
Author: Damian Johnson <atagar at torproject.org>
Date:   Tue Jan 1 13:04:56 2013 -0800

    Configuration parse_enum() function
    
    Convenience function to do the same thing as parse_enum_csv() but for a single
    enum value.
---
 stem/util/conf.py      |   16 ++++++++++++++++
 test/unit/util/conf.py |   12 +++++++++++-
 2 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/stem/util/conf.py b/stem/util/conf.py
index 408b165..21106bf 100644
--- a/stem/util/conf.py
+++ b/stem/util/conf.py
@@ -194,6 +194,22 @@ def get_config(handle):
   if not handle in CONFS: CONFS[handle] = Config()
   return CONFS[handle]
 
+def parse_enum(key, value, enumeration):
+  """
+  Provides the enumeration value for a given key. This is a case insensitive
+  lookup and raises an exception if the enum key doesn't exist.
+  
+  :param str key: configuration key being looked up
+  :param str value: value to be parsed
+  :param stem.util.enum.Enum enumeration: enumeration the values should be in
+  
+  :returns: enumeration value
+  
+  :raises: **ValueError** if the **value** isn't among the enumeration keys
+  """
+  
+  return parse_enum_csv(key, value, enumeration, 1)[0]
+
 def parse_enum_csv(key, value, enumeration, count = None):
   """
   Parses a given value as being a comma separated listing of enumeration keys,
diff --git a/test/unit/util/conf.py b/test/unit/util/conf.py
index 25d312e..36afe10 100644
--- a/test/unit/util/conf.py
+++ b/test/unit/util/conf.py
@@ -7,7 +7,7 @@ import unittest
 import stem.util.conf
 import stem.util.enum
 
-from stem.util.conf import parse_enum_csv
+from stem.util.conf import parse_enum, parse_enum_csv
 
 class TestConf(unittest.TestCase):
   def tearDown(self):
@@ -53,6 +53,16 @@ class TestConf(unittest.TestCase):
     test_config.set("list_value", "c", False)
     self.assertEquals(["a", "b", "c"], my_config["list_value"])
   
+  def test_parse_enum(self):
+    """
+    Tests the parse_enum function.
+    """
+    
+    Insects = stem.util.enum.Enum("BUTTERFLY", "LADYBUG", "CRICKET")
+    self.assertEqual(Insects.LADYBUG, parse_enum("my_option", "ladybug", Insects))
+    self.assertRaises(ValueError, parse_enum, "my_option", "ugabuga", Insects)
+    self.assertRaises(ValueError, parse_enum, "my_option", "ladybug, cricket", Insects)
+  
   def test_parse_enum_csv(self):
     """
     Tests the parse_enum_csv function.





More information about the tor-commits mailing list