Exemplo n.º 1
0
    def test_validations_for_lenght_and_duplicate_setting(self):
        root = model.ConfmlConfiguration("dummy_conf")
        conf1 = root.create_configuration("conf1.confml")
        fea = conf1.create_feature("fea1")
        set1 = model.ConfmlStringSetting("setting1",
                                         desc="description one",
                                         name="setting",
                                         length="4")
        fea.add_feature(set1)
        set1.value = "abcdefg"
        conf2 = root.create_configuration("conf2.confml")
        fea = conf2.create_feature("fea1")
        set2 = model.ConfmlStringSetting("setting1",
                                         desc="description two",
                                         name="setting new")
        fea.add_feature(set2)

        validator_classes = get_validator_classes()

        context = ValidationContext(root)
        validators = [vc(context) for vc in validator_classes]
        for validator in validators:
            validator.validate()
        self.assertEquals(len(context.problems), 3, context.problems)
        self.assertEquals(
            context.problems[0].msg,
            "Setting fea1.setting1: Exact number of characters must be 4 (value has 7)",
            context.problems)
        self.assertEquals(
            context.problems[1].msg,
            "Feature fea1.setting1 has '2' definitions in files ['conf1.confml', 'conf2.confml']",
            context.problems)
Exemplo n.º 2
0
 def test_length_constraint_validator_with_singe_feature(self):
     conf = model.ConfmlConfiguration("foo")
     fea = model.ConfmlStringSetting("test", length="4")
     conf.add_feature(fea)
     # Test lenght validation
     fea.value = "test mee"
     context = ValidationContext(conf)
     valid = LengthConstraintValidator(context)
     valid.validate()
     self.assertEquals(context.problems[0].type,
                       'model.confml.invalid_value.length')
     # Test minLenght validation
     context.problems = []
     del fea.length
     fea.minLength = 10
     valid.validate()
     self.assertEquals(context.problems[0].type,
                       'model.confml.invalid_value.minlength',
                       context.problems[0])
     # Test maxLenght validation
     context.problems = []
     del fea.minLength
     fea.maxLength = 4
     valid.validate()
     self.assertEquals(context.problems[0].type,
                       'model.confml.invalid_value.maxlength',
                       context.problems[0])
Exemplo n.º 3
0
    def test_duplicate_feature_validator_with_sequence_duplicates(self):
        root = model.ConfmlConfiguration("dummy_conf")
        conf1 = root.create_configuration("conf1.confml")
        fea = conf1.create_feature("fea1")
        set1 = model.ConfmlSequenceSetting("setting1",
                                           desc="description one",
                                           name="setting")
        set1.add_feature(
            model.ConfmlSetting("sub_setting1",
                                desc="description one",
                                name="sub_setting one"))
        fea.add_feature(set1)
        conf2 = root.create_configuration("conf2.confml")
        fea = conf2.create_feature("fea1")
        set2 = model.ConfmlSequenceSetting("setting1",
                                           desc="description one",
                                           name="setting")
        set2.add_feature(
            model.ConfmlSetting("sub_setting1",
                                desc="description two",
                                name="sub_setting two"))
        fea.add_feature(set2)

        context = ValidationContext(root)
        valid = DuplicateFeatureValidator(context)
        valid.validate()
        self.assertEquals(len(context.problems), 1, context.problems)
        self.assertEquals(
            context.problems[0].msg,
            "Feature fea1 has '2' definitions in files ['conf1.confml', 'conf2.confml']",
            context.problems)
Exemplo n.º 4
0
    def test_validations_for_duplicate_setting(self):
        root = model.ConfmlConfiguration("dummy_conf")
        conf1 = root.create_configuration("conf1.confml")
        fea = conf1.create_feature("fea1")
        set1 = model.ConfmlStringSetting("setting1",
                                         desc="description one",
                                         name="setting")
        fea.add_feature(set1)
        conf2 = root.create_configuration("conf2.confml")
        fea = conf2.create_feature("fea1")
        set2 = model.ConfmlStringSetting("setting1",
                                         desc="description two",
                                         name="setting new")
        fea.add_feature(set2)

        validator_classes = get_validator_classes()

        context = ValidationContext(root)
        validators = [vc(context) for vc in validator_classes]
        for validator in validators:
            validator.validate()
        self.assertEquals(len(context.problems), 2, context.problems)
        self.assertEquals(
            context.problems[0].msg,
            "Feature fea1.setting1 has '2' definitions in files ['conf1.confml', 'conf2.confml']",
            context.problems)
Exemplo n.º 5
0
    def test_duplicate_setting_fix_with_duplicates_with_options(self):
        root = model.ConfmlConfiguration("dummy_conf")
        conf1 = root.create_configuration("conf1.confml")
        fea = conf1.create_feature("fea1")
        set1 = model.ConfmlStringSetting("setting1",
                                         desc="description one",
                                         name="setting")
        set1.add(api.Option('op1', 'val1'))
        set1.add(api.Option('op2', 'val2'))
        fea.add_feature(set1)
        conf2 = root.create_configuration("conf2.confml")
        fea = conf2.create_feature("fea1")
        set2 = model.ConfmlStringSetting("setting1",
                                         desc="description two",
                                         name="setting new")
        set2.add(api.Option('op3', 'val3'))
        set2.add(api.Option('op4', 'val4'))
        fea.add_feature(set2)

        context = ValidationContext(root)
        valid = confml.DuplicateFeatureValidator(context)
        valid.validate()
        fixer = confml.DuplicateFeatureFixer()
        fixer.fix(context)

        set1 = conf1.get_feature('fea1').get_feature('setting1')
        options = set1.options
        self.assertEquals(
            len(options), 2,
            'After fix only options from new setting should be preserved')
        self.assertEquals(options['val3'].name, 'op3')
        self.assertEquals(options['val4'].name, 'op4')
Exemplo n.º 6
0
    def test_duplicate_setting_fix_with_duplicates(self):
        root = model.ConfmlConfiguration("dummy_conf")
        conf1 = root.create_configuration("conf1.confml")
        fea = conf1.create_feature("fea1")
        set1 = model.ConfmlStringSetting("setting1",
                                         desc="description one",
                                         name="setting")
        fea.add_feature(set1)
        conf2 = root.create_configuration("conf2.confml")
        fea = conf2.create_feature("fea1")
        set2 = model.ConfmlStringSetting("setting2",
                                         desc="description two",
                                         name="setting new")
        fea.add_feature(set2)
        self.assertEquals(conf1.list_all_features(), ['fea1', 'fea1.setting1'])

        context = ValidationContext(root)
        valid = confml.DuplicateFeatureValidator(context)
        valid.validate()
        self.assertEquals(len(context.problems), 1, context.problems)
        self.assertEquals(
            context.problems[0].msg,
            "Feature fea1 has '2' definitions in files ['conf1.confml', 'conf2.confml']",
            context.problems)
        fixer = confml.DuplicateFeatureFixer()
        fixer.fix(context)

        # revalidation should now report no problems
        context = ValidationContext(root)
        valid = confml.DuplicateFeatureValidator(context)
        valid.validate()
        self.assertEquals(len(context.problems), 0, context.problems)
        self.assertEquals(conf1.list_all_features(),
                          ['fea1', 'fea1.setting1', 'fea1.setting2'])
        self.assertEquals(conf2.list_all_features(), [])
Exemplo n.º 7
0
 def test_map_carbon_featurelist(self):
     mapper = model.get_mapper('carbon')
     c1 = model.ConfmlConfiguration(name="test")
     c1.meta = {}
     c1.meta.add('type', 'featurelist')
     c2 = mapper.configuration(c1)
     self.assertTrue(isinstance(c2, carbonmodel.FeatureList))
     c2 = mapper.map_object(c1)
     self.assertTrue(isinstance(c2, carbonmodel.FeatureList))
Exemplo n.º 8
0
 def test_map_carbon_configuration(self):
     mapper = model.get_mapper('carbon')
     c1 = model.ConfmlConfiguration("test")
     c2 = mapper.configuration(c1)
     c3 = c1._get_mapper('carbon').map_object(c1)
     self.assertTrue(isinstance(c2, carbonmodel.CarbonConfiguration))
     c2 = mapper.map_object(c1)
     self.assertTrue(isinstance(c2, carbonmodel.CarbonConfiguration))
     self.assertTrue(isinstance(c3, carbonmodel.CarbonConfiguration))
Exemplo n.º 9
0
 def test_map_carbon_configuration_with_data(self):
     mapper = model.get_mapper('carbon')
     c1 = model.ConfmlConfiguration("test")
     c1.name = "test.confml"
     c1.namespace = "com.nokia"
     c2 = mapper.map_object(c1)
     self.assertTrue(isinstance(c2, carbonmodel.CarbonConfiguration))
     self.assertEquals(c2.name, "test.confml")
     self.assertEquals(c2.namespace, "com.nokia")
     self.assertEquals(c2.path, "test")
Exemplo n.º 10
0
    def test_duplicate_feature_validator_with_no_duplicates(self):
        conf = model.ConfmlConfiguration("dummy_conf")
        fea = conf.create_feature("fea1")
        set1 = model.ConfmlStringSetting("setting1",
                                         desc="description one",
                                         name="setting")
        set2 = model.ConfmlStringSetting("setting2",
                                         desc="description two",
                                         name="setting")
        fea.add_feature(set1)
        fea.add_feature(set2)

        context = ValidationContext(conf)
        valid = DuplicateFeatureValidator(context)
        valid.validate()
        self.assertEquals(context.problems, [])
 def loads(self, etree):
     configuration = model.ConfmlConfiguration(name=etree.get("name"),
                                               id=etree.get("id"),
                                               version=etree.get("version"))
     configuration.lineno = utils.etree.get_lineno(etree)
     # configuration.set_name(etree.get("name") or 'unknown') 
     configuration.set_ref(etree.get("name") or 'unknown')
     for elem in etree.getchildren():
         # At the moment we ignore the namespace of elements
         (namespace,elemname) = get_elemname(elem.tag)
         try:
             reader = get_reader_for_elem(elemname)
             obj = reader.loads(elem)
             if obj:
                 configuration.add(obj)
         except exceptions.ConePersistenceError,e:
             add_unknown_element_warning(elem)
             continue