mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-31 19:23:54 +01:00 
			
		
		
		
	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
		
			
				
	
	
		
			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() |