mirror of https://github.com/acidanthera/audk.git
923 lines
28 KiB
Python
923 lines
28 KiB
Python
|
## @file
|
||
|
# This file contain unit test for CommentParsing
|
||
|
#
|
||
|
# 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 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 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(), 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(), 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(), 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()
|