Sync BaseTools Branch (version r2271) to EDKII main trunk.
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
This commit is contained in:
386
BaseTools/Source/Python/UPT/UnitTest/InfBinarySectionTest.py
Normal file
386
BaseTools/Source/Python/UPT/UnitTest/InfBinarySectionTest.py
Normal file
@ -0,0 +1,386 @@
|
||||
## @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!'
|
||||
|
Reference in New Issue
Block a user