/edk2/BaseTools/Source/Python/UPT/UnitTest/InfBinarySectionTest.py
https://gitlab.com/envieidoc/Clover · Python · 386 lines · 143 code · 53 blank · 190 comment · 28 complexity · 2aaa038dfed30e32e73772241e7c9fbc MD5 · raw file
- ## @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!'