sbsv2/raptor/test/unit_suite/raptor_xml_unit.py
author mikek
Fri, 04 Jun 2010 13:09:28 +0100
changeset 18 de5b887c98f7
parent 13 c327db0664bb
child 28 b8fa7dfeeaa1
permissions -rw-r--r--
Upgrading to Raptor 2.14
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
     1
#
18
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
     2
# Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
13
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
     3
# All rights reserved.
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
     4
# This component and the accompanying materials are made available
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
     5
# under the terms of the License "Eclipse Public License v1.0"
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
     6
# which accompanies this distribution, and is available
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
     7
# at the URL "http://www.eclipse.org/legal/epl-v10.html".
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
     8
#
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
     9
# Initial Contributors:
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    10
# Nokia Corporation - initial contribution.
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    11
#
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    12
# Contributors:
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    13
#
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    14
# Description: 
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    15
# raptor_xml_unit module
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    16
# This module tests the identification and parsing of XML metadata files
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    17
#
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    18
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    19
import os
18
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    20
import generic_path
13
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    21
import raptor
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    22
import raptor_xml
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    23
import unittest
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    24
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    25
class TestRaptorXML(unittest.TestCase):
18
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    26
		
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    27
	class Logger(object):
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    28
		# Basic custom logger class to store errors (and only errors) for test checks
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    29
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    30
		def __init__(self):	
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    31
			self.errors = []
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    32
					
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    33
		def Error(self, format, *extras, **attributes):
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    34
			self.errors.append(format % extras)
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    35
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    36
		def Info(self, format, *extras, **attributes):
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    37
			return
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    38
			
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    39
		def InfoDiscovery(self, object_type, count):
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    40
			return
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    41
		
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    42
		def Clear(self):
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    43
			del self.errors[:]
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    44
			
13
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    45
	
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    46
	def setUp(self):
18
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    47
		self.__logger = TestRaptorXML.Logger()
13
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    48
		self.__nullSysDefRoot = generic_path.Path("smoke_suite/test_resources")
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    49
		self.__sysDefRoot = generic_path.Join(os.environ[raptor.env],"test/smoke_suite/test_resources")
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    50
		self.__sysDefFileRoot = generic_path.Join(os.environ[raptor.env], "test/metadata/system")
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    51
		
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    52
	def testSystemDefinitionProcessing(self):
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    53
		# Make formatting neater
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    54
		print
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    55
		expectedBldInfs = [generic_path.Join(self.__sysDefRoot, "simple/bld.inf"),\
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    56
						generic_path.Join(self.__sysDefRoot, "basics/helloworld/Bld.inf")]
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    57
		
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    58
		sysdefs = ["1.4.1", "1.3.1", "1.5.1"]
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    59
		for sysdef in sysdefs:
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    60
			systemModel = raptor_xml.SystemModel(self.__logger,
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    61
					generic_path.Join(self.__sysDefFileRoot,
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    62
					"system_definition_" + sysdef + ".xml"), self.__sysDefRoot)
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    63
			self.__compareFileLists(expectedBldInfs, systemModel.GetAllComponents())
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    64
		
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    65
	
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    66
		sourceroot = ""
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    67
		if os.environ.has_key('SOURCEROOT'):
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    68
			sourceroot = os.environ['SOURCEROOT']
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    69
		os.environ['SOURCEROOT'] = self.__sysDefRoot.GetLocalString()
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    70
		systemModel = raptor_xml.SystemModel(self.__logger, generic_path.Join(self.__sysDefFileRoot, "system_definition_2.0.0.xml"), self.__nullSysDefRoot)
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    71
		self.__compareFileLists(expectedBldInfs, systemModel.GetAllComponents())
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    72
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    73
		del os.environ["SOURCEROOT"]
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    74
		systemModel = raptor_xml.SystemModel(self.__logger, generic_path.Join(self.__sysDefFileRoot, "system_definition_2.0.0.xml"), self.__sysDefRoot)
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    75
		self.__compareFileLists(expectedBldInfs, systemModel.GetAllComponents())
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    76
		
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    77
		os.environ["SOURCEROOT"] = 'i_am_not_a_valid_path_at_all'
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    78
		systemModel = raptor_xml.SystemModel(self.__logger, generic_path.Join(self.__sysDefFileRoot, "system_definition_2.0.0.xml"), self.__sysDefRoot)
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    79
		self.__compareFileLists(expectedBldInfs, systemModel.GetAllComponents())
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    80
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    81
				
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    82
		del os.environ["SOURCEROOT"]
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    83
		systemModel = raptor_xml.SystemModel(self.__logger, generic_path.Join(self.__sysDefFileRoot, "system_definition_3.0.0.xml"), self.__sysDefRoot)
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    84
		self.__compareFileLists([], systemModel.GetAllComponents())
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    85
				
18
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    86
		self.__logger.Clear()
13
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    87
		systemModel = raptor_xml.SystemModel(self.__logger, generic_path.Join(self.__sysDefFileRoot, "system_definition_multi_layers.xml"), self.__sysDefRoot)
18
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    88
		self.assertTrue(len(self.__logger.errors) == 0)
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    89
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    90
		# Confirm components returned from layers are correct
13
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    91
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    92
		expectedBldInfs = [ generic_path.Join(self.__sysDefRoot, "simple/bld.inf"),\
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    93
							generic_path.Join(self.__sysDefRoot, "simple_dll/bld.inf"),\
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    94
						    generic_path.Join(self.__sysDefRoot, "simple_export/bld.inf"),\
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    95
						    generic_path.Join(self.__sysDefRoot, "simple_gui/Bld.inf"),\
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    96
						    generic_path.Join(self.__sysDefRoot, "simple_implib/bld.inf"),\
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    97
						    generic_path.Join(self.__sysDefRoot, "simple_lib/bld.inf"),\
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
    98
						    generic_path.Join(self.__sysDefRoot, "simple_stringtable/bld.inf"),\
18
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
    99
						    generic_path.Join(self.__sysDefRoot, "simple_test/bld.inf"),\
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   100
						    generic_path.Join(self.__sysDefRoot, "simple_plugin/bld.inf")]
13
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   101
		self.__compareFileLists(expectedBldInfs, systemModel.GetAllComponents())
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   102
	
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   103
		expectedBldInfs = [ generic_path.Join(self.__sysDefRoot, "simple_export/bld.inf"),\
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   104
						    generic_path.Join(self.__sysDefRoot, "simple_gui/Bld.inf")]
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   105
		self.__compareFileLists(expectedBldInfs, systemModel.GetLayerComponents("Second Layer"))
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   106
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   107
		self.__compareFileLists([], systemModel.GetLayerComponents("Fifth Layer"))
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   108
				
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   109
		self.__compareFileLists([], systemModel.GetLayerComponents("Sixth Layer"))
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   110
		
18
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   111
		# Check that the overall "buildability" of layers is returned correctly
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   112
		# Note that a layer is still buildable if some bld.infs in it are missing as long as at least 1 exists
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   113
		# However, errors should always be generated for missing bld.infs when a layer is checked
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   114
		
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   115
		self.assertTrue(systemModel.IsLayerBuildable("First Layer"))		
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   116
		self.assertFalse(systemModel.IsLayerBuildable("Sixth Layer"))
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   117
		
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   118
		self.__logger.Clear()
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   119
		self.assertTrue(systemModel.IsLayerBuildable("Seventh Layer"))
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   120
		self.assertTrue(len(self.__logger.errors) == 1)
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   121
		sbsHome = os.environ["SBS_HOME"]
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   122
		sysDefPath = sbsHome + "/test/metadata/system/system_definition_multi_layers.xml"
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   123
		sysDefPath = sysDefPath.replace("\\","/")
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   124
		bldInfPath = sbsHome + "/test/smoke_suite/test_resources/does_not_existbld.inf"
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   125
		bldInfPath = bldInfPath.replace("\\","/")
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   126
		self.assertEquals(self.__logger.errors[0],
de5b887c98f7 Upgrading to Raptor 2.14
mikek
parents: 13
diff changeset
   127
		  ("System Definition layer \"Seventh Layer\" from system definition file \"%s\" refers to non existent bld.inf file %s" % (sysDefPath, bldInfPath)))
13
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   128
				
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   129
		# Probably redundant, but return local environment (at least its dictionary) to pre-test state
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   130
		os.environ["SOURCEROOT"] = sourceroot
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   131
		
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   132
	def __compareFileLists (self, aListOne, aListTwo):
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   133
		
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   134
		self.assertEquals(len(aListOne), len(aListTwo))
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   135
		
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   136
		i = 0
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   137
		while i < len(aListOne) :
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   138
			self.assertEquals(aListOne[i].GetLocalString().lower(), aListTwo[i].GetLocalString().lower())
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   139
			i = i + 1
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   140
		
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   141
# run all the tests
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   142
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   143
from raptor_tests import SmokeTest
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   144
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   145
def run():
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   146
	t = SmokeTest()
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   147
	t.id = "999"
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   148
	t.name = "raptor_xml_unit"
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   149
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   150
	tests = unittest.makeSuite(TestRaptorXML)
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   151
	result = unittest.TextTestRunner(verbosity=2).run(tests)
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   152
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   153
	if result.wasSuccessful():
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   154
		t.result = SmokeTest.PASS
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   155
	else:
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   156
		t.result = SmokeTest.FAIL
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   157
c327db0664bb Upgrading Raptor from 2.10 to 2.13
mikek
parents:
diff changeset
   158
	return t