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!'
 | 
						|
 |