configurationengine/source/cone/validation/tests/unittest_confmlfixing.py
author m2lahtel
Tue, 10 Aug 2010 14:29:28 +0300
changeset 3 e7e0ae78773e
permissions -rw-r--r--
ConE 1.2.11 release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     1
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     2
# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     3
# All rights reserved.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     4
# This component and the accompanying materials are made available
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     5
# under the terms of "Eclipse Public License v1.0"
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     6
# which accompanies this distribution, and is available
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     8
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
     9
# Initial Contributors:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    11
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    12
# Contributors:
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    13
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    14
# Description: 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    15
#
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    16
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    17
import os
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    18
import unittest
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    19
import logging
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    20
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    21
ROOT_PATH = os.path.dirname(os.path.abspath(__file__))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    22
TESTDATA_DIR = os.path.join(ROOT_PATH, 'testdata')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    23
TEMP_DIR = os.path.join(ROOT_PATH, 'temp')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    24
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    25
from testautomation.base_testcase import BaseTestCase
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    26
from cone.public import api
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    27
import cone.validation.confmlvalidation
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    28
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    29
class TestConfmlFixing(unittest.TestCase):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    30
    def test_confml_fixer_filter_problems(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    31
        fixer = cone.validation.confmlvalidation.FixerBase()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    32
        prbs = [api.Problem("msg1", type="test.foo.bar"),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    33
                api.Problem("msg2", type="test.foo.bar"),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    34
                api.Problem("msg3", type="test.foo.faa"),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    35
                api.Problem("msg4", type="test.foo.bar")]
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    36
        self.assertEquals(len(fixer.filter_problems(prbs,'test.foo.bar')),3)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    37
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    38
    def test_get_fixer_classes(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    39
        fixers = cone.validation.confmlvalidation.get_fixer_classes()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    40
        self.assertEquals(len(fixers),1)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    41
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    42
class TestConfmlFixModel(BaseTestCase):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    43
    def test_fix_duplicates(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    44
        prj_dir = os.path.join(TESTDATA_DIR, 'model/confml/single_files')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    45
        prj = api.Project(api.Storage.open(prj_dir))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    46
        conf = prj.get_configuration("duplicate_root.confml")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    47
        vc = cone.validation.confmlvalidation.fix_configuration(conf)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    48
        self.assertEqual(len(vc.fixes), 1)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    49
        self.assertEquals(conf.list_configurations(),['duplicate_settings1.confml', 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    50
                                                      'duplicate_settings2.confml'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    51
        subconf1 = conf.get_configuration('duplicate_settings1.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    52
        subconf2 = conf.get_configuration('duplicate_settings2.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    53
        self.assertEquals(subconf2.list_all_features(),[])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    54
        self.assertEquals(subconf1.list_all_features(),['Feature', 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    55
                                                        'Feature.One', 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    56
                                                        'Feature.Two', 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    57
                                                        'Feature.Three', 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    58
                                                        'Feature.NoData',
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    59
                                                        'Feature.TestSequence', 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    60
                                                        'Feature.TestSequence.SeqTwo', 
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    61
                                                        'Feature.TestSequence.SeqThree'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    62
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    63
class TestConfmlFixingFiles(BaseTestCase):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    64
        
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    65
    def test_export_fixed_configuration_test(self):
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    66
        # Open the file as a configuration
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    67
        prj_dir = os.path.join(TESTDATA_DIR, 'model/confml/single_files')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    68
        prj = api.Project(api.Storage.open(prj_dir))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    69
        conf = prj.get_configuration('duplicate_root.confml')
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    70
        vc = cone.validation.confmlvalidation.fix_configuration(conf)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    71
        self.recreate_dir(os.path.join(TEMP_DIR,'fixed'))
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    72
        rstorage = api.Storage.open(os.path.join(TEMP_DIR,'fixed'), "w")
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    73
        prj.export_configuration(conf, rstorage)
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    74
        rstorage.save()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    75
        rstorage.close()
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    76
        self.assert_dir_contents_equal(os.path.join(TEMP_DIR,'fixed'),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    77
                                       os.path.join(TESTDATA_DIR, 'model/confml/fixed_expected'),
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    78
                                       ignore=[".metadata", '.svn'])
e7e0ae78773e ConE 1.2.11 release
m2lahtel
parents:
diff changeset
    79