Seems no help is received so far. The approach I can think of is to add this to the ECC exception list defined in file MdeModulePkg.ci.yaml.
Hello Wenyi, Could you help to check if the code changes in https://github.com/tianocore/edk2/pull/1883 works for you? If so, could you update a V3 version of the patch? Thanks in advance. Best Regards, Hao Wu > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu, Hao > A > Sent: Tuesday, August 10, 2021 12:12 PM > To: Kinney, Michael D <michael.d.kin...@intel.com>; devel@edk2.groups.io; > xiewenyi (A) <xiewen...@huawei.com> > Cc: songdongku...@huawei.com; Wang, Jian J <jian.j.w...@intel.com> > Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1] > MdeModulePkg/UefiSortLib:Add UefiSortLib unit test > > Sorry Mike, > > Do you have advice on how to deal with ECC reporting function naming issue > on the 'main' function for unit test cases? > So far, I think Wenyi has tried following the same pattern in file > MdeModulePkg\Universal\Variable\RuntimeDxe\RuntimeDxeUnitTest\Vari > ableLockRequestToLockUnitTest.c: > > /// > /// Avoid ECC error for function name that starts with lower case letter /// > #define Main main > > /** > Standard POSIX C entry point for host based unit test execution. > > @param[in] Argc Number of arguments > @param[in] Argv Array of pointers to arguments > > @retval 0 Success > @retval other Error > **/ > INT32 > Main ( > IN INT32 Argc, > IN CHAR8 *Argv[] > ) > > But it looks like the ECC checker in the merge test is still complaining. > > Best Regards, > Hao Wu > > > -----Original Message----- > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu, > Hao > > A > > Sent: Wednesday, August 4, 2021 4:24 PM > > To: xiewenyi (A) <xiewen...@huawei.com>; Kinney, Michael D > > <michael.d.kin...@intel.com>; devel@edk2.groups.io > > Cc: songdongku...@huawei.com; Wang, Jian J <jian.j.w...@intel.com> > > Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1] > > MdeModulePkg/UefiSortLib:Add UefiSortLib unit test > > > > > -----Original Message----- > > > From: xiewenyi (A) <xiewen...@huawei.com> > > > Sent: Wednesday, August 4, 2021 4:05 PM > > > To: Wu, Hao A <hao.a...@intel.com>; devel@edk2.groups.io > > > Cc: songdongku...@huawei.com; Wang, Jian J <jian.j.w...@intel.com> > > > Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1] > > > MdeModulePkg/UefiSortLib:Add UefiSortLib unit test > > > > > > > > > > > > On 2021/8/2 9:56, Wu, Hao A wrote: > > > >> -----Original Message----- > > > >> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of > > > >> Wu, Hao A > > > >> Sent: Thursday, July 29, 2021 4:26 PM > > > >> To: Wenyi Xie <xiewen...@huawei.com>; devel@edk2.groups.io; > Wang, > > > >> Jian J <jian.j.w...@intel.com> > > > >> Cc: songdongku...@huawei.com > > > >> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1] > > > >> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test > > > >> > > > >>> -----Original Message----- > > > >>> From: Wenyi Xie <xiewen...@huawei.com> > > > >>> Sent: Thursday, July 29, 2021 4:01 PM > > > >>> To: devel@edk2.groups.io; Wang, Jian J <jian.j.w...@intel.com>; > > > >>> Wu, Hao A <hao.a...@intel.com> > > > >>> Cc: songdongku...@huawei.com; xiewen...@huawei.com > > > >>> Subject: [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add > > > >>> UefiSortLib unit test > > > >>> > > > >>> Adding two unit test case for UefiSortLib. One is a test on > > > >>> sorting an array of > > > >>> UINT32 by using PerformQuickSort, another is a test on comparing > > > >>> the same buffer by using StringCompare. > > > >> > > > >> > > > >> Thanks. > > > >> Reviewed-by: Hao A Wu <hao.a...@intel.com> > > > > > > > > > > > > Sorry, I found that there are a couple of coding format style > > > > check failures > > > when merging the patch. > > > > Could you help to resolve them and then create a test pull request > > > > on the > > > GitHub for verification? Thanks in advance. > > > > (I think you can take the case under > > > > > MdeModulePkg/Universal/Variable/RuntimeDxe/RuntimeDxeUnitTest/ > > for > > > > reference.) > > > > > > > > > > Hi, Wu Hao > > > > > > I try to deal with the coding format style check failures, and meet > > > a failure which I am not sure how to solve. > > > I take the case you told for reference, but still there's a failure > > > said the define should be capital letters. > > > but if change it to capital letters, there will be another error > > > Function name does not follow the rules: 1. First character should > > > be upper case 2. Must contain lower case characters 3. No white > > > space characters > > > > > > #define Main main > > > > > > INT32 > > > Main ( > > > IN INT32 Argc, > > > IN CHAR8 *Argv[] > > > ) > > > { > > > UnitTestingEntry (); > > > return 0; > > > } > > > > > > Hello Mike, > > > > I saw the below commit: > > SHA-1: dcaa93936591883aa7826eb45ef00416ad82ef08 > > * MdeModulePkg/Variable/RuntimeDxe: Add Variable Lock Protocol Unit > > Tests has a similar case that should involve the naming of the 'main' > > function within the unit test codes. > > > > I am wondering how the open raised by Wenyi was handled back then. > > Do you have suggestions for this case? Thanks in advance. > > > > Best Regards, > > Hao Wu > > > > > > > > > > Thanks > > > Wenyi > > > > > > > Error details: > > > > 2021-08-02T01:09:28.5955820Z ##[section]Starting: Build and Test > > > > MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64 2021-08- > > > 02T01:09:28.5960733Z > > > > > > ========================================================== > > ======= > > > ============= > > > > 2021-08-02T01:09:28.5961018Z Task : Command Line > > > > 2021-08-02T01:09:28.5961258Z Description : Run a command line > > > > with > > > arguments > > > > 2021-08-02T01:09:28.5961502Z Version : 1.1.3 > > > > 2021-08-02T01:09:28.5961897Z Author : Microsoft Corporation > > > > 2021-08-02T01:09:28.5962259Z Help : [More > > > Information](https://go.microsoft.com/fwlink/?LinkID=613735) > > > > 2021-08-02T01:09:28.5962678Z > > > > > > > > > > ========================================================== > > ======= > > > ===== > > > > ======== 2021-08-02T01:09:29.3504946Z (node:3659) Warning: Use > > > > Cipheriv for counter mode of aes-256-ctr > > > > 2021-08-02T01:09:29.3510020Z > > > > (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr > > > > 2021-08-02T01:09:29.3511551Z (node:3659) Warning: Use Cipheriv for > > > > counter mode of aes-256-ctr 2021-08-02T01:09:29.3513605Z > > > > (node:3659) > > > > Warning: Use Cipheriv for counter mode of aes-256-ctr > > > > 2021-08-02T01:09:29.3516798Z (node:3659) Warning: Use Cipheriv for > > > > counter mode of aes-256-ctr 2021-08-02T01:09:29.3517536Z > > > > (node:3659) > > > > Warning: Use Cipheriv for counter mode of aes-256-ctr > > > > 2021-08-02T01:09:29.3518178Z (node:3659) Warning: Use Cipheriv for > > > > counter mode of aes-256-ctr 2021-08-02T01:09:29.3545461Z > > > > > [command]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_buil > > > > d -c .pytool/CISettings.py -p MdeModulePkg -t RELEASE,NO-TARGET -a > > > > IA32,X64,ARM,AARCH64,RISCV64 TOOL_CHAIN_TAG=GCC5 > > > > 2021-08-02T01:09:29.3546707Z SECTION - Init SDE > > > > 2021-08-02T01:09:29.3547571Z WARNING - Using Pip Tools based > > > > BaseTools 2021-08-02T01:09:29.3548395Z SECTION - Loading Plugins > > > > 2021-08-02T01:09:29.3549212Z SECTION - Start Invocable Tool > > > > 2021-08-02T01:09:29.3550018Z SECTION - Getting Environment > > > > 2021-08-02T01:09:29.3550794Z SECTION - Loading plugins > > > > 2021-08-02T01:09:29.3551675Z SECTION - Building MdeModulePkg > > Package > > > > 2021-08-02T01:09:29.3552693Z PROGRESS - --Running MdeModulePkg: > > > > EccCheck Test NO-TARGET -- 2021-08-02T01:09:33.0697006Z ERROR - > > > > 2021-08-02T01:09:33.0698018Z ERROR - EFI coding style error > > > > 2021-08-02T01:09:33.0698748Z ERROR - *Error code: 5007 > > > > 2021-08-02T01:09:33.0700631Z ERROR - *There should be no > > > > initialization of a variable as part of its declaration > > > > 2021-08-02T01:09:33.0702675Z ERROR - *file: > > > > > > > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS > > > > or tLibUnitTest.c 2021-08-02T01:09:33.0703421Z ERROR - *Line number: > > > > 77 2021-08-02T01:09:33.0703929Z ERROR - *Variable Name: TestCount > > > > 2021-08-02T01:09:33.0715684Z ERROR - 2021-08-02T01:09:33.0716634Z > > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0717372Z ERROR > > > > - *Error code: 5007 2021-08-02T01:09:33.0718214Z ERROR - *There > > > > should be no initialization of a variable as part of its > > > > declaration 2021-08-02T01:09:33.0719195Z ERROR - *file: > > > > > > > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS > > > > or tLibUnitTest.c 2021-08-02T01:09:33.0720631Z ERROR - *Line number: > > > > 78 2021-08-02T01:09:33.0721451Z ERROR - *Variable Name: TestBuffer > > > > 2021-08-02T01:09:33.0722114Z ERROR - 2021-08-02T01:09:33.0724953Z > > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0725713Z ERROR > > > > - *Error code: 5007 2021-08-02T01:09:33.0726562Z ERROR - *There > > > > should be no initialization of a variable as part of its > > > > declaration 2021-08-02T01:09:33.0727526Z ERROR - *file: > > > > > > > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS > > > > or tLibUnitTest.c 2021-08-02T01:09:33.0728345Z ERROR - *Line number: > > > > 79 2021-08-02T01:09:33.0729046Z ERROR - *Variable Name: TestResult > > > > 2021-08-02T01:09:33.0729694Z ERROR - 2021-08-02T01:09:33.0732496Z > > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0733224Z ERROR > > > > - *Error code: 7001 2021-08-02T01:09:33.0734114Z ERROR - *There > > > > should be no use of int, unsigned, char, void, long in any .c, .h > > > > or .asl files 2021-08-02T01:09:33.0737620Z ERROR - *file: > > > > > > > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS > > > > or tLibUnitTest.c 2021-08-02T01:09:33.0739185Z ERROR - *Line number: > > > > 117 2021-08-02T01:09:33.0741301Z ERROR - *[main] Return type int > > > > 2021-08-02T01:09:33.0744099Z ERROR - 2021-08-02T01:09:33.0744829Z > > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0745459Z ERROR > > > > - *Error code: 7001 2021-08-02T01:09:33.0746821Z ERROR - *There > > > > should be no use of int, unsigned, char, void, long in any .c, .h > > > > or .asl files 2021-08-02T01:09:33.0747774Z ERROR - *file: > > > > > > > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS > > > > or tLibUnitTest.c 2021-08-02T01:09:33.0749076Z ERROR - *Line number: > > > > 117 2021-08-02T01:09:33.0749713Z ERROR - *Parameter argc > > > > 2021-08-02T01:09:33.0750999Z ERROR - 2021-08-02T01:09:33.0751607Z > > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0754599Z ERROR > > > > - *Error code: 7001 2021-08-02T01:09:33.0761175Z ERROR - *There > > > > should be no use of int, unsigned, char, void, long in any .c, .h > > > > or .asl files 2021-08-02T01:09:33.0762167Z ERROR - *file: > > > > > > > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS > > > > or tLibUnitTest.c 2021-08-02T01:09:33.0763160Z ERROR - *Line number: > > > > 117 2021-08-02T01:09:33.0763741Z ERROR - *Parameter argv > > > > 2021-08-02T01:09:33.0764290Z ERROR - 2021-08-02T01:09:33.0764843Z > > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0766810Z ERROR > > > > - *Error code: 8006 2021-08-02T01:09:33.0767819Z ERROR - *Function > > > > name does not follow the rules: 1. First character should be upper case > 2. > > > > Must contain lower case characters 3. No white space characters > > > > 2021-08-02T01:09:33.0768881Z ERROR - *file: > > > > > > > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS > > > > or tLibUnitTest.c 2021-08-02T01:09:33.0769619Z ERROR - *Line number: > > > > 181 2021-08-02T01:09:33.0773329Z ERROR - *The function name [main] > > > > does not follow the rules 2021-08-02T01:09:33.0791935Z ERROR - > > > > 2021-08-02T01:09:33.0793865Z ERROR - EFI coding style error > > > > 2021-08-02T01:09:33.0794555Z ERROR - *Error code: 9002 > > > > 2021-08-02T01:09:33.0795350Z ERROR - *The function headers should > > > > follow Doxygen special documentation blocks in section 2.3.5 > > > > 2021-08-02T01:09:33.0796271Z ERROR - *file: > > > > > > > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS > > > > or tLibUnitTest.c 2021-08-02T01:09:33.0796985Z ERROR - *Line number: > > > > 178 2021-08-02T01:09:33.0797610Z ERROR - *No doxygen tags in > > > > comment 2021-08-02T01:09:33.0798208Z ERROR - > > > > 2021-08-02T01:09:33.0798859Z ERROR - --->Test Failed: EccCheck > > > > Test NO-TARGET returned 1 2021-08-02T01:09:33.0807351Z PROGRESS - > --Running MdeModulePkg: > > Dsc > > > > Complete Check Test NO-TARGET -- 2021-08-02T01:09:33.1524790Z > > > PROGRESS > > > > - --->Test Success: Dsc Complete Check Test NO-TARGET > > > > 2021-08-02T01:09:33.1536004Z PROGRESS - --Running MdeModulePkg: > > Char > > > > Encoding Check Test NO-TARGET -- 2021-08-02T01:09:33.6280380Z > > > PROGRESS > > > > - --->Test Success: Char Encoding Check Test NO-TARGET > > > > 2021-08-02T01:09:33.6289076Z PROGRESS - --Running MdeModulePkg: > > > > License Check Test NO-TARGET -- 2021-08-02T01:09:33.6495642Z > > > > PROGRESS > > > > - --->Test Success: License Check Test NO-TARGET > > > > 2021-08-02T01:09:33.6508125Z PROGRESS - --Running MdeModulePkg: > > > > Compiler Plugin RELEASE -- 2021-08-02T01:09:33.6785178Z PROGRESS - > > > > Start time: 2021-08-02 01:09:33.677952 > > > > 2021-08-02T01:09:33.6787716Z > > > PROGRESS - Setting up the Environment 2021-08-02T01:09:33.7725244Z > > > PROGRESS - Running Pre Build 2021-08-02T01:09:33.7740357Z PROGRESS - > > > Running Build RELEASE 2021-08-02T01:17:18.5479885Z PROGRESS - > > > Running Post Build > > > > 2021-08-02T01:17:18.5511807Z PROGRESS - End time: 2021-08-02 > > > 01:17:18.549974 Total time Elapsed: 0:07:44 > > > > 2021-08-02T01:17:18.5512997Z PROGRESS - --->Test Success: Compiler > > > > Plugin RELEASE 2021-08-02T01:17:18.5519284Z PROGRESS - --Running > > > > MdeModulePkg: Library Class Check Test NO-TARGET -- > > > > 2021-08-02T01:17:18.5639216Z PROGRESS - --->Test Success: Library > > > > Class Check Test NO-TARGET 2021-08-02T01:17:18.5648791Z PROGRESS - > > > > --Running MdeModulePkg: Dependency Check Test NO-TARGET -- > > > > 2021-08-02T01:17:18.7306611Z PROGRESS - --->Test Success: > > > > Dependency Check Test NO-TARGET 2021-08-02T01:17:18.7316162Z > > > > PROGRESS - --Running > > > > MdeModulePkg: Spell Check Test NO-TARGET -- > > > > 2021-08-02T01:17:23.7922166Z WARNING - --->Test Skipped: in plugin! > > > > Spell Check Test NO-TARGET 2021-08-02T01:17:23.7934112Z PROGRESS - > > > > --Running MdeModulePkg: Guid Check Test NO-TARGET -- > > > > 2021-08-02T01:17:27.1928850Z PROGRESS - --->Test Success: Guid > > > > Check Test NO-TARGET 2021-08-02T01:17:27.1939129Z PROGRESS - > > > > --Running > > > > MdeModulePkg: Host Unit Test Dsc Complete Check Test NO-TARGET -- > > > > 2021-08-02T01:17:27.3703640Z PROGRESS - --->Test Success: Host > > > > Unit Test Dsc Complete Check Test NO-TARGET > > > > 2021-08-02T01:17:27.3731676Z ERROR - Overall Build Status: Error > > > > 2021-08-02T01:17:27.3733283Z PROGRESS - There were 1 failures out > > > > of 10 attempts 2021-08-02T01:17:27.3734501Z SECTION - Summary > > > > 2021-08-02T01:17:27.3735613Z ERROR - Error > > > > 2021-08-02T01:17:27.4159842Z > > > > ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_buil > > > > d failed with return code: 1 2021-08-02T01:17:27.4173134Z > > > > ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_buil > > > > d > > > > failed with error: > > > > /opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build failed > > > > with return code: 1 2021-08-02T01:17:27.4178252Z ##[section]Finishing: > > > > Build and Test MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64 > > > > > > > > Best Regards, > > > > Hao Wu > > > > > > > > > > > >> > > > >> I will wait a couple days before merging to see if any additional > > > >> comment from other reviewers. > > > >> > > > >> Best Regards, > > > >> Hao Wu > > > >> > > > >> > > > >>> > > > >>> Cc: Jian J Wang <jian.j.w...@intel.com> > > > >>> Cc: Hao A Wu <hao.a...@intel.com> > > > >>> Signed-off-by: Wenyi Xie <xiewen...@huawei.com> > > > >>> --- > > > >>> MdeModulePkg/Test/MdeModulePkgHostTest.dsc | > > > >>> 6 > + > > > >>> > > > >>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in > > > >>> f > > > >>> | > > > >>> 32 > > > >>> ++++ > > > >>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c > > | 188 > > > >>> ++++++++++++++++++++ > > > >>> 3 files changed, 226 insertions(+) > > > >>> > > > >>> diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc > > > >>> b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc > > > >>> index 4da4692c8451..c9ec835df65d 100644 > > > >>> --- a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc > > > >>> +++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc > > > >>> @@ -41,3 +41,9 @@ [Components] > > > >>> <PcdsFixedAtBuild> > > > >>> > > > >>> > > > >> > > > gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDis > > > >>> able|TRUE > > > >>> } > > > >>> + > > > >>> + > > MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf { > > > >>> + <LibraryClasses> > > > >>> + > > > >>> + UefiSortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf > > > >>> + > > > >>> + > > DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib > > > >>> + DevicePathLib|.i > > > >>> + DevicePathLib|nf > > > >>> + } > > > >>> diff --git > > > >>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest. > > > >>> in > > > >>> f > > > >>> > > b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in > > > >>> f > > > >>> new file mode 100644 > > > >>> index 000000000000..85d8dcd69619 > > > >>> --- /dev/null > > > >>> +++ > > > >> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.i > > > >> n > > > >>> +++ f > > > >>> @@ -0,0 +1,32 @@ > > > >>> +## @file > > > >>> +# This is a unit test for the UefiSortLib. > > > >>> +# > > > >>> +# Copyright (C) Huawei Technologies Co., Ltd. All rights > > > >>> +reserved # > > > >>> +SPDX-License-Identifier: BSD-2-Clause-Patent ## > > > >>> + > > > >>> +[Defines] > > > >>> + INF_VERSION = 0x00010017 > > > >>> + BASE_NAME = UefiSortLibUnitTest > > > >>> + FILE_GUID = 271337A3-0D79-BA3E-BC03-714E518E3B1B > > > >>> + VERSION_STRING = 1.0 > > > >>> + MODULE_TYPE = HOST_APPLICATION > > > >>> + > > > >>> +# > > > >>> +# The following information is for reference only and not > > > >>> +required by the > > > >>> build tools. > > > >>> +# > > > >>> +# VALID_ARCHITECTURES = IA32 X64 > > > >>> +# > > > >>> + > > > >>> +[Sources] > > > >>> + UefiSortLibUnitTest.c > > > >>> + > > > >>> +[Packages] > > > >>> + MdePkg/MdePkg.dec > > > >>> + MdeModulePkg/MdeModulePkg.dec > > > >>> + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec > > > >>> + > > > >>> +[LibraryClasses] > > > >>> + UnitTestLib > > > >>> + DebugLib > > > >>> + UefiSortLib > > > >>> diff --git > > > >>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest. > > > >>> c > > > >>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest. > > > >>> c > > > >>> new file mode 100644 > > > >>> index 000000000000..71f30d8b9f7f > > > >>> --- /dev/null > > > >>> +++ > > b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest. > > > >>> +++ c > > > >>> @@ -0,0 +1,188 @@ > > > >>> +/** @file > > > >>> + Unit tests of the UefiSortLib > > > >>> + > > > >>> + Copyright (C) Huawei Technologies Co., Ltd. All rights > > > >>> + reserved > > > >>> + SPDX-License-Identifier: BSD-2-Clause-Patent > > > >>> + > > > >>> +**/ > > > >>> + > > > >>> +#include <stdio.h> > > > >>> +#include <string.h> > > > >>> +#include <stdarg.h> > > > >>> +#include <stddef.h> > > > >>> +#include <setjmp.h> > > > >>> +#include <cmocka.h> > > > >>> + > > > >>> +#include <Uefi.h> > > > >>> +#include <Library/BaseLib.h> > > > >>> +#include <Library/DebugLib.h> > > > >>> +#include <Library/MemoryAllocationLib.h> > > > >>> + > > > >>> +#include <Library/UnitTestLib.h> #include <Library/SortLib.h> > > > >>> + > > > >>> +#define UNIT_TEST_APP_NAME "UefiSortLib Unit Tests" > > > >>> +#define UNIT_TEST_APP_VERSION "1.0" > > > >>> + > > > >>> +#define TEST_ARRAY_SIZE_9 9 > > > >>> + > > > >>> +/** > > > >>> + The function is called by PerformQuickSort to compare int values. > > > >>> + > > > >>> + @param[in] Left The pointer to first buffer. > > > >>> + @param[in] Right The pointer to second buffer. > > > >>> + > > > >>> + @retval 0 Buffer1 equal to Buffer2. > > > >>> + @return <0 Buffer1 is less than Buffer2. > > > >>> + @return >0 Buffer1 is greater than Buffer2. > > > >>> + > > > >>> +**/ > > > >>> +INTN > > > >>> +EFIAPI > > > >>> +TestCompareFunction ( > > > >>> + IN CONST VOID *Left, > > > >>> + IN CONST VOID *Right > > > >>> + ) > > > >>> +{ > > > >>> + if (*(UINT32*)Right > *(UINT32*)Left) { > > > >>> + return 1; > > > >>> + } else if (*(UINT32*)Right < *(UINT32*)Left) { > > > >>> + return -1; > > > >>> + } > > > >>> + > > > >>> + return 0; > > > >>> +} > > > >>> + > > > >>> +/** > > > >>> + Unit test for PerformQuickSort () API of the UefiSortLib. > > > >>> + > > > >>> + @param[in] Context [Optional] An optional parameter that > > enables: > > > >>> + 1) test-case reuse with varied parameters > > > >>> and > > > >>> + 2) test-case re-entry for Target tests that > > > >>> need a > > > >>> + reboot. This parameter is a VOID* and it > > > >>> is the > > > >>> + responsibility of the test author to ensure > > > >>> that the > > > >>> + contents are well understood by all test > > > >>> cases that may > > > >>> + consume it. > > > >>> + > > > >>> + @retval UNIT_TEST_PASSED The Unit test has completed > and > > the > > > >>> test > > > >>> + case was successful. > > > >>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion > > > >>> + has > > > >> failed. > > > >>> +**/ > > > >>> +UNIT_TEST_STATUS > > > >>> +EFIAPI > > > >>> +SortUINT32ArrayShouldSucceed ( > > > >>> + IN UNIT_TEST_CONTEXT Context > > > >>> + ) > > > >>> +{ > > > >>> + UINTN TestCount = TEST_ARRAY_SIZE_9; > > > >>> + UINT32 TestBuffer[TEST_ARRAY_SIZE_9] = {1, 2, 3, 4, 5, 6, 7 > > > >>> +,8, 9}; > > > >>> + UINT32 TestResult[TEST_ARRAY_SIZE_9] = {9, 8, 7, 6, 5, 4, 3, > > > >>> +2, 1}; > > > >>> + > > > >>> + PerformQuickSort (TestBuffer, TestCount, sizeof (UINT32), > > > >>> + (SORT_COMPARE)TestCompareFunction); > > > >>> + UT_ASSERT_MEM_EQUAL (TestBuffer, TestResult, sizeof (UINT32) > > > >>> + * TEST_ARRAY_SIZE_9); > > > >>> + > > > >>> + return UNIT_TEST_PASSED; > > > >>> +} > > > >>> + > > > >>> +/** > > > >>> + Unit test for StringCompare () API of the UefiSortLib. > > > >>> + > > > >>> + @param[in] Context [Optional] An optional parameter that > > enables: > > > >>> + 1) test-case reuse with varied parameters > > > >>> and > > > >>> + 2) test-case re-entry for Target tests that > > > >>> need a > > > >>> + reboot. This parameter is a VOID* and it > > > >>> is the > > > >>> + responsibility of the test author to ensure > > > >>> that the > > > >>> + contents are well understood by all test > > > >>> cases that may > > > >>> + consume it. > > > >>> + > > > >>> + @retval UNIT_TEST_PASSED The Unit test has completed > and > > the > > > >>> test > > > >>> + case was successful. > > > >>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion > > > >>> + has > > > >> failed. > > > >>> +**/ > > > >>> +UNIT_TEST_STATUS > > > >>> +EFIAPI > > > >>> +CompareSameBufferShouldSucceed ( > > > >>> + IN UNIT_TEST_CONTEXT Context > > > >>> + ) > > > >>> +{ > > > >>> + INTN retval; > > > >>> + CONST CHAR16* TestBuffer[] = { L"abcdefg" }; > > > >>> + > > > >>> + retval = StringCompare (TestBuffer, TestBuffer); > > > >>> + UT_ASSERT_TRUE (retval == 0); > > > >>> + > > > >>> + return UNIT_TEST_PASSED; > > > >>> +} > > > >>> + > > > >>> +/** > > > >>> + Initialze the unit test framework, suite, and unit tests for > > > >>> +the > > > >>> + UefiSortLib and run the UefiSortLib unit test. > > > >>> + > > > >>> + @retval EFI_SUCCESS All test cases were dispatched. > > > >>> + @retval EFI_OUT_OF_RESOURCES There are not enough > resources > > > >>> available to > > > >>> + initialize the unit tests. > > > >>> +**/ > > > >>> +STATIC > > > >>> +EFI_STATUS > > > >>> +EFIAPI > > > >>> +UnitTestingEntry ( > > > >>> + VOID > > > >>> + ) > > > >>> +{ > > > >>> + EFI_STATUS Status; > > > >>> + UNIT_TEST_FRAMEWORK_HANDLE Framework; > > > >>> + UNIT_TEST_SUITE_HANDLE SortTests; > > > >>> + > > > >>> + Framework = NULL; > > > >>> + > > > >>> + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME, > > > >>> + UNIT_TEST_APP_VERSION )); > > > >>> + > > > >>> + // > > > >>> + // Start setting up the test framework for running the tests. > > > >>> + // > > > >>> + Status = InitUnitTestFramework (&Framework, > > UNIT_TEST_APP_NAME, > > > >>> + gEfiCallerBaseName, UNIT_TEST_APP_VERSION); if (EFI_ERROR > > > >>> + (Status)) > > > >> { > > > >>> + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. > > > >>> + Status > > > >>> = %r\n", Status)); > > > >>> + goto EXIT; > > > >>> + } > > > >>> + > > > >>> + // > > > >>> + // Populate the UefiSortLib Unit Test Suite. > > > >>> + // > > > >>> + Status = CreateUnitTestSuite (&SortTests, Framework, > > > >>> + "UefiSortLib Sort Tests", "UefiSortLib.SortLib", NULL, NULL); > > > >>> + if > > (EFI_ERROR (Status)) { > > > >>> + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for > > > >>> + UefiSortLib > > > >>> API Tests\n")); > > > >>> + Status = EFI_OUT_OF_RESOURCES; > > > >>> + goto EXIT; > > > >>> + } > > > >>> + > > > >>> + // > > > >>> + // > > > >>> + --------------Suite--------Description------------Name-------- > > > >>> + -- > > > >>> + -- > > > >>> + -- > > > >>> + Fu > > > >>> + nction----------------Pre---Post---Context----------- > > > >>> + // > > > >>> + AddTestCase (SortTests, "Sort the Array", "Sort", > > > >>> SortUINT32ArrayShouldSucceed, NULL, NULL, NULL); > > > >>> + AddTestCase (SortTests, "Compare the Buffer", "Compare", > > > >>> CompareSameBufferShouldSucceed, NULL, NULL, NULL); > > > >>> + > > > >>> + // > > > >>> + // Execute the tests. > > > >>> + // > > > >>> + Status = RunAllTestSuites (Framework); > > > >>> + > > > >>> +EXIT: > > > >>> + if (Framework) { > > > >>> + FreeUnitTestFramework (Framework); > > > >>> + } > > > >>> + > > > >>> + return Status; > > > >>> +} > > > >>> + > > > >>> +/** > > > >>> + Standard POSIX C entry point for host based unit test execution. > > > >>> +**/ > > > >>> +int > > > >>> +main ( > > > >>> + int argc, > > > >>> + char *argv[] > > > >>> + ) > > > >>> +{ > > > >>> + return UnitTestingEntry (); > > > >>> +} > > > >>> -- > > > >>> 2.20.1.windows.1 > > > >> > > > >> > > > >> > > > >> > > > >> > > > > > > > > . > > > > > > > > > > > > > > > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#79071): https://edk2.groups.io/g/devel/message/79071 Mute This Topic: https://groups.io/mt/84523899/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-