Hi Wu Hao, Thank you for your help. I will have a try and send a V3 patch later.
Best Regards, Wenyi On 2021/8/11 9:50, Wu, Hao A wrote: > 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 (#79076): https://edk2.groups.io/g/devel/message/79076 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] -=-=-=-=-=-=-=-=-=-=-=-