[edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test

Wu, Hao A hao.a.wu at intel.com
Wed Aug 11 01:50:01 UTC 2021


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 at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Wu, Hao
> A
> Sent: Tuesday, August 10, 2021 12:12 PM
> To: Kinney, Michael D <michael.d.kinney at intel.com>; devel at edk2.groups.io;
> xiewenyi (A) <xiewenyi2 at huawei.com>
> Cc: songdongkuang at huawei.com; Wang, Jian J <jian.j.wang at 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 at edk2.groups.io <devel at edk2.groups.io> On Behalf Of Wu,
> Hao
> > A
> > Sent: Wednesday, August 4, 2021 4:24 PM
> > To: xiewenyi (A) <xiewenyi2 at huawei.com>; Kinney, Michael D
> > <michael.d.kinney at intel.com>; devel at edk2.groups.io
> > Cc: songdongkuang at huawei.com; Wang, Jian J <jian.j.wang at intel.com>
> > Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
> > MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
> >
> > > -----Original Message-----
> > > From: xiewenyi (A) <xiewenyi2 at huawei.com>
> > > Sent: Wednesday, August 4, 2021 4:05 PM
> > > To: Wu, Hao A <hao.a.wu at intel.com>; devel at edk2.groups.io
> > > Cc: songdongkuang at huawei.com; Wang, Jian J <jian.j.wang at 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 at edk2.groups.io <devel at edk2.groups.io> On Behalf Of
> > > >> Wu, Hao A
> > > >> Sent: Thursday, July 29, 2021 4:26 PM
> > > >> To: Wenyi Xie <xiewenyi2 at huawei.com>; devel at edk2.groups.io;
> Wang,
> > > >> Jian J <jian.j.wang at intel.com>
> > > >> Cc: songdongkuang at huawei.com
> > > >> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
> > > >> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
> > > >>
> > > >>> -----Original Message-----
> > > >>> From: Wenyi Xie <xiewenyi2 at huawei.com>
> > > >>> Sent: Thursday, July 29, 2021 4:01 PM
> > > >>> To: devel at edk2.groups.io; Wang, Jian J <jian.j.wang at intel.com>;
> > > >>> Wu, Hao A <hao.a.wu at intel.com>
> > > >>> Cc: songdongkuang at huawei.com; xiewenyi2 at 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.wu at 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.wang at intel.com>
> > > >>> Cc: Hao A Wu <hao.a.wu at intel.com>
> > > >>> Signed-off-by: Wenyi Xie <xiewenyi2 at 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/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list