sbsv2/raptor/test/unit_suite/raptor_meta_unit.py
changeset 625 a1925fb7753a
parent 616 24e4ef208cca
child 630 31ef8a13d4f4
equal deleted inserted replaced
624:f70b728ea30c 625:a1925fb7753a
    38 		self.__variant_cfg = self.__variant_cfg_root.Append('test_cfg.cfg')
    38 		self.__variant_cfg = self.__variant_cfg_root.Append('test_cfg.cfg')
    39 		self.__platmacros_armv5 = "ARMCC EPOC32 MARM EABI ARMCC_2 ARMCC_2_2 GENERIC_MARM MARM_ARMV5"
    39 		self.__platmacros_armv5 = "ARMCC EPOC32 MARM EABI ARMCC_2 ARMCC_2_2 GENERIC_MARM MARM_ARMV5"
    40 		self.__platmacros_armv6 = "ARMCC EPOC32 MARM EABI ARMCC_2 ARMCC_2_2 GENERIC_MARM MARM_ARMV5 ARMV6"
    40 		self.__platmacros_armv6 = "ARMCC EPOC32 MARM EABI ARMCC_2 ARMCC_2_2 GENERIC_MARM MARM_ARMV5 ARMV6"
    41 		self.__platmacros_armv7 = "ARMCC EPOC32 MARM EABI ARMCC_2 ARMCC_2_2 GENERIC_MARM MARM_ARMV5 ARMV7"
    41 		self.__platmacros_armv7 = "ARMCC EPOC32 MARM EABI ARMCC_2 ARMCC_2_2 GENERIC_MARM MARM_ARMV5 ARMV7"
    42 		self.__platmacros_winscw = "CW32 WINS WINSCW"
    42 		self.__platmacros_winscw = "CW32 WINS WINSCW"
       
    43 		self.__platmacros_x86gcc = "X86GCC EPOC32"
    43 
    44 
    44 		self.variant_hrh = self.__testRoot.Append('metadata/include/test_hrh.hrh')
    45 		self.variant_hrh = self.__testRoot.Append('metadata/include/test_hrh.hrh')
    45 		
    46 		
    46 		self.__OSRoot = ""
    47 		self.__OSRoot = ""
    47 		if raptor_utilities.getOSFileSystem() == "cygwin":
    48 		if raptor_utilities.getOSFileSystem() == "cygwin":
   134 							     'ISFEATUREVARIANT' : False,
   135 							     'ISFEATUREVARIANT' : False,
   135 							     'PLATMACROS' : self.__platmacros_winscw,
   136 							     'PLATMACROS' : self.__platmacros_winscw,
   136 								 'SBS_BUILD_DIR' : str(self.__epocroot) + "/epoc32/build",
   137 								 'SBS_BUILD_DIR' : str(self.__epocroot) + "/epoc32/build",
   137 								 'METADEPS' : [] 
   138 								 'METADEPS' : [] 
   138 							   }
   139 							   }
       
   140 
       
   141 		self.X86GCC          = { 'PLATFORM': 'X86GCC',
       
   142 							     'EPOCROOT': self.__epocroot,
       
   143 							     'VARIANT_HRH': self.variant_hrh,
       
   144 							     'SYSTEMINCLUDE' : '',
       
   145 							     'id': 2,
       
   146 							     'key': '2222222222222222',
       
   147 							     'key_md5': '2222222222222222',
       
   148 							     'ISFEATUREVARIANT' : False,
       
   149 							     'PLATMACROS' : self.__platmacros_x86gcc,
       
   150 								 'SBS_BUILD_DIR' : str(self.__epocroot) + "/epoc32/build",
       
   151 								 'METADEPS' : [] 
       
   152 							   }
   139 				
   153 				
   140 		self.testPlats = [self.ARMV5, self.ARMV5SMP, self.ARMV6, self.ARMV7, self.ARMV7SMP, self.WINSCW]
   154 		self.testPlats = [self.ARMV5, self.ARMV5SMP, self.ARMV6, self.ARMV7, self.ARMV7SMP, self.WINSCW, self.X86GCC]
   141 		
   155 		
   142 		# Get the version of CPP that we are using and hope it's correct
   156 		# Get the version of CPP that we are using and hope it's correct
   143 		# since there is no tool check.
   157 		# since there is no tool check.
   144 		if os.environ.has_key('SBS_GNUCPP'):
   158 		if os.environ.has_key('SBS_GNUCPP'):
   145 			self.__gnucpp = os.environ['SBS_GNUCPP']
   159 			self.__gnucpp = os.environ['SBS_GNUCPP']
   220 	
   234 	
   221 	def testBldInfPlatformDeduction(self):
   235 	def testBldInfPlatformDeduction(self):
   222 		bldInfTestRoot = self.__testRoot.Append('metadata/project/bld.infs')
   236 		bldInfTestRoot = self.__testRoot.Append('metadata/project/bld.infs')
   223 				
   237 				
   224 		self.__testBuildPlatforms(bldInfTestRoot, 'no_prj_platforms.inf', 
   238 		self.__testBuildPlatforms(bldInfTestRoot, 'no_prj_platforms.inf', 
   225 								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML'])
   239 								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86GCC'])
   226 		self.__testBuildPlatforms(bldInfTestRoot, 'no_plats.inf', 
   240 		self.__testBuildPlatforms(bldInfTestRoot, 'no_plats.inf', 
   227 								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML'])
   241 								  [], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86GCC'])
   228 		self.__testBuildPlatforms(bldInfTestRoot, 'default_plats.inf', 
   242 		self.__testBuildPlatforms(bldInfTestRoot, 'default_plats.inf', 
   229 								  ['DEFAULT'], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML'])
   243 								  ['DEFAULT'], ['ARMV7', 'ARMV5', 'WINSCW', 'GCCXML', 'X86GCC'])
   230 		self.__testBuildPlatforms(bldInfTestRoot, 'default_plats_minus_plat.inf', 
   244 		self.__testBuildPlatforms(bldInfTestRoot, 'default_plats_minus_plat.inf', 
   231 								  ['DEFAULT', '-WINSCW'], ['ARMV7', 'ARMV5', 'GCCXML'])
   245 								  ['DEFAULT', '-WINSCW'], ['ARMV7', 'ARMV5', 'GCCXML', 'X86GCC'])
   232 		self.__testBuildPlatforms(bldInfTestRoot, 'single_plat.inf', 
   246 		self.__testBuildPlatforms(bldInfTestRoot, 'single_plat.inf', 
   233 								  ['ARMV5'], ['ARMV5', 'GCCXML'])
   247 								  ['ARMV5'], ['ARMV5', 'GCCXML', 'X86GCC'])
   234 		self.__testBuildPlatforms(bldInfTestRoot, 'multiple_plats.inf', 
   248 		self.__testBuildPlatforms(bldInfTestRoot, 'multiple_plats.inf', 
   235 								  ['ARMV5', 'WINSCW', 'TOOLS'], ['ARMV5', 'WINSCW', 'TOOLS', 'GCCXML'])
   249 								  ['ARMV5', 'WINSCW', 'TOOLS'], ['ARMV5', 'WINSCW', 'TOOLS', 'GCCXML', 'X86GCC'])
   236 		return
   250 		return
   237 	
   251 	
   238 	def __testBldInfTestCode(self, aTestRoot, aBldInf, aActual, aExpected):
   252 	def __testBldInfTestCode(self, aTestRoot, aBldInf, aActual, aExpected):
   239 		loop_number = 0
   253 		loop_number = 0
   240 		for actual in aActual:
   254 		for actual in aActual:
   684 	
   698 	
   685 	def testDefFileResolution(self):
   699 	def testDefFileResolution(self):
   686 		
   700 		
   687 		class DefFileTest(object):
   701 		class DefFileTest(object):
   688 			""" Test resolveDefFile for a particular set of mmp options """
   702 			""" Test resolveDefFile for a particular set of mmp options """
   689 			def __init__(self, resolveddeffile, mmpfilename, deffilekeyword, target, nostrictdef, platform):
   703 			def __init__(self, primarydeffile, secondarydeffile, mmpfilename, deffilekeyword, target, nostrictdef, platform):
   690 				self.resolveddeffile = resolveddeffile
   704 				self.primarydeffile = primarydeffile
       
   705 				self.secondarydeffile = secondarydeffile
   691 				self.mmpfilename=mmpfilename
   706 				self.mmpfilename=mmpfilename
   692 				self.deffilekeyword=deffilekeyword
   707 				self.deffilekeyword=deffilekeyword
   693 				self.target=target
   708 				self.target=target
   694 				self.nostrictdef = nostrictdef
   709 				self.nostrictdef = nostrictdef
   695 				self.platform = platform
   710 				self.platform = platform
   696 		
   711 		
   697 			def test(self, raptor):
   712 			def test(self, raptor):
   698 				m = raptor_meta.MMPRaptorBackend(raptor, self.mmpfilename, "")
   713 				m = raptor_meta.MMPRaptorBackend(raptor, self.mmpfilename, "")
   699 				m.deffile = self.deffilekeyword
   714 				m.deffile = self.deffilekeyword
   700 				m.nostrictdef = self.nostrictdef
   715 				m.nostrictdef = self.nostrictdef
   701 				f = m.resolveDefFile(self.target, self.platform)
   716 				(resolvedDefFile, isSecondaryDefFile) = m.resolveDefFile(self.target, self.platform)
   702 				
   717 				
   703 				return path_compare_notdrivelettercase(self.resolveddeffile,f)
   718 				expectedDefFile = self.primarydeffile
       
   719 				if isSecondaryDefFile:
       
   720 					expectedDefFile = self.secondarydeffile
       
   721 				
       
   722 				return path_compare_notdrivelettercase(expectedDefFile, resolvedDefFile)
   704 		
   723 		
   705 		defFileTests = []
   724 		defFileTests = []
   706 		
   725 		
   707 		for testPlat in self.testPlats:			
   726 		for testPlat in self.testPlats:			
   708 			epocroot = str(testPlat['EPOCROOT'])
   727 			epocroot = str(testPlat['EPOCROOT'])
   709 			releaseDir = testPlat['PLATFORM'].lower()
   728 			releaseDir = testPlat['PLATFORM'].lower()
   710 			defFileDir = "eabi"
   729 			
       
   730 			# Some configurations support both a primary location and a secondary location for .def files
       
   731 			# In these cases, if the primary location .def file doesn't exist the secondary is used.
       
   732 			primaryDefFileDir = "eabi"
       
   733 			secondaryDefFileLoc = ""
   711 			if testPlat['PLATFORM'] == "WINSCW":
   734 			if testPlat['PLATFORM'] == "WINSCW":
   712 				defFileDir = "bwins"
   735 				primaryDefFileDir = "bwins"
   713 							
   736 			elif testPlat['PLATFORM'] == "X86GCC":
       
   737 				primaryDefFileDir = "bx86gcc"
       
   738 				secondaryDefFileLoc = self.__OSRoot+'/test/eabi'
       
   739 											
   714 			defFileTests.extend([
   740 			defFileTests.extend([
   715 				DefFileTest(
   741 				DefFileTest(
   716 					self.__OSRoot+'/test/'+defFileDir+'/targetu.def',
   742 					self.__OSRoot+'/test/'+primaryDefFileDir+'/targetu.def',
       
   743 					secondaryDefFileLoc+'/targetu.def',
   717 					'/test/component/mmpfile.mmp',
   744 					'/test/component/mmpfile.mmp',
   718 					'',
   745 					'',
   719 					'target.exe',
   746 					'target.exe',
   720 					False,
   747 					False,
   721 					testPlat),
   748 					testPlat),
   722 				DefFileTest(
   749 				DefFileTest(
   723 					self.__OSRoot+'/test/'+defFileDir+'/target.def',
   750 					self.__OSRoot+'/test/'+primaryDefFileDir+'/target.def',
       
   751 					secondaryDefFileLoc+'/target.def',
   724 					'/test/component/mmpfile.mmp',
   752 					'/test/component/mmpfile.mmp',
   725 					'',
   753 					'',
   726 					'target.exe',
   754 					'target.exe',
   727 					True,
   755 					True,
   728 					testPlat),
   756 					testPlat),
   729 				DefFileTest(
   757 				DefFileTest(
   730 					self.__OSRoot+'/test/'+defFileDir+'/targetu.DEF',
   758 					self.__OSRoot+'/test/'+primaryDefFileDir+'/targetu.DEF',
       
   759 					secondaryDefFileLoc+'/targetu.DEF',
   731 					'/test/component/mmpfile.mmp',
   760 					'/test/component/mmpfile.mmp',
   732 					'target.DEF',
   761 					'target.DEF',
   733 					'target.exe',
   762 					'target.exe',
   734 					False,
   763 					False,
   735 					testPlat),
   764 					testPlat),
   736 				DefFileTest(
   765 				DefFileTest(
   737 					self.__OSRoot+'/test/'+defFileDir+'/target2.DEF',
   766 					self.__OSRoot+'/test/'+primaryDefFileDir+'/target2.DEF',
       
   767 					secondaryDefFileLoc+'/target2.DEF',
   738 					'/test/component/mmpfile.mmp',
   768 					'/test/component/mmpfile.mmp',
   739 					'target2.DEF',
   769 					'target2.DEF',
   740 					'target.exe',
   770 					'target.exe',
   741 					True,
   771 					True,
   742 					testPlat),
   772 					testPlat),
   743 				DefFileTest(
   773 				DefFileTest(
   744 					self.__OSRoot+'/test/component/target2u.DEF',
   774 					self.__OSRoot+'/test/component/target2u.DEF',
       
   775 					secondaryDefFileLoc+'/target2u.DEF',
   745 					'/test/component/mmpfile.mmp',
   776 					'/test/component/mmpfile.mmp',
   746 					'./target2.DEF',
   777 					'./target2.DEF',
   747 					'target.exe',
   778 					'target.exe',
   748 					False,
   779 					False,
   749 					testPlat),
   780 					testPlat),
   750 				DefFileTest(
   781 				DefFileTest(
   751 					self.__OSRoot+'/test/component/target2.DEF',
   782 					self.__OSRoot+'/test/component/target2.DEF',
       
   783 					secondaryDefFileLoc+'/target2.DEF',
   752 					'/test/component/mmpfile.mmp',
   784 					'/test/component/mmpfile.mmp',
   753 					'./target2.DEF',
   785 					'./target2.DEF',
   754 					'target.exe',
   786 					'target.exe',
   755 					True,
   787 					True,
   756 					testPlat),
   788 					testPlat),
   757 				DefFileTest(
   789 				DefFileTest(
   758 					self.__OSRoot+'/test/component/'+defFileDir+'/target3u.DEF',
   790 					self.__OSRoot+'/test/component/'+primaryDefFileDir+'/target3u.DEF',
       
   791 					secondaryDefFileLoc+'/target3u.DEF',
   759 					'/test/component/mmpfile.mmp',
   792 					'/test/component/mmpfile.mmp',
   760 					'./~/target3.DEF',
   793 					'./~/target3.DEF',
   761 					'target.exe',
   794 					'target.exe',
   762 					False,
   795 					False,
   763 					testPlat),
   796 					testPlat),
   764 				DefFileTest(
   797 				DefFileTest(
   765 					epocroot+'/epoc32/include/def/'+defFileDir+'/targetu.def',
   798 					epocroot+'/epoc32/include/def/'+primaryDefFileDir+'/targetu.def',
       
   799 					secondaryDefFileLoc+'/targetu.def',
   766 					'/test/component/mmpfile.mmp',
   800 					'/test/component/mmpfile.mmp',
   767 					'/epoc32/include/def/~/target.def',
   801 					'/epoc32/include/def/~/target.def',
   768 					'target.exe',
   802 					'target.exe',
   769 					False,
   803 					False,
   770 					testPlat),
   804 					testPlat),
   771 				DefFileTest(
   805 				DefFileTest(
   772 					epocroot+'/epoc32/release/'+releaseDir+'/target.def',
   806 					epocroot+'/epoc32/release/'+releaseDir+'/target.def',
       
   807 					secondaryDefFileLoc+'/target.def',
   773 					'/test/component/mmpfile.mmp',
   808 					'/test/component/mmpfile.mmp',
   774 					'/epoc32/release/'+releaseDir+'/target.def',
   809 					'/epoc32/release/'+releaseDir+'/target.def',
   775 					'target.exe',
   810 					'target.exe',
   776 					True,
   811 					True,
   777 					testPlat),
   812 					testPlat),
   778 				DefFileTest(
   813 				DefFileTest(
   779 					self.__OSRoot+'/deffiles/targetu.def',
   814 					self.__OSRoot+'/deffiles/targetu.def',
       
   815 					secondaryDefFileLoc+'/targetu.def',
   780 					'/test/component/mmpfile.mmp',
   816 					'/test/component/mmpfile.mmp',
   781 					'/deffiles/target.def',
   817 					'/deffiles/target.def',
   782 					'target.exe',
   818 					'target.exe',
   783 					False,
   819 					False,
   784 					testPlat)
   820 					testPlat)
   785 				])
   821 				])
   786 		
   822 		
   787 		for t in defFileTests:
   823 		for t in defFileTests:
   788 			result = t.test(self.raptor)
   824 			result = t.test(self.raptor)			
   789 			self.assertEquals(result, True)
   825 			self.assertEquals(result, True)
   790 	
   826 	
   791 	def dummyMetaReader(self):
   827 	def dummyMetaReader(self):
   792 		"make raptor_meta.MetaReader.__init__ into a none operation"
   828 		"make raptor_meta.MetaReader.__init__ into a none operation"
   793 		self.savedInit = raptor_meta.MetaReader.__init__
   829 		self.savedInit = raptor_meta.MetaReader.__init__