Ejemplo n.º 1
0
 def test__update_should_handle_dots_appropriately(self):
     init = self.__class__.test_parameters
     P = ConfigParserParameterSet(init)
     P.update({"sectionA.a": 5, "sectionA.c": 4, "sectionC.e": 9})
     self.assertEqual(P.as_dict(), {"sectionA": dict(a="5", b="3", c="4"),
                                    "sectionB": dict(c="hello", d="world"),
                                    "sectionC": dict(e="9")})
Ejemplo n.º 2
0
 def test__update_should_handle_dots_appropriately(self):
     init = self.__class__.test_parameters
     P = ConfigParserParameterSet(init)
     P.update({"sectionA.a": 5, "sectionA.c": 4, "sectionC.e": 9})
     self.assertEqual(
         P.as_dict(), {
             "sectionA": dict(a="5", b="3", c="4"),
             "sectionB": dict(c="hello", d="world"),
             "sectionC": dict(e="9")
         })
Ejemplo n.º 3
0
class ArgumentParsingTests(unittest.TestCase):

    def setUp(self):
        ## setup parsets with legal params
        self.PSETS = [SimpleParameterSet(""), JSONParameterSet("")]
        try:
            self.PSETS.append(YAMLParameterSet(""))
        except ImportError:
            pass
        self.PConfigParser = ConfigParserParameterSet("")
        for k in ('a', 'b', 'c', 'd', 'l', 'save'):
            up_dict = {k: 1}
            self.PConfigParser.update(up_dict)
            for P in self.PSETS:
                P.update(up_dict)

    def test_parse_command_line_parameter_arg_must_contain_equals(self):
        for P in self.PSETS:
            self.assertRaises(Exception, P.parse_command_line_parameter, "foobar")

    def test_parse_command_line_parameter_with_int(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("a=2")
            self.assertEqual(result, {'a': 2})
            assert isinstance(result['a'], int)

    def test_parse_command_line_parameter_with_float(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("b=2.0")
            self.assertEqual(result, {'b': 2.0})
            assert isinstance(result['b'], float)

    def test_parse_command_line_parameter_warns(self):
        ## but still returns name and value with ValueError
        for P in self.PSETS:
            self.assertRaises(ValueError, P.parse_command_line_parameter, "bt=2")
            try:
                P.parse_command_line_parameter("bt=2")
            except ValueError as v:
                message, name, value = v.args
                self.assertEqual(message, '')
                self.assertEqual(name, 'bt')
                self.assertEqual(value, 2)
                assert isinstance(value, int)
        self.assertRaises(ValueError, self.PConfigParser.parse_command_line_parameter, "l=False")
        try:
            self.PConfigParser.parse_command_line_parameter("l=False")
        except ValueError as v:
            #config parser coerce all to string
            message, name, value = v.args
            self.assertEqual(name, 'l')
            self.assertEqual(value, 'False')
            assert isinstance(value, str)


    def test_parse_command_line_parameter_with_list(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("c=[1,2,3,4,5]")
            self.assertEqual(result, {'c': [1, 2, 3, 4, 5]})

    def test_parse_command_line_parameter_with_bool(self):
        if len(self.PSETS) == 3:
            PS, PJSON, PYAML = self.PSETS
        else:
            PS, PJSON = self.PSETS
            PYAML = None
        result = PJSON.parse_command_line_parameter("l=false")
        self.assertEqual(result, {'l': False})
        result = PS.parse_command_line_parameter("l=false")
        self.assertEqual(result, {'l': 'false'})
        if PYAML:
            # yaml has language agnostic bool
            result = PYAML.parse_command_line_parameter("l=False") #python-like
            self.assertEqual(result, {'l': False})
            result = PYAML.parse_command_line_parameter("l=false") #json-like
            self.assertEqual(result, {'l': False})
            result = PYAML.parse_command_line_parameter("l=FALSE") #r-like
            self.assertEqual(result, {'l': False})
            result = PYAML.parse_command_line_parameter("l=off") # possibly undesired
            self.assertEqual(result, {'l': False})
            result = PYAML.parse_command_line_parameter("l=On") # possibly undesired
            self.assertEqual(result, {'l': True})

    def test_parse_command_line_parameter_with_tuple(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("d=('a','b','c')")
            self.assertEqual(result, {'d': ('a', 'b', 'c')})

    def test_parse_command_line_parameter_should_accept_equals_in_parameter(self):
        # because the parameter value could be a string containing "="
        for P in self.PSETS:
            value = "save=Data/result.uwsize=48.setsize=1"
            result = P.parse_command_line_parameter(value)
            self.assertEqual(result, {'save': 'Data/result.uwsize=48.setsize=1'})
Ejemplo n.º 4
0
class ArgumentParsingTests(unittest.TestCase):

    def setUp(self):
        ## setup parsets with legal params
        self.PSETS = (SimpleParameterSet(""), JSONParameterSet(""),
                      YAMLParameterSet(""))
        self.PConfigParser = ConfigParserParameterSet("")
        for k in ('a', 'b', 'c', 'd', 'l', 'save'):
            up_dict = {k: 1}
            self.PConfigParser.update(up_dict)
            for P in self.PSETS:
                P.update(up_dict)

    def test_parse_command_line_parameter_arg_must_contain_equals(self):
        for P in self.PSETS:
            self.assertRaises(Exception, P.parse_command_line_parameter, "foobar")

    def test_parse_command_line_parameter_with_int(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("a=2")
            self.assertEqual(result, {'a': 2})
            assert isinstance(result['a'], int)

    def test_parse_command_line_parameter_with_float(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("b=2.0")
            self.assertEqual(result, {'b': 2.0})
            assert isinstance(result['b'], float)

    def test_parse_command_line_parameter_warns(self):
        ## but still returns name and value with ValueError
        for P in self.PSETS:
            self.assertRaises(ValueError, P.parse_command_line_parameter, "bt=2")
            try:
                P.parse_command_line_parameter("bt=2")
            except ValueError as v:
                message, name, value = v.args
                self.assertEqual(message, '')
                self.assertEqual(name, 'bt')
                self.assertEqual(value, 2)
                assert isinstance(value, int)
        self.assertRaises(ValueError, self.PConfigParser.parse_command_line_parameter, "l=False")
        try:
            self.PConfigParser.parse_command_line_parameter("l=False")
        except ValueError as v:
            #config parser coerce all to string
            message, name, value = v.args
            self.assertEqual(name, 'l')
            self.assertEqual(value, 'False')
            assert isinstance(value, str)


    def test_parse_command_line_parameter_with_list(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("c=[1,2,3,4,5]")
            self.assertEqual(result, {'c': [1, 2, 3, 4, 5]})

    def test_parse_command_line_parameter_with_bool(self):
        PS, PJSON, PYAML = self.PSETS
        result = PJSON.parse_command_line_parameter("l=false")
        self.assertEqual(result, {'l': False})
        result = PS.parse_command_line_parameter("l=false")
        self.assertEqual(result, {'l': 'false'})
        # yaml has language agnostic bool
        result = PYAML.parse_command_line_parameter("l=False") #python-like
        self.assertEqual(result, {'l': False})
        result = PYAML.parse_command_line_parameter("l=false") #json-like
        self.assertEqual(result, {'l': False})
        result = PYAML.parse_command_line_parameter("l=FALSE") #r-like
        self.assertEqual(result, {'l': False})
        result = PYAML.parse_command_line_parameter("l=off") # possibly undesired
        self.assertEqual(result, {'l': False})
        result = PYAML.parse_command_line_parameter("l=On") # possibly undesired
        self.assertEqual(result, {'l': True})

    def test_parse_command_line_parameter_with_tuple(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("d=('a','b','c')")
            self.assertEqual(result, {'d': ('a', 'b', 'c')})

    def test_parse_command_line_parameter_should_accept_equals_in_parameter(self):
        # because the parameter value could be a string containing "="
        for P in self.PSETS:
            value = "save=Data/result.uwsize=48.setsize=1"
            result = P.parse_command_line_parameter(value)
            self.assertEqual(result, {'save': 'Data/result.uwsize=48.setsize=1'})
Ejemplo n.º 5
0
class ArgumentParsingTests(unittest.TestCase):
    def setUp(self):
        ## setup parsets with legal params
        self.PSETS = [SimpleParameterSet(""), JSONParameterSet("")]
        try:
            self.PSETS.append(YAMLParameterSet(""))
        except ImportError:
            pass
        self.PConfigParser = ConfigParserParameterSet("")
        for k in ("a", "b", "c", "d", "l", "save"):
            up_dict = {k: 1}
            self.PConfigParser.update(up_dict)
            for P in self.PSETS:
                P.update(up_dict)

    def test_parse_command_line_parameter_arg_must_contain_equals(self):
        for P in self.PSETS:
            self.assertRaises(Exception, P.parse_command_line_parameter, "foobar")

    def test_parse_command_line_parameter_with_int(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("a=2")
            self.assertEqual(result, {"a": 2})
            assert isinstance(result["a"], int)

    def test_parse_command_line_parameter_with_float(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("b=2.0")
            self.assertEqual(result, {"b": 2.0})
            assert isinstance(result["b"], float)

    def test_parse_command_line_parameter_warns(self):
        ## but still returns name and value with ValueError
        for P in self.PSETS:
            self.assertRaises(ValueError, P.parse_command_line_parameter, "bt=2")
            try:
                P.parse_command_line_parameter("bt=2")
            except ValueError as v:
                message, name, value = v.args
                self.assertEqual(message, "")
                self.assertEqual(name, "bt")
                self.assertEqual(value, 2)
                assert isinstance(value, int)
        self.assertRaises(ValueError, self.PConfigParser.parse_command_line_parameter, "l=False")
        try:
            self.PConfigParser.parse_command_line_parameter("l=False")
        except ValueError as v:
            # config parser coerce all to string
            message, name, value = v.args
            self.assertEqual(name, "l")
            self.assertEqual(value, "False")
            assert isinstance(value, str)

    def test_parse_command_line_parameter_with_list(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("c=[1,2,3,4,5]")
            self.assertEqual(result, {"c": [1, 2, 3, 4, 5]})

    def test_parse_command_line_parameter_with_bool(self):
        if len(self.PSETS) == 3:
            PS, PJSON, PYAML = self.PSETS
        else:
            PS, PJSON = self.PSETS
            PYAML = None
        result = PJSON.parse_command_line_parameter("l=false")
        self.assertEqual(result, {"l": False})
        result = PS.parse_command_line_parameter("l=false")
        self.assertEqual(result, {"l": "false"})
        if PYAML:
            # yaml has language agnostic bool
            result = PYAML.parse_command_line_parameter("l=False")  # python-like
            self.assertEqual(result, {"l": False})
            result = PYAML.parse_command_line_parameter("l=false")  # json-like
            self.assertEqual(result, {"l": False})
            result = PYAML.parse_command_line_parameter("l=FALSE")  # r-like
            self.assertEqual(result, {"l": False})
            result = PYAML.parse_command_line_parameter("l=off")  # possibly undesired
            self.assertEqual(result, {"l": False})
            result = PYAML.parse_command_line_parameter("l=On")  # possibly undesired
            self.assertEqual(result, {"l": True})

    def test_parse_command_line_parameter_with_tuple(self):
        for P in self.PSETS:
            result = P.parse_command_line_parameter("d=('a','b','c')")
            self.assertEqual(result, {"d": ("a", "b", "c")})

    def test_parse_command_line_parameter_should_accept_equals_in_parameter(self):
        # because the parameter value could be a string containing "="
        for P in self.PSETS:
            value = "save=Data/result.uwsize=48.setsize=1"
            result = P.parse_command_line_parameter(value)
            self.assertEqual(result, {"save": "Data/result.uwsize=48.setsize=1"})