mirror of https://github.com/acidanthera/audk.git
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!'
|
||
|
|