예제 #1
0
    def test_defaults_and_mandatories(self):
        test_fn = testdata.get_default_test_config_filename()
        config = ezconfig.config.Configuration(test_fn)

        SEC = "basic"
        MISSING_KEY = "no bueno"

        assert config.get(SEC, MISSING_KEY, default=None) is None
        assert config.get(SEC, MISSING_KEY, mandatory=False) is None
        assert config.get(SEC, MISSING_KEY, default="DEFAULT") == "DEFAULT"

        assert config.get(SEC, MISSING_KEY, default="1.0", type=float) == 1.0
        assert config.get(SEC, MISSING_KEY, default=1.0, type=float) == 1.0

        assert config.get("conversions", "val1", mandatory=True) == "1"

        with self.assertRaises(KeyError):
            config.get("conversions", MISSING_KEY, mandatory=True)

        with self.assertRaises(KeyError):
            # mandatory=True has precedence over default value
            assert config.get("conversions",
                              MISSING_KEY,
                              mandatory=True,
                              default=1)

        assert config.get(SEC, MISSING_KEY, default=".", is_filename=True) == \
            os.path.join(os.path.split(__file__)[0], "testdata")
예제 #2
0
 def test_help_comments(self):
     test_fn = testdata.get_default_test_config_filename()
     config = ezconfig.config.Configuration(test_fn)
     config.get_key_help("some_help_comments", "string_list") == ""
     config.get_key_help("some_help_comments", "dates") == ""
     config.get_key_help("some_help_comments",
                         "intervals") == "A help comment"
예제 #3
0
    def test_lists(self):
        test_fn = testdata.get_default_test_config_filename()
        config = ezconfig.config.Configuration(test_fn)

        SEC = "list_handling_with_defaults"

        assert config.get(SEC, "string_list",
                          is_list=True) == ["jesus", "mary", "joseph"]
        assert config.get(SEC, "float_list", is_list=True,
                          type=float) == [1.2, 3.14, 5.19]

        assert config.get(SEC, "WTF", is_list=True, default=None) is None
        assert config.get(SEC, "WTF", is_list=True, mandatory=False) is None
        assert config.get(SEC, "WTF", is_list=True, type=int,
                          default=None) is None
        assert config.get(SEC, "WTF", is_list=True, type=int,
                          mandatory=False) is None
        assert config.get(SEC, "WTF", is_list=True,
                          default="1,2,3") == ["1", "2", "3"]
        assert config.get(SEC, "WTF", is_list=True, default="1,2,3",
                          type=int) == [1, 2, 3]

        assert config.get(SEC, "WTF", is_list=True, default="") == []
        assert config.get(SEC, "WTF", is_list=True, default="", type=int) == []

        assert config.get(SEC, "dates", is_list=True, is_datetime=True) == [
            datetime(1981, 3, 30, 1, 15),
            datetime(1981, 3, 30, 0, 0),
            datetime(1981, 3, 30, 1, 30)
        ]

        assert config.get(SEC, "intervals", is_list=True, is_timedelta=True) == \
            [10.0, 10.1, 15, 15, 13*60, 1.5*3600, 10*24*3600, 15*7*24*3600]
        return
예제 #4
0
    def test_overrides(self):
        test_fn = testdata.get_default_test_config_filename()
        config = ezconfig.config.Configuration(test_fn)

        assert config.get("overrides_in_section",
                          "override_x") == "second_value"
        assert config.get("overrides_in_section",
                          "override_y") == "second_value"
예제 #5
0
    def test_basic_config(self):
        test_fn = testdata.get_default_test_config_filename()
        config = ezconfig.config.Configuration(test_fn)

        assert config.get("basic", "foo") == "1"
        assert config.get("basic", "multiword_with_comment") == "san francisco"
        assert config.get("basic", "whitespace_at_end") == "san francisco"

        return
예제 #6
0
    def test_static_param(self):
        test_fn = testdata.get_default_test_config_filename()
        config = ezconfig.config.Configuration(test_fn)

        assert config.get("static_stuff", "test_fn",
                          raw=True) == "../testdata/default.conf"
        assert config.get("static_stuff", "test_fn", static=True) == test_fn
        assert config.get("static_stuff", "test_file", static=True) == test_fn
        assert config.get("static_stuff", "test_var",
                          static=True) == "../testdata/default.conf"
예제 #7
0
    def test_conversions_and_basic_features(self):
        test_fn = testdata.get_default_test_config_filename()
        config = ezconfig.config.Configuration(test_fn)
        assert config.get("conversions", "val0") == "string"
        assert config.get("conversions", "val1") == "1"
        assert config.get("conversions", "val1", type=int) == 1
        assert config.get("conversions", "val1", type=float) == 1.0
        assert config.get("conversions", "val2", type=float) == 3.1415
        assert config.get("conversions", "val4", is_timedelta=True) == 10.0
        assert config.get("conversions", "val5", is_timedelta=True) == 60 * .25
        assert config.get("conversions", "val6", is_timedelta=True) == 3600
        assert config.get("conversions", "val7",
                          is_timedelta=True) == (3 * 24 * 3600)
        assert config.get("conversions", "val77",
                          is_timedelta=True) == (3 * 7 * 24 * 3600)
        assert config.get("conversions", "val8", is_filename=True) == test_fn
        assert config.get("conversions", "val9", is_filename=True) == test_fn
        assert config.get("conversions", "val10",
                          is_filename=True) == "/usr/bin/env"
        assert config.get("conversions", "val10",
                          is_filename=True) == "/usr/bin/env"

        f = config.get("conversions", "val11", is_code=True)
        assert f(1) == 2
        assert config.get("conversions", "val11",
                          raw=True) == "lambda x: x * 2"

        assert config.get("conversions", "val_hex1", is_int_hex_str=True) == 10
        assert config.get("conversions", "val_hex2", is_int_hex_str=True) == 16
        assert config.get("conversions",
                          "val_hex_array",
                          is_list=True,
                          is_int_hex_str=True) == [10, 16]

        assert config.get("conversions", "key_val_type2_1") == "foo"
        assert config.get("conversions",
                          "key_val_type2_2",
                          is_list=True,
                          is_timedelta=True) == [1.0, 60.0, 3600.0]

        assert config.get("conversions",
                          "dont_do_this_you_idiot",
                          is_code=True)(3) == 5

        assert config.get("conversions", "date1",
                          is_datetime=True) == datetime(1981, 3, 30)
        assert config.get("conversions", "date2",
                          is_datetime=True) == datetime(1981, 3, 30, 12, 15)
        assert config.get("conversions", "date3",
                          is_datetime=True) == datetime(
                              1981, 3, 30, 12, 13, 14)
        assert config.get("conversions", "date3") == "1981-03-30 12:13:14"

        return
    def test_basic_config(self):
        test_fn = testdata.get_default_test_config_filename()
        config = ezconfig.config.Configuration(test_fn)

        SECTION = "basic"
        MISSING_KEY = "missing key"
        MISSING_SECTION = "missing section"

        assert config.get(SECTION, MISSING_KEY, default = 10) == 10
        assert config.get(MISSING_SECTION, MISSING_KEY, default = 10) == 10
        assert config.get(SECTION, MISSING_KEY, mandatory=False) == None
        assert config.get(SECTION, MISSING_KEY, mandatory=False, default=10) == 10
        assert config.get(SECTION, "foo", default = 10, mandatory=True, type=int) == 1
예제 #9
0
    def test_boolean_values(self):
        test_fn = testdata.get_default_test_config_filename()
        config = ezconfig.config.Configuration(test_fn)

        SECTION = "boolean_values"

        assert config.get(SECTION, "key_false_as_int", type=bool) == False
        assert config.get(SECTION, "key_true_as_int", type=bool) == True
        assert config.get(SECTION, "key_true", type=bool) == True
        assert config.get(SECTION, "key_True", type=bool) == True
        assert config.get(SECTION, "key_t", type=bool) == True
        assert config.get(SECTION, "key_T", type=bool) == True

        with self.assertRaises(ValueError):
            assert config.get(SECTION, "key_misspelled_true",
                              type=bool) == False

        with self.assertRaises(ValueError):
            assert config.get(SECTION, "key_misspelled_false",
                              type=bool) == False

        with self.assertRaises(ValueError):
            assert config.get(SECTION, "key_blank_contents",
                              type=bool) == False

        assert config.get(SECTION, "key_false", type=bool) == False
        assert config.get(SECTION, "key_False", type=bool) == False
        assert config.get(SECTION, "key_f", type=bool) == False
        assert config.get(SECTION, "key_F", type=bool) == False

        assert config.get(SECTION, "key_float_zero_is_false",
                          type=bool) == False
        assert config.get(SECTION, "key_float_one_is_true", type=bool) == True
        assert config.get(SECTION, "key_negative_float_is_true",
                          type=bool) == True

        return
예제 #10
0
 def test_overrides_between_sections(self):
     test_fn = testdata.get_default_test_config_filename()
     config = ezconfig.config.Configuration(test_fn)
     assert config.get("conversions", "val1") == "1"
예제 #11
0
def test_find_test_files():
    test_fn = testdata.get_default_test_config_filename()
    assert os.path.isfile(test_fn)

    return