BaseTool Branch: https://edk2-buildtools.svn.sourceforge.net/svnroot/edk2-buildtools/branches/Releases/BaseTools_r2100 Signed-off-by: lgao4 Reviewed-by: hchen30 git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12214 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			387 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			387 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| ## @file
 | |
| # This file contain unit test for Test [Binary] section part of InfParser 
 | |
| #
 | |
| # Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
 | |
| #
 | |
| # This program and the accompanying materials are licensed and made available 
 | |
| # under the terms and conditions of the BSD License which accompanies this 
 | |
| # distribution. The full text of the license may be found at 
 | |
| # http://opensource.org/licenses/bsd-license.php
 | |
| #
 | |
| # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
 | |
| # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 | |
| 
 | |
| import os
 | |
| #import Object.Parser.InfObject as InfObject
 | |
| from Object.Parser.InfCommonObject import CurrentLine
 | |
| from Object.Parser.InfCommonObject import InfLineCommentObject
 | |
| from Object.Parser.InfBinaryObject import InfBinariesObject
 | |
| import Logger.Log as Logger
 | |
| import Library.GlobalData as Global
 | |
| ##
 | |
| # Test Common binary item
 | |
| #
 | |
| 
 | |
| #-------------start of common binary item test input--------------------------#
 | |
| 
 | |
| #
 | |
| # Only has 1 element, binary item Type
 | |
| #
 | |
| SectionStringsCommonItem1 = \
 | |
| """
 | |
| GUID
 | |
| """
 | |
| #
 | |
| # Have 2 elements, binary item Type and FileName
 | |
| #
 | |
| SectionStringsCommonItem2 = \
 | |
| """
 | |
| GUID | Test/Test.guid
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 3 elements, Type | FileName | Target | Family | TagName | FeatureFlagExp
 | |
| #
 | |
| SectionStringsCommonItem3 = \
 | |
| """
 | |
| GUID | Test/Test.guid | DEBUG
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 3 elements, Type | FileName | Target 
 | |
| # Target with MACRO defined in [Define] section
 | |
| #
 | |
| SectionStringsCommonItem4 = \
 | |
| """
 | |
| GUID | Test/Test.guid | $(TARGET)
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 3 elements, Type | FileName | Target 
 | |
| # FileName with MACRO defined in [Binary] section
 | |
| #
 | |
| SectionStringsCommonItem5 = \
 | |
| """
 | |
| DEFINE BINARY_FILE_PATH = Test
 | |
| GUID | $(BINARY_FILE_PATH)/Test.guid | $(TARGET)
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 4 elements, Type | FileName | Target | Family
 | |
| #
 | |
| SectionStringsCommonItem6 = \
 | |
| """
 | |
| GUID | Test/Test.guid | DEBUG | *
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 4 elements, Type | FileName | Target | Family
 | |
| #
 | |
| SectionStringsCommonItem7 = \
 | |
| """
 | |
| GUID | Test/Test.guid | DEBUG | MSFT
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 5 elements, Type | FileName | Target | Family | TagName
 | |
| #
 | |
| SectionStringsCommonItem8 = \
 | |
| """
 | |
| GUID | Test/Test.guid | DEBUG | MSFT | TEST
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 6 elements, Type | FileName | Target | Family | TagName | FFE
 | |
| #
 | |
| SectionStringsCommonItem9 = \
 | |
| """
 | |
| GUID | Test/Test.guid | DEBUG | MSFT | TEST | TRUE
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 7 elements, Type | FileName | Target | Family | TagName | FFE | Overflow
 | |
| # Test wrong format
 | |
| #
 | |
| SectionStringsCommonItem10 = \
 | |
| """
 | |
| GUID | Test/Test.guid | DEBUG | MSFT | TEST | TRUE | OVERFLOW
 | |
| """
 | |
| 
 | |
| #-------------end of common binary item test input----------------------------#
 | |
| 
 | |
| 
 | |
| 
 | |
| #-------------start of VER type binary item test input------------------------#
 | |
| 
 | |
| #
 | |
| # Has 1 element, error format 
 | |
| #
 | |
| SectionStringsVerItem1 = \
 | |
| """
 | |
| VER
 | |
| """
 | |
| #
 | |
| # Have 5 elements, error format(Maximum elements amount is 4)
 | |
| #
 | |
| SectionStringsVerItem2 = \
 | |
| """
 | |
| VER | Test/Test.ver | * | TRUE | OverFlow
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 2 elements, Type | FileName
 | |
| #
 | |
| SectionStringsVerItem3 = \
 | |
| """
 | |
| VER | Test/Test.ver
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 3 elements, Type | FileName | Target
 | |
| #
 | |
| SectionStringsVerItem4 = \
 | |
| """
 | |
| VER | Test/Test.ver | DEBUG
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 4 elements, Type | FileName | Target | FeatureFlagExp
 | |
| #
 | |
| SectionStringsVerItem5 = \
 | |
| """
 | |
| VER | Test/Test.ver | DEBUG | TRUE
 | |
| """
 | |
| 
 | |
| #
 | |
| # Exist 2 VER items, both opened.
 | |
| #
 | |
| SectionStringsVerItem6 = \
 | |
| """
 | |
| VER | Test/Test.ver | * | TRUE
 | |
| VER | Test/Test2.ver | * | TRUE
 | |
| """
 | |
| 
 | |
| 
 | |
| #
 | |
| # Exist 2 VER items, only 1 opened.
 | |
| #
 | |
| SectionStringsVerItem7 = \
 | |
| """
 | |
| VER | Test/Test.ver | * | TRUE
 | |
| VER | Test/Test2.ver | * | FALSE
 | |
| """
 | |
| 
 | |
| #-------------end of VER type binary item test input--------------------------#
 | |
| 
 | |
| 
 | |
| #-------------start of UI type binary item test input-------------------------#
 | |
| 
 | |
| #
 | |
| # Test only one UI section can exist
 | |
| #
 | |
| SectionStringsUiItem1 = \
 | |
| """
 | |
| UI | Test/Test.ui | * | TRUE
 | |
| UI | Test/Test2.ui | * | TRUE
 | |
| """
 | |
| 
 | |
| SectionStringsUiItem2 = \
 | |
| """
 | |
| UI | Test/Test.ui | * | TRUE
 | |
| SEC_UI | Test/Test2.ui | * | TRUE
 | |
| """
 | |
| 
 | |
| SectionStringsUiItem3 = \
 | |
| """
 | |
| UI | Test/Test.ui | * | TRUE
 | |
| UI | Test/Test2.ui | * | FALSE
 | |
| """
 | |
| 
 | |
| #
 | |
| # Has 1 element, error format 
 | |
| #
 | |
| SectionStringsUiItem4 = \
 | |
| """
 | |
| UI
 | |
| """
 | |
| #
 | |
| # Have 5 elements, error format(Maximum elements amount is 4)
 | |
| #
 | |
| SectionStringsUiItem5 = \
 | |
| """
 | |
| UI | Test/Test.ui | * | TRUE | OverFlow
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 2 elements, Type | FileName
 | |
| #
 | |
| SectionStringsUiItem6 = \
 | |
| """
 | |
| UI | Test/Test.ui
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 3 elements, Type | FileName | Target
 | |
| #
 | |
| SectionStringsUiItem7 = \
 | |
| """
 | |
| UI | Test/Test.ui | DEBUG
 | |
| """
 | |
| 
 | |
| #
 | |
| # Have 4 elements, Type | FileName | Target | FeatureFlagExp
 | |
| #
 | |
| SectionStringsUiItem8 = \
 | |
| """
 | |
| UI | Test/Test.ui | DEBUG | TRUE
 | |
| """
 | |
| #---------------end of UI type binary item test input-------------------------#
 | |
| 
 | |
| 
 | |
| gFileName = "BinarySectionTest.inf"
 | |
| 
 | |
| ##
 | |
| # Construct SectionString for call section parser usage.
 | |
| #
 | |
| def StringToSectionString(String):
 | |
|     Lines = String.split('\n')
 | |
|     LineNo = 0
 | |
|     SectionString = []
 | |
|     for Line in Lines:
 | |
|         if Line.strip() == '':
 | |
|             continue
 | |
|         SectionString.append((Line, LineNo, ''))
 | |
|         LineNo = LineNo + 1
 | |
|         
 | |
|     return SectionString
 | |
| 
 | |
| def PrepareTest(String):
 | |
|     SectionString = StringToSectionString(String)
 | |
|     ItemList = []
 | |
|     for Item in SectionString:
 | |
|         ValueList = Item[0].split('|')
 | |
|         for count in range(len(ValueList)):
 | |
|             ValueList[count] = ValueList[count].strip()
 | |
|         if len(ValueList) >= 2:
 | |
|             #
 | |
|             # Create a temp file for test.
 | |
|             #
 | |
|             FileName = os.path.normpath(os.path.realpath(ValueList[1].strip()))
 | |
|             try:
 | |
|                 TempFile  = open (FileName, "w")    
 | |
|                 TempFile.close()
 | |
|             except:
 | |
|                 print "File Create Error"
 | |
|         CurrentLine = CurrentLine()
 | |
|         CurrentLine.SetFileName("Test")
 | |
|         CurrentLine.SetLineString(Item[0])
 | |
|         CurrentLine.SetLineNo(Item[1])
 | |
|         InfLineCommentObject = InfLineCommentObject()
 | |
|         
 | |
|         ItemList.append((ValueList, InfLineCommentObject, CurrentLine))
 | |
|                 
 | |
|     return ItemList
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     Logger.Initialize()
 | |
|     
 | |
|     InfBinariesInstance = InfBinariesObject()
 | |
|     ArchList = ['COMMON']
 | |
|     Global.gINF_MODULE_DIR = os.getcwd()
 | |
|     
 | |
|     AllPassedFlag = True
 | |
|     
 | |
|     #
 | |
|     # For All Ui test
 | |
|     #
 | |
|     UiStringList = [ 
 | |
|                     SectionStringsUiItem1,
 | |
|                     SectionStringsUiItem2,
 | |
|                     SectionStringsUiItem3,
 | |
|                     SectionStringsUiItem4,
 | |
|                     SectionStringsUiItem5,
 | |
|                     SectionStringsUiItem6,
 | |
|                     SectionStringsUiItem7,
 | |
|                     SectionStringsUiItem8 
 | |
|                     ]
 | |
|     
 | |
|     for Item in UiStringList:        
 | |
|         Ui = PrepareTest(Item)
 | |
|         if Item == SectionStringsUiItem4 or Item == SectionStringsUiItem5:
 | |
|             try:
 | |
|                 InfBinariesInstance.SetBinary(Ui = Ui, ArchList = ArchList)
 | |
|             except Logger.FatalError:
 | |
|                 pass
 | |
|         else:
 | |
|             try:		
 | |
|                 InfBinariesInstance.SetBinary(Ui = Ui, ArchList = ArchList)
 | |
|             except:
 | |
|                 AllPassedFlag = False   				
 | |
|  
 | |
|     #
 | |
|     # For All Ver Test
 | |
|     #
 | |
|     VerStringList = [
 | |
|                      SectionStringsVerItem1,
 | |
|                      SectionStringsVerItem2,
 | |
|                      SectionStringsVerItem3,
 | |
|                      SectionStringsVerItem4,
 | |
|                      SectionStringsVerItem5,
 | |
|                      SectionStringsVerItem6,
 | |
|                      SectionStringsVerItem7
 | |
|                      ]
 | |
|     for Item in VerStringList:        
 | |
|         Ver = PrepareTest(Item)
 | |
|         if Item == SectionStringsVerItem1 or \
 | |
|            Item == SectionStringsVerItem2:
 | |
|             
 | |
|             try:
 | |
|                 InfBinariesInstance.SetBinary(Ver = Ver, ArchList = ArchList)
 | |
|             except:
 | |
|                 pass
 | |
|                     
 | |
|         else:
 | |
|             try:
 | |
|                 InfBinariesInstance.SetBinary(Ver = Ver, ArchList = ArchList)
 | |
|             except:
 | |
|                 AllPassedFlag = False   
 | |
|     
 | |
|     #
 | |
|     # For All Common Test
 | |
|     #    
 | |
|     CommonStringList = [
 | |
|                      SectionStringsCommonItem1,
 | |
|                      SectionStringsCommonItem2,
 | |
|                      SectionStringsCommonItem3,
 | |
|                      SectionStringsCommonItem4,
 | |
|                      SectionStringsCommonItem5,
 | |
|                      SectionStringsCommonItem6,
 | |
|                      SectionStringsCommonItem7,
 | |
|                      SectionStringsCommonItem8,
 | |
|                      SectionStringsCommonItem9,
 | |
|                      SectionStringsCommonItem10
 | |
|                      ]
 | |
| 
 | |
|     for Item in CommonStringList:        
 | |
|         CommonBin = PrepareTest(Item)
 | |
|         if Item == SectionStringsCommonItem10 or \
 | |
|            Item == SectionStringsCommonItem1:
 | |
|             
 | |
|             try:
 | |
|                 InfBinariesInstance.SetBinary(CommonBinary = CommonBin, ArchList = ArchList)
 | |
|             except:
 | |
|                 pass
 | |
|                     
 | |
|         else:
 | |
|             try:
 | |
|                 InfBinariesInstance.SetBinary(Ver = Ver, ArchList = ArchList)
 | |
|             except:
 | |
|                 print "Test Failed!"
 | |
|                 AllPassedFlag = False
 | |
|     
 | |
|     if AllPassedFlag :
 | |
|         print 'All tests passed...'
 | |
|     else:
 | |
|         print 'Some unit test failed!'
 | |
| 
 |