sbsv2/raptor/test/unit_suite/raptor_meta_unit.py
changeset 28 b8fa7dfeeaa1
parent 18 de5b887c98f7
--- a/sbsv2/raptor/test/unit_suite/raptor_meta_unit.py	Wed Aug 04 12:07:55 2010 +0100
+++ b/sbsv2/raptor/test/unit_suite/raptor_meta_unit.py	Wed Oct 06 15:13:17 2010 +0100
@@ -40,6 +40,7 @@
 		self.__platmacros_armv6 = "ARMCC EPOC32 MARM EABI ARMCC_2 ARMCC_2_2 GENERIC_MARM MARM_ARMV5 ARMV6"
 		self.__platmacros_armv7 = "ARMCC EPOC32 MARM EABI ARMCC_2 ARMCC_2_2 GENERIC_MARM MARM_ARMV5 ARMV7"
 		self.__platmacros_winscw = "CW32 WINS WINSCW"
+		self.__platmacros_x86gcc = "X86GCC EPOC32"
 
 		self.variant_hrh = self.__testRoot.Append('metadata/include/test_hrh.hrh')
 		
@@ -136,8 +137,21 @@
 								 'SBS_BUILD_DIR' : str(self.__epocroot) + "/epoc32/build",
 								 'METADEPS' : [] 
 							   }
+
+		self.X86GCC          = { 'PLATFORM': 'X86',
+							     'EPOCROOT': self.__epocroot,
+							     'VARIANT_HRH': self.variant_hrh,
+							     'SYSTEMINCLUDE' : '',
+							     'id': 2,
+							     'key': '2222222222222222',
+							     'key_md5': '2222222222222222',
+							     'ISFEATUREVARIANT' : False,
+							     'PLATMACROS' : self.__platmacros_x86gcc,
+								 'SBS_BUILD_DIR' : str(self.__epocroot) + "/epoc32/build",
+								 'METADEPS' : [] 
+							   }
 				
-		self.testPlats = [self.ARMV5, self.ARMV5SMP, self.ARMV6, self.ARMV7, self.ARMV7SMP, self.WINSCW]
+		self.testPlats = [self.ARMV5, self.ARMV5SMP, self.ARMV6, self.ARMV7, self.ARMV7SMP, self.WINSCW, self.X86GCC]
 		
 		# Get the version of CPP that we are using and hope it's correct
 		# since there is no tool check.
@@ -207,9 +221,9 @@
 		self.assertEquals(bp, aExpectedBldInfPlatforms)
 
 		buildableBldInfBuildPlatforms = raptor_meta.getBuildableBldInfBuildPlatforms(bp,
-				'ARMV5 ARMV7 WINSCW',
-				'ARMV5 ARMV5SMP ARMV7 WINSCW',
-				'ARMV5 ARMV7 WINSCW')
+				'ARMV5 ARMV7 WINSCW X86',
+				'ARMV5 ARMV5SMP ARMV7 WINSCW X86',
+				'ARMV5 ARMV7 WINSCW X86')
 		
 		for expectedBuildablePlatform in aExpectedBuildablePlatforms:
 			self.assertTrue(expectedBuildablePlatform in buildableBldInfBuildPlatforms)
@@ -222,17 +236,17 @@
 		bldInfTestRoot = self.__testRoot.Append('metadata/project/bld.infs')
 				
 		self.__testBuildPlatforms(bldInfTestRoot, 'no_prj_platforms.inf', 
-								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML'])
+								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86'])
 		self.__testBuildPlatforms(bldInfTestRoot, 'no_plats.inf', 
-								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML'])
+								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86'])
 		self.__testBuildPlatforms(bldInfTestRoot, 'default_plats.inf', 
-								  ['DEFAULT'], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML'])
+								  ['DEFAULT'], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86'])
 		self.__testBuildPlatforms(bldInfTestRoot, 'default_plats_minus_plat.inf', 
-								  ['DEFAULT', '-WINSCW'], ['ARMV7', 'ARMV5', 'GCCXML'])
+								  ['DEFAULT', '-WINSCW'], ['ARMV7', 'ARMV5', 'GCCXML', 'X86'])
 		self.__testBuildPlatforms(bldInfTestRoot, 'single_plat.inf', 
 								  ['ARMV5'], ['ARMV5', 'GCCXML'])
 		self.__testBuildPlatforms(bldInfTestRoot, 'multiple_plats.inf', 
-								  ['ARMV5', 'WINSCW', 'TOOLS'], ['ARMV5', 'WINSCW', 'TOOLS', 'GCCXML'])
+								  ['ARMV5', 'WINSCW', 'TOOLS', 'X86'], ['ARMV5', 'WINSCW', 'TOOLS', 'GCCXML', 'X86'])
 		return
 	
 	def __testBldInfTestCode(self, aTestRoot, aBldInf, aActual, aExpected):
@@ -686,8 +700,9 @@
 		
 		class DefFileTest(object):
 			""" Test resolveDefFile for a particular set of mmp options """
-			def __init__(self, resolveddeffile, mmpfilename, deffilekeyword, target, nostrictdef, platform):
-				self.resolveddeffile = resolveddeffile
+			def __init__(self, primarydeffile, secondarydeffile, mmpfilename, deffilekeyword, target, nostrictdef, platform):
+				self.primarydeffile = primarydeffile
+				self.secondarydeffile = secondarydeffile
 				self.mmpfilename=mmpfilename
 				self.deffilekeyword=deffilekeyword
 				self.target=target
@@ -698,43 +713,58 @@
 				m = raptor_meta.MMPRaptorBackend(raptor, self.mmpfilename, "")
 				m.deffile = self.deffilekeyword
 				m.nostrictdef = self.nostrictdef
-				f = m.resolveDefFile(self.target, self.platform)
+				(resolvedDefFile, isSecondaryDefFile) = m.resolveDefFile(self.target, self.platform)
 				
-				return path_compare_notdrivelettercase(self.resolveddeffile,f)
+				expectedDefFile = self.primarydeffile
+				if isSecondaryDefFile:
+					expectedDefFile = self.secondarydeffile
+				
+				return path_compare_notdrivelettercase(expectedDefFile, resolvedDefFile)
 		
 		defFileTests = []
 		
 		for testPlat in self.testPlats:			
 			epocroot = str(testPlat['EPOCROOT'])
 			releaseDir = testPlat['PLATFORM'].lower()
-			defFileDir = "eabi"
+			
+			# Some configurations support both a primary location and a secondary location for .def files
+			# In these cases, if the primary location .def file doesn't exist the secondary is used.
+			primaryDefFileDir = "eabi"
+			secondaryDefFileDir = ""
 			if testPlat['PLATFORM'] == "WINSCW":
-				defFileDir = "bwins"
-							
+				primaryDefFileDir = "bwins"
+			elif testPlat['PLATFORM'] == "X86":
+				primaryDefFileDir = "bx86gcc"
+				secondaryDefFileDir = "eabi"
+											
 			defFileTests.extend([
 				DefFileTest(
-					self.__OSRoot+'/test/'+defFileDir+'/targetu.def',
+					self.__OSRoot+'/test/'+primaryDefFileDir+'/targetu.def',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/targetu.def',
 					'/test/component/mmpfile.mmp',
 					'',
 					'target.exe',
 					False,
 					testPlat),
 				DefFileTest(
-					self.__OSRoot+'/test/'+defFileDir+'/target.def',
+					self.__OSRoot+'/test/'+primaryDefFileDir+'/target.def',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/target.def',
 					'/test/component/mmpfile.mmp',
 					'',
 					'target.exe',
 					True,
 					testPlat),
 				DefFileTest(
-					self.__OSRoot+'/test/'+defFileDir+'/targetu.DEF',
+					self.__OSRoot+'/test/'+primaryDefFileDir+'/targetu.DEF',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/targetu.DEF',
 					'/test/component/mmpfile.mmp',
 					'target.DEF',
 					'target.exe',
 					False,
 					testPlat),
 				DefFileTest(
-					self.__OSRoot+'/test/'+defFileDir+'/target2.DEF',
+					self.__OSRoot+'/test/'+primaryDefFileDir+'/target2.DEF',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/target2.DEF',
 					'/test/component/mmpfile.mmp',
 					'target2.DEF',
 					'target.exe',
@@ -742,6 +772,7 @@
 					testPlat),
 				DefFileTest(
 					self.__OSRoot+'/test/component/target2u.DEF',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/target2u.DEF',
 					'/test/component/mmpfile.mmp',
 					'./target2.DEF',
 					'target.exe',
@@ -749,20 +780,23 @@
 					testPlat),
 				DefFileTest(
 					self.__OSRoot+'/test/component/target2.DEF',
+					self.__OSRoot+'/test/'+secondaryDefFileDir+'/target2.DEF',
 					'/test/component/mmpfile.mmp',
 					'./target2.DEF',
 					'target.exe',
 					True,
 					testPlat),
 				DefFileTest(
-					self.__OSRoot+'/test/component/'+defFileDir+'/target3u.DEF',
+					self.__OSRoot+'/test/component/'+primaryDefFileDir+'/target3u.DEF',
+					self.__OSRoot+'/test/component/'+secondaryDefFileDir+'/target3u.DEF',
 					'/test/component/mmpfile.mmp',
 					'./~/target3.DEF',
 					'target.exe',
 					False,
 					testPlat),
 				DefFileTest(
-					epocroot+'/epoc32/include/def/'+defFileDir+'/targetu.def',
+					epocroot+'/epoc32/include/def/'+primaryDefFileDir+'/targetu.def',
+					epocroot+'/epoc32/include/def/'+secondaryDefFileDir+'/targetu.def',
 					'/test/component/mmpfile.mmp',
 					'/epoc32/include/def/~/target.def',
 					'target.exe',
@@ -770,6 +804,7 @@
 					testPlat),
 				DefFileTest(
 					epocroot+'/epoc32/release/'+releaseDir+'/target.def',
+					epocroot+'/epoc32/release/'+secondaryDefFileDir+'/target.def',
 					'/test/component/mmpfile.mmp',
 					'/epoc32/release/'+releaseDir+'/target.def',
 					'target.exe',
@@ -777,6 +812,7 @@
 					testPlat),
 				DefFileTest(
 					self.__OSRoot+'/deffiles/targetu.def',
+					self.__OSRoot+'/'+secondaryDefFileDir+'/targetu.def',
 					'/test/component/mmpfile.mmp',
 					'/deffiles/target.def',
 					'target.exe',
@@ -785,7 +821,7 @@
 				])
 		
 		for t in defFileTests:
-			result = t.test(self.raptor)
+			result = t.test(self.raptor)			
 			self.assertEquals(result, True)
 	
 	def dummyMetaReader(self):