1. Add a recovery mode for UPT failure 2. Add UNI file support 3. Add binary file header support 4. Add support for PCD error message 5. Add support for replace 6. Format generated INF/DEC files 7. Update dependency check 8. Other minor fixes Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hess Chen <hesheng.chen@intel.com> Reviewed-by: Gao, Liming <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15896 6f19259b-4bc3-4df7-8a09-765794883524
923 lines
28 KiB
Python
923 lines
28 KiB
Python
## @file
|
|
# This file contain unit test for CommentParsing
|
|
#
|
|
# Copyright (c) 2011 - 2014, 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 unittest
|
|
|
|
import Logger.Log as Logger
|
|
from Library.CommentParsing import ParseHeaderCommentSection, \
|
|
ParseGenericComment, \
|
|
ParseDecPcdGenericComment, \
|
|
ParseDecPcdTailComment
|
|
from Library.CommentParsing import _IsCopyrightLine
|
|
from Library.String import GetSplitValueList
|
|
from Library.DataType import TAB_SPACE_SPLIT
|
|
from Library.DataType import TAB_LANGUAGE_EN_US
|
|
|
|
#
|
|
# Test ParseHeaderCommentSection
|
|
#
|
|
class ParseHeaderCommentSectionTest(unittest.TestCase):
|
|
def setUp(self):
|
|
pass
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
#
|
|
# Normal case1: have license/copyright/license above @file
|
|
#
|
|
def testNormalCase1(self):
|
|
TestCommentLines1 = \
|
|
'''# License1
|
|
# License2
|
|
#
|
|
## @file
|
|
# example abstract
|
|
#
|
|
# example description
|
|
#
|
|
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
|
#
|
|
# License3
|
|
#'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines1, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
Abstract, Description, Copyright, License = \
|
|
ParseHeaderCommentSection(TestCommentLinesList, "PhonyFile")
|
|
|
|
ExpectedAbstract = 'example abstract'
|
|
self.assertEqual(Abstract, ExpectedAbstract)
|
|
|
|
ExpectedDescription = 'example description'
|
|
self.assertEqual(Description, ExpectedDescription)
|
|
|
|
ExpectedCopyright = \
|
|
'Copyright (c) 2007 - 2010,'\
|
|
' Intel Corporation. All rights reserved.<BR>'
|
|
self.assertEqual(Copyright, ExpectedCopyright)
|
|
|
|
ExpectedLicense = 'License1\nLicense2\n\nLicense3'
|
|
self.assertEqual(License, ExpectedLicense)
|
|
|
|
#
|
|
# Normal case2: have license/copyright above @file, but no copyright after
|
|
#
|
|
def testNormalCase2(self):
|
|
TestCommentLines2 = \
|
|
''' # License1
|
|
# License2
|
|
#
|
|
## @file
|
|
# example abstract
|
|
#
|
|
# example description
|
|
#
|
|
#Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
|
#
|
|
##'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines2, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
Abstract, Description, Copyright, License = \
|
|
ParseHeaderCommentSection(TestCommentLinesList, "PhonyFile")
|
|
|
|
ExpectedAbstract = 'example abstract'
|
|
self.assertEqual(Abstract, ExpectedAbstract)
|
|
|
|
ExpectedDescription = 'example description'
|
|
self.assertEqual(Description, ExpectedDescription)
|
|
|
|
ExpectedCopyright = \
|
|
'Copyright (c) 2007 - 2010, Intel Corporation.'\
|
|
' All rights reserved.<BR>'
|
|
self.assertEqual(Copyright, ExpectedCopyright)
|
|
|
|
ExpectedLicense = 'License1\nLicense2'
|
|
self.assertEqual(License, ExpectedLicense)
|
|
|
|
|
|
#
|
|
# Normal case2: have license/copyright/license above @file,
|
|
# but no abstract/description
|
|
#
|
|
def testNormalCase3(self):
|
|
TestCommentLines3 = \
|
|
''' # License1
|
|
# License2
|
|
#
|
|
## @file
|
|
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
|
#
|
|
# License3 Line1
|
|
# License3 Line2
|
|
##'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines3, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
Abstract, Description, Copyright, License = \
|
|
ParseHeaderCommentSection(TestCommentLinesList, "PhonyFile")
|
|
|
|
ExpectedAbstract = ''
|
|
self.assertEqual(Abstract, ExpectedAbstract)
|
|
|
|
ExpectedDescription = ''
|
|
self.assertEqual(Description, ExpectedDescription)
|
|
|
|
ExpectedCopyright = \
|
|
'Copyright (c) 2007 - 2010,'\
|
|
' Intel Corporation. All rights reserved.<BR>'
|
|
self.assertEqual(Copyright, ExpectedCopyright)
|
|
|
|
ExpectedLicense = \
|
|
'License1\n' \
|
|
'License2\n\n' \
|
|
'License3 Line1\n' \
|
|
'License3 Line2'
|
|
self.assertEqual(License, ExpectedLicense)
|
|
|
|
#
|
|
# Normal case4: format example in spec
|
|
#
|
|
def testNormalCase4(self):
|
|
TestCommentLines = \
|
|
'''
|
|
## @file
|
|
# Abstract
|
|
#
|
|
# Description
|
|
#
|
|
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
|
#
|
|
# License
|
|
#
|
|
##'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
Abstract, Description, Copyright, License = \
|
|
ParseHeaderCommentSection(TestCommentLinesList, "PhonyFile")
|
|
|
|
ExpectedAbstract = 'Abstract'
|
|
self.assertEqual(Abstract, ExpectedAbstract)
|
|
|
|
ExpectedDescription = 'Description'
|
|
self.assertEqual(Description, ExpectedDescription)
|
|
|
|
ExpectedCopyright = \
|
|
'Copyright (c) 2007 - 2010, Intel Corporation.'\
|
|
' All rights reserved.<BR>'
|
|
self.assertEqual(Copyright, ExpectedCopyright)
|
|
|
|
ExpectedLicense = \
|
|
'License'
|
|
self.assertEqual(License, ExpectedLicense)
|
|
|
|
#
|
|
# Normal case5: other line between copyright
|
|
#
|
|
def testNormalCase5(self):
|
|
TestCommentLines = \
|
|
'''
|
|
## @file
|
|
# Abstract
|
|
#
|
|
# Description
|
|
#
|
|
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
|
# other line
|
|
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
|
#
|
|
# License
|
|
#
|
|
##'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
Abstract, Description, Copyright, License = \
|
|
ParseHeaderCommentSection(TestCommentLinesList, "PhonyFile")
|
|
|
|
ExpectedAbstract = 'Abstract'
|
|
self.assertEqual(Abstract, ExpectedAbstract)
|
|
|
|
ExpectedDescription = 'Description'
|
|
self.assertEqual(Description, ExpectedDescription)
|
|
|
|
ExpectedCopyright = \
|
|
'Copyright (c) 2007 - 2010, Intel Corporation.'\
|
|
' All rights reserved.<BR>\n'\
|
|
'Copyright (c) 2007 - 2010, Intel Corporation.'\
|
|
' All rights reserved.<BR>'
|
|
self.assertEqual(Copyright, ExpectedCopyright)
|
|
|
|
ExpectedLicense = \
|
|
'License'
|
|
self.assertEqual(License, ExpectedLicense)
|
|
|
|
#
|
|
# Normal case6: multiple lines of copyright
|
|
#
|
|
def testNormalCase6(self):
|
|
TestCommentLines = \
|
|
'''
|
|
## @file
|
|
# Abstract
|
|
#
|
|
# Description
|
|
#
|
|
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
|
# Copyright (c) 2007 - 2010, FOO1 Corporation. All rights reserved.<BR>
|
|
# Copyright (c) 2007 - 2010, FOO2 Corporation. All rights reserved.<BR>
|
|
#
|
|
# License
|
|
#
|
|
##'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
Abstract, Description, Copyright, License = \
|
|
ParseHeaderCommentSection(TestCommentLinesList, "PhonyFile")
|
|
|
|
ExpectedAbstract = 'Abstract'
|
|
self.assertEqual(Abstract, ExpectedAbstract)
|
|
|
|
ExpectedDescription = 'Description'
|
|
self.assertEqual(Description, ExpectedDescription)
|
|
|
|
ExpectedCopyright = \
|
|
'Copyright (c) 2007 - 2010, Intel Corporation.'\
|
|
' All rights reserved.<BR>\n'\
|
|
'Copyright (c) 2007 - 2010, FOO1 Corporation.'\
|
|
' All rights reserved.<BR>\n'\
|
|
'Copyright (c) 2007 - 2010, FOO2 Corporation.'\
|
|
' All rights reserved.<BR>'
|
|
self.assertEqual(Copyright, ExpectedCopyright)
|
|
|
|
ExpectedLicense = \
|
|
'License'
|
|
self.assertEqual(License, ExpectedLicense)
|
|
|
|
#
|
|
# Normal case7: Abstract not present
|
|
#
|
|
def testNormalCase7(self):
|
|
TestCommentLines = \
|
|
'''
|
|
## @file
|
|
#
|
|
# Description
|
|
#
|
|
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
|
# Copyright (c) 2007 - 2010, FOO1 Corporation. All rights reserved.<BR>
|
|
# Copyright (c) 2007 - 2010, FOO2 Corporation. All rights reserved.<BR>
|
|
#
|
|
# License
|
|
#
|
|
##'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
Abstract, Description, Copyright, License = \
|
|
ParseHeaderCommentSection(TestCommentLinesList, "PhonyFile")
|
|
|
|
ExpectedAbstract = ''
|
|
self.assertEqual(Abstract, ExpectedAbstract)
|
|
|
|
ExpectedDescription = 'Description'
|
|
self.assertEqual(Description, ExpectedDescription)
|
|
|
|
ExpectedCopyright = \
|
|
'Copyright (c) 2007 - 2010, Intel Corporation.'\
|
|
' All rights reserved.<BR>\n'\
|
|
'Copyright (c) 2007 - 2010, FOO1 Corporation.'\
|
|
' All rights reserved.<BR>\n'\
|
|
'Copyright (c) 2007 - 2010, FOO2 Corporation.'\
|
|
' All rights reserved.<BR>'
|
|
self.assertEqual(Copyright, ExpectedCopyright)
|
|
|
|
ExpectedLicense = \
|
|
'License'
|
|
self.assertEqual(License, ExpectedLicense)
|
|
|
|
#
|
|
# Normal case8: Description not present
|
|
#
|
|
def testNormalCase8(self):
|
|
TestCommentLines = \
|
|
'''
|
|
## @file
|
|
# Abstact
|
|
#
|
|
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
|
#
|
|
# License
|
|
#
|
|
##'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
Abstract, Description, Copyright, License = \
|
|
ParseHeaderCommentSection(TestCommentLinesList, "PhonyFile")
|
|
|
|
ExpectedAbstract = 'Abstact'
|
|
self.assertEqual(Abstract, ExpectedAbstract)
|
|
|
|
ExpectedDescription = ''
|
|
self.assertEqual(Description, ExpectedDescription)
|
|
|
|
ExpectedCopyright = \
|
|
'Copyright (c) 2007 - 2010, Intel Corporation.'\
|
|
' All rights reserved.<BR>'
|
|
self.assertEqual(Copyright, ExpectedCopyright)
|
|
|
|
ExpectedLicense = \
|
|
'License'
|
|
self.assertEqual(License, ExpectedLicense)
|
|
|
|
#
|
|
# Error case1: No copyright found
|
|
#
|
|
def testErrorCase1(self):
|
|
TestCommentLines = \
|
|
'''
|
|
## @file
|
|
# Abstract
|
|
#
|
|
# Description
|
|
#
|
|
# License
|
|
#
|
|
##'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
self.assertRaises(Logger.FatalError,
|
|
ParseHeaderCommentSection,
|
|
TestCommentLinesList,
|
|
"PhonyFile")
|
|
|
|
#
|
|
# Error case2: non-empty non-comment lines passed in
|
|
#
|
|
def testErrorCase2(self):
|
|
TestCommentLines = \
|
|
'''
|
|
## @file
|
|
# Abstract
|
|
#
|
|
this is invalid line
|
|
# Description
|
|
#
|
|
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
|
|
# License
|
|
#
|
|
##'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
self.assertRaises(Logger.FatalError,
|
|
ParseHeaderCommentSection,
|
|
TestCommentLinesList,
|
|
"PhonyFile")
|
|
|
|
#
|
|
# Test ParseGenericComment
|
|
#
|
|
class ParseGenericCommentTest(unittest.TestCase):
|
|
def setUp(self):
|
|
pass
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
#
|
|
# Normal case1: one line of comment
|
|
#
|
|
def testNormalCase1(self):
|
|
TestCommentLines = \
|
|
'''# hello world'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
HelptxtObj = ParseGenericComment(TestCommentLinesList, 'testNormalCase1')
|
|
self.failIf(not HelptxtObj)
|
|
self.assertEqual(HelptxtObj.GetString(), 'hello world')
|
|
self.assertEqual(HelptxtObj.GetLang(), TAB_LANGUAGE_EN_US)
|
|
|
|
#
|
|
# Normal case2: multiple lines of comment
|
|
#
|
|
def testNormalCase2(self):
|
|
TestCommentLines = \
|
|
'''## hello world
|
|
# second line'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
HelptxtObj = ParseGenericComment(TestCommentLinesList, 'testNormalCase2')
|
|
self.failIf(not HelptxtObj)
|
|
self.assertEqual(HelptxtObj.GetString(),
|
|
'hello world\n' + 'second line')
|
|
self.assertEqual(HelptxtObj.GetLang(), TAB_LANGUAGE_EN_US)
|
|
|
|
#
|
|
# Normal case3: multiple lines of comment, non comment lines will be skipped
|
|
#
|
|
def testNormalCase3(self):
|
|
TestCommentLines = \
|
|
'''## hello world
|
|
This is not comment line'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
HelptxtObj = ParseGenericComment(TestCommentLinesList, 'testNormalCase3')
|
|
self.failIf(not HelptxtObj)
|
|
self.assertEqual(HelptxtObj.GetString(),
|
|
'hello world\n\n')
|
|
self.assertEqual(HelptxtObj.GetLang(), TAB_LANGUAGE_EN_US)
|
|
|
|
#
|
|
# Test ParseDecPcdGenericComment
|
|
#
|
|
class ParseDecPcdGenericCommentTest(unittest.TestCase):
|
|
def setUp(self):
|
|
pass
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
#
|
|
# Normal case1: comments with no special comment
|
|
#
|
|
def testNormalCase1(self):
|
|
TestCommentLines = \
|
|
'''## hello world
|
|
# second line'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
(HelpTxt, PcdErr) = \
|
|
ParseDecPcdGenericComment(TestCommentLinesList, 'testNormalCase1')
|
|
self.failIf(not HelpTxt)
|
|
self.failIf(PcdErr)
|
|
self.assertEqual(HelpTxt,
|
|
'hello world\n' + 'second line')
|
|
|
|
|
|
#
|
|
# Normal case2: comments with valid list
|
|
#
|
|
def testNormalCase2(self):
|
|
TestCommentLines = \
|
|
'''## hello world
|
|
# second line
|
|
# @ValidList 1, 2, 3
|
|
# other line'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
(HelpTxt, PcdErr) = \
|
|
ParseDecPcdGenericComment(TestCommentLinesList, 'UnitTest')
|
|
self.failIf(not HelpTxt)
|
|
self.failIf(not PcdErr)
|
|
self.assertEqual(HelpTxt,
|
|
'hello world\n' + 'second line\n' + 'other line')
|
|
ExpectedList = GetSplitValueList('1 2 3', TAB_SPACE_SPLIT)
|
|
ActualList = [item for item in \
|
|
GetSplitValueList(PcdErr.GetValidValue(), TAB_SPACE_SPLIT) if item]
|
|
self.assertEqual(ExpectedList, ActualList)
|
|
self.failIf(PcdErr.GetExpression())
|
|
self.failIf(PcdErr.GetValidValueRange())
|
|
|
|
#
|
|
# Normal case3: comments with valid range
|
|
#
|
|
def testNormalCase3(self):
|
|
TestCommentLines = \
|
|
'''## hello world
|
|
# second line
|
|
# @ValidRange LT 1 AND GT 2
|
|
# other line'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
(HelpTxt, PcdErr) = \
|
|
ParseDecPcdGenericComment(TestCommentLinesList, 'UnitTest')
|
|
self.failIf(not HelpTxt)
|
|
self.failIf(not PcdErr)
|
|
self.assertEqual(HelpTxt,
|
|
'hello world\n' + 'second line\n' + 'other line')
|
|
self.assertEqual(PcdErr.GetValidValueRange().strip(), 'LT 1 AND GT 2')
|
|
self.failIf(PcdErr.GetExpression())
|
|
self.failIf(PcdErr.GetValidValue())
|
|
|
|
#
|
|
# Normal case4: comments with valid expression
|
|
#
|
|
def testNormalCase4(self):
|
|
TestCommentLines = \
|
|
'''## hello world
|
|
# second line
|
|
# @Expression LT 1 AND GT 2
|
|
# other line'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
(HelpTxt, PcdErr) = \
|
|
ParseDecPcdGenericComment(TestCommentLinesList, 'UnitTest')
|
|
self.failIf(not HelpTxt)
|
|
self.failIf(not PcdErr)
|
|
self.assertEqual(HelpTxt,
|
|
'hello world\n' + 'second line\n' + 'other line')
|
|
self.assertEqual(PcdErr.GetExpression().strip(), 'LT 1 AND GT 2')
|
|
self.failIf(PcdErr.GetValidValueRange())
|
|
self.failIf(PcdErr.GetValidValue())
|
|
|
|
#
|
|
# Normal case5: comments with valid expression and no generic comment
|
|
#
|
|
def testNormalCase5(self):
|
|
TestCommentLines = \
|
|
'''# @Expression LT 1 AND GT 2'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
(HelpTxt, PcdErr) = \
|
|
ParseDecPcdGenericComment(TestCommentLinesList, 'UnitTest')
|
|
self.failIf(HelpTxt)
|
|
self.failIf(not PcdErr)
|
|
self.assertEqual(PcdErr.GetExpression().strip(), 'LT 1 AND GT 2')
|
|
self.failIf(PcdErr.GetValidValueRange())
|
|
self.failIf(PcdErr.GetValidValue())
|
|
|
|
#
|
|
# Normal case6: comments with only generic help text
|
|
#
|
|
def testNormalCase6(self):
|
|
TestCommentLines = \
|
|
'''#'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
(HelpTxt, PcdErr) = \
|
|
ParseDecPcdGenericComment(TestCommentLinesList, 'UnitTest')
|
|
self.assertEqual(HelpTxt, '\n')
|
|
self.failIf(PcdErr)
|
|
|
|
|
|
|
|
#
|
|
# Error case1: comments with both expression and valid list, use later
|
|
# ignore the former and with a warning message
|
|
#
|
|
def testErrorCase1(self):
|
|
TestCommentLines = \
|
|
'''## hello world
|
|
# second line
|
|
# @ValidList 1, 2, 3
|
|
# @Expression LT 1 AND GT 2
|
|
# other line'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
try:
|
|
ParseDecPcdGenericComment(TestCommentLinesList, 'UnitTest')
|
|
except Logger.FatalError:
|
|
pass
|
|
|
|
#
|
|
# Test ParseDecPcdTailComment
|
|
#
|
|
class ParseDecPcdTailCommentTest(unittest.TestCase):
|
|
def setUp(self):
|
|
pass
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
#
|
|
# Normal case1: comments with no SupModeList
|
|
#
|
|
def testNormalCase1(self):
|
|
TestCommentLines = \
|
|
'''## #hello world'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
(SupModeList, HelpStr) = \
|
|
ParseDecPcdTailComment(TestCommentLinesList, 'UnitTest')
|
|
self.failIf(not HelpStr)
|
|
self.failIf(SupModeList)
|
|
self.assertEqual(HelpStr,
|
|
'hello world')
|
|
|
|
#
|
|
# Normal case2: comments with one SupMode
|
|
#
|
|
def testNormalCase2(self):
|
|
TestCommentLines = \
|
|
'''## BASE #hello world'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
(SupModeList, HelpStr) = \
|
|
ParseDecPcdTailComment(TestCommentLinesList, 'UnitTest')
|
|
self.failIf(not HelpStr)
|
|
self.failIf(not SupModeList)
|
|
self.assertEqual(HelpStr,
|
|
'hello world')
|
|
self.assertEqual(SupModeList,
|
|
['BASE'])
|
|
|
|
#
|
|
# Normal case3: comments with more than one SupMode
|
|
#
|
|
def testNormalCase3(self):
|
|
TestCommentLines = \
|
|
'''## BASE UEFI_APPLICATION #hello world'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
(SupModeList, HelpStr) = \
|
|
ParseDecPcdTailComment(TestCommentLinesList, 'UnitTest')
|
|
self.failIf(not HelpStr)
|
|
self.failIf(not SupModeList)
|
|
self.assertEqual(HelpStr,
|
|
'hello world')
|
|
self.assertEqual(SupModeList,
|
|
['BASE', 'UEFI_APPLICATION'])
|
|
|
|
#
|
|
# Normal case4: comments with more than one SupMode, no help text
|
|
#
|
|
def testNormalCase4(self):
|
|
TestCommentLines = \
|
|
'''## BASE UEFI_APPLICATION'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
(SupModeList, HelpStr) = \
|
|
ParseDecPcdTailComment(TestCommentLinesList, 'UnitTest')
|
|
self.failIf(HelpStr)
|
|
self.failIf(not SupModeList)
|
|
self.assertEqual(SupModeList,
|
|
['BASE', 'UEFI_APPLICATION'])
|
|
|
|
#
|
|
# Normal case5: general comments with no supModList, extract from real case
|
|
#
|
|
def testNormalCase5(self):
|
|
TestCommentLines = \
|
|
''' # 1 = 128MB, 2 = 256MB, 3 = MAX'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
(SupModeList, HelpStr) = \
|
|
ParseDecPcdTailComment(TestCommentLinesList, 'UnitTest')
|
|
self.failIf(not HelpStr)
|
|
self.assertEqual(HelpStr,
|
|
'1 = 128MB, 2 = 256MB, 3 = MAX')
|
|
self.failIf(SupModeList)
|
|
|
|
|
|
#
|
|
# Error case2: comments with supModList contains valid and invalid
|
|
# module type
|
|
#
|
|
def testErrorCase2(self):
|
|
TestCommentLines = \
|
|
'''## BASE INVALID_MODULE_TYPE #hello world'''
|
|
|
|
CommentList = GetSplitValueList(TestCommentLines, "\n")
|
|
LineNum = 0
|
|
TestCommentLinesList = []
|
|
for Comment in CommentList:
|
|
LineNum += 1
|
|
TestCommentLinesList.append((Comment, LineNum))
|
|
|
|
try:
|
|
ParseDecPcdTailComment(TestCommentLinesList, 'UnitTest')
|
|
except Logger.FatalError:
|
|
pass
|
|
|
|
|
|
#
|
|
# Test _IsCopyrightLine
|
|
#
|
|
class _IsCopyrightLineTest(unittest.TestCase):
|
|
def setUp(self):
|
|
pass
|
|
|
|
def tearDown(self):
|
|
pass
|
|
|
|
#
|
|
# Normal case
|
|
#
|
|
def testCase1(self):
|
|
Line = 'this is a copyright ( line'
|
|
Result = _IsCopyrightLine(Line)
|
|
self.failIf(not Result)
|
|
|
|
#
|
|
# Normal case
|
|
#
|
|
def testCase2(self):
|
|
Line = 'this is a Copyright ( line'
|
|
Result = _IsCopyrightLine(Line)
|
|
self.failIf(not Result)
|
|
|
|
#
|
|
# Normal case
|
|
#
|
|
def testCase3(self):
|
|
Line = 'this is not aCopyright ( line'
|
|
Result = _IsCopyrightLine(Line)
|
|
self.failIf(Result)
|
|
|
|
#
|
|
# Normal case
|
|
#
|
|
def testCase4(self):
|
|
Line = 'this is Copyright( line'
|
|
Result = _IsCopyrightLine(Line)
|
|
self.failIf(not Result)
|
|
|
|
#
|
|
# Normal case
|
|
#
|
|
def testCase5(self):
|
|
Line = 'this is Copyright (line'
|
|
Result = _IsCopyrightLine(Line)
|
|
self.failIf(not Result)
|
|
|
|
#
|
|
# Normal case
|
|
#
|
|
def testCase6(self):
|
|
Line = 'this is not Copyright line'
|
|
Result = _IsCopyrightLine(Line)
|
|
self.failIf(Result)
|
|
|
|
#
|
|
# Normal case
|
|
#
|
|
def testCase7(self):
|
|
Line = 'Copyright (c) line'
|
|
Result = _IsCopyrightLine(Line)
|
|
self.failIf(not Result)
|
|
|
|
#
|
|
# Normal case
|
|
#
|
|
def testCase8(self):
|
|
Line = ' Copyright (c) line'
|
|
Result = _IsCopyrightLine(Line)
|
|
self.failIf(not Result)
|
|
|
|
#
|
|
# Normal case
|
|
#
|
|
def testCase9(self):
|
|
Line = 'not a Copyright '
|
|
Result = _IsCopyrightLine(Line)
|
|
self.failIf(Result)
|
|
|
|
if __name__ == '__main__':
|
|
Logger.Initialize()
|
|
unittest.main() |