From nobody Tue Jan 14 22:56:43 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1513728066121270.53867790676816; Tue, 19 Dec 2017 16:01:06 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id 512C8222447B8; Tue, 19 Dec 2017 15:55:44 -0800 (PST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 54A45221C1944 for ; Tue, 19 Dec 2017 15:55:38 -0800 (PST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Dec 2017 16:00:25 -0800 Received: from mdkinney-mobl2.amr.corp.intel.com ([10.241.98.58]) by FMSMGA003.fm.intel.com with ESMTP; 19 Dec 2017 16:00:24 -0800 X-Original-To: edk2-devel@lists.01.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.43; helo=mga05.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,429,1508828400"; d="scan'208";a="13197422" From: "Kinney, Michael D" To: edk2-devel@lists.01.org Date: Tue, 19 Dec 2017 16:00:14 -0800 Message-Id: <20171220000014.9140-11-michael.d.kinney@intel.com> X-Mailer: git-send-email 2.14.2.windows.3 In-Reply-To: <20171220000014.9140-1-michael.d.kinney@intel.com> References: <20171220000014.9140-1-michael.d.kinney@intel.com> Subject: [edk2] [staging/edk2-test Patch 10/10] MsUnitTestPkg: Fix EDK II style issues X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Michael D Kinney , Liming Gao MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Cc: Sean Brogan Cc: Liming Gao Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney --- .../Library/UnitTestAssertLib/UnitTestAssertLib.c | 344 ++++++++---- .../UnitTestBootUsbClassLib/UnitTestBootUsb.c | 167 +++--- .../UnitTestBootUsbMicrosoftLib/UnitTestBootUsb.c | 164 +++--- MsUnitTestPkg/Library/UnitTestLib/Md5.c | 139 +++-- MsUnitTestPkg/Library/UnitTestLib/UnitTestLib.c | 577 ++++++++++-------= ---- .../Library/UnitTestLogLib/UnitTestLogLib.c | 187 ++++--- .../UnitTestPersistenceFileSystemLib.c | 360 +++++++------ .../UnitTestPersistenceLibNull.c | 82 +-- .../UnitTestResultReportLib.c | 208 ++++---- .../Sample/SampleUnitTestApp/SampleUnitTestApp.c | 100 ++-- 10 files changed, 1199 insertions(+), 1129 deletions(-) diff --git a/MsUnitTestPkg/Library/UnitTestAssertLib/UnitTestAssertLib.c b/= MsUnitTestPkg/Library/UnitTestAssertLib/UnitTestAssertLib.c index 5721102818..48d26ae341 100644 --- a/MsUnitTestPkg/Library/UnitTestAssertLib/UnitTestAssertLib.c +++ b/MsUnitTestPkg/Library/UnitTestAssertLib/UnitTestAssertLib.c @@ -1,27 +1,27 @@ -/** -Implement UnitTestLib - -Copyright (c) 2016, Microsoft Corporation - -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notic= e, -this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS= " AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPL= IED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS= CLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY D= IRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUD= ING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF U= SE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO= RY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLI= GENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/** @file + Implement UnitTestLib + + Copyright (c) 2016, Microsoft Corporation + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are m= et: + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright not= ice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE D= ISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY= DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCL= UDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF= USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY TH= EORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEG= LIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 **/ #include @@ -35,17 +35,30 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. BOOLEAN EFIAPI UnitTestAssertTrue ( - IN UNIT_TEST_FRAMEWORK_HANDLE Framework, - IN BOOLEAN Expression, - IN CONST CHAR8 *FunctionName, - IN UINTN LineNumber, - IN CONST CHAR8 *Description + IN UNIT_TEST_FRAMEWORK_HANDLE Framework, + IN BOOLEAN Expression, + IN CONST CHAR8 *FunctionName, + IN UINTN LineNumber, + IN CONST CHAR8 *Description ) { - if (!Expression) - { - UnitTestLogFailure(Framework, FAILURETYPE_ASSERTTRUE, "%a::%d Expressi= on (%a) is not TRUE!\n", FunctionName, LineNumber, Description); - UnitTestLog(Framework, DEBUG_ERROR, "[ASSERT FAIL] %a::%d Expression (= %a) is not TRUE!\n", FunctionName, LineNumber, Description ); + if (!Expression) { + UnitTestLogFailure ( + Framework, + FAILURETYPE_ASSERTTRUE, + "%a::%d Expression (%a) is not TRUE!\n", + FunctionName, + LineNumber, + Description + ); + UnitTestLog ( + Framework, + DEBUG_ERROR, + "[ASSERT FAIL] %a::%d Expression (%a) is not TRUE!\n", + FunctionName, + LineNumber, + Description + ); } return Expression; } @@ -54,17 +67,30 @@ UnitTestAssertTrue ( BOOLEAN EFIAPI UnitTestAssertFalse ( - IN UNIT_TEST_FRAMEWORK_HANDLE Framework, - IN BOOLEAN Expression, - IN CONST CHAR8 *FunctionName, - IN UINTN LineNumber, - IN CONST CHAR8 *Description + IN UNIT_TEST_FRAMEWORK_HANDLE Framework, + IN BOOLEAN Expression, + IN CONST CHAR8 *FunctionName, + IN UINTN LineNumber, + IN CONST CHAR8 *Description ) { - if (Expression) - { - UnitTestLogFailure(Framework, FAILURETYPE_ASSERTFALSE, "%a::%d Express= ion(%a) is not FALSE!\n", FunctionName, LineNumber, Description ); - UnitTestLog(Framework, DEBUG_ERROR,"[ASSERT FAIL] %a::%d Expression (%= a) is not FALSE!\n", FunctionName, LineNumber, Description ); + if (Expression) { + UnitTestLogFailure ( + Framework, + FAILURETYPE_ASSERTFALSE, + "%a::%d Expression(%a) is not FALSE!\n", + FunctionName, + LineNumber, + Description + ); + UnitTestLog ( + Framework, + DEBUG_ERROR, + "[ASSERT FAIL] %a::%d Expression (%a) is not FALSE!\n", + FunctionName, + LineNumber, + Description + ); } return !Expression; } @@ -73,59 +99,110 @@ UnitTestAssertFalse ( BOOLEAN EFIAPI UnitTestAssertNotEfiError ( - IN UNIT_TEST_FRAMEWORK_HANDLE Framework, - IN EFI_STATUS Status, - IN CONST CHAR8 *FunctionName, - IN UINTN LineNumber, - IN CONST CHAR8 *Description + IN UNIT_TEST_FRAMEWORK_HANDLE Framework, + IN EFI_STATUS Status, + IN CONST CHAR8 *FunctionName, + IN UINTN LineNumber, + IN CONST CHAR8 *Description ) { - if (EFI_ERROR( Status )) - { - UnitTestLogFailure(Framework, FAILURETYPE_ASSERTNOTEFIERROR, "%a::%d S= tatus '%a' is EFI_ERROR (%r)!\n", FunctionName, LineNumber, Description, St= atus); - UnitTestLog(Framework, DEBUG_ERROR,"[ASSERT FAIL] %a::%d Status '%a' i= s EFI_ERROR (%r)!\n", FunctionName, LineNumber, Description, Status ); + if (EFI_ERROR (Status)) { + UnitTestLogFailure ( + Framework, + FAILURETYPE_ASSERTNOTEFIERROR, + "%a::%d Status '%a' is EFI_ERROR (%r)!\n", + FunctionName, + LineNumber, + Description, + Status + ); + UnitTestLog ( + Framework, + DEBUG_ERROR, + "[ASSERT FAIL] %a::%d Status '%a' is EFI_ERROR (%r)!\n", + FunctionName, + LineNumber, + Description, Status + ); } - return !EFI_ERROR( Status ); + return !EFI_ERROR (Status); } =20 =20 BOOLEAN EFIAPI UnitTestAssertEqual ( - IN UNIT_TEST_FRAMEWORK_HANDLE Framework, - IN UINT64 ValueA, - IN UINT64 ValueB, - IN CONST CHAR8 *FunctionName, - IN UINTN LineNumber, - IN CONST CHAR8 *DescriptionA, - IN CONST CHAR8 *DescriptionB + IN UNIT_TEST_FRAMEWORK_HANDLE Framework, + IN UINT64 ValueA, + IN UINT64 ValueB, + IN CONST CHAR8 *FunctionName, + IN UINTN LineNumber, + IN CONST CHAR8 *DescriptionA, + IN CONST CHAR8 *DescriptionB ) { - if ((ValueA !=3D ValueB)) - { - UnitTestLogFailure(Framework, FAILURETYPE_ASSERTEQUAL, "%a::%d Value %= a !=3D %a (%d !=3D %d)!\n", FunctionName, LineNumber, DescriptionA, Descrip= tionB, ValueA, ValueB); - UnitTestLog(Framework, DEBUG_ERROR,"[ASSERT FAIL] %a::%d Value %a !=3D= %a (%d !=3D %d)!\n", FunctionName, LineNumber, DescriptionA, DescriptionB,= ValueA, ValueB ); + if ((ValueA !=3D ValueB)) { + UnitTestLogFailure ( + Framework, + FAILURETYPE_ASSERTEQUAL, + "%a::%d Value %a !=3D %a (%d !=3D %d)!\n", + FunctionName, + LineNumber, + DescriptionA, + DescriptionB, + ValueA, + ValueB + ); + UnitTestLog ( + Framework, + DEBUG_ERROR, + "[ASSERT FAIL] %a::%d Value %a !=3D %a (%d !=3D %d)!\n", + FunctionName, + LineNumber, + DescriptionA, + DescriptionB, + ValueA, + ValueB + ); } return (ValueA =3D=3D ValueB); } =20 BOOLEAN EFIAPI -UnitTestAssertMemEqual( - IN UNIT_TEST_FRAMEWORK_HANDLE Framework, - IN UINTN ValueA, - IN UINTN ValueB, - IN UINTN Length, - IN CONST CHAR8 *FunctionName, - IN UINTN LineNumber, - IN CONST CHAR8 *DescriptionA, - IN CONST CHAR8 *DescriptionB -) +UnitTestAssertMemEqual ( + IN UNIT_TEST_FRAMEWORK_HANDLE Framework, + IN UINTN ValueA, + IN UINTN ValueB, + IN UINTN Length, + IN CONST CHAR8 *FunctionName, + IN UINTN LineNumber, + IN CONST CHAR8 *DescriptionA, + IN CONST CHAR8 *DescriptionB + ) { - if (CompareMem((VOID*)ValueA, (VOID*)ValueB, Length) !=3D 0) - { - UnitTestLogFailure(Framework, FAILURETYPE_ASSERTEQUAL, __FUNCTION__, "= %a::%d Memory at %a !=3D %a for length %d bytes!\n", FunctionName, LineNumb= er, DescriptionA, DescriptionB, Length); - UnitTestLog(Framework, DEBUG_ERROR, "[ASSERT FAIL] %a::%d Value %a != =3D %a for length %d bytes!\n", FunctionName, LineNumber, DescriptionA, Des= criptionB, Length); + if (CompareMem ((VOID *)ValueA, (VOID *)ValueB, Length) !=3D 0) { + UnitTestLogFailure ( + Framework, + FAILURETYPE_ASSERTEQUAL, + __FUNCTION__, + "%a::%d Memory at %a !=3D %a for length %d bytes!\n", + FunctionName, + LineNumber, + DescriptionA, + DescriptionB, + Length + ); + UnitTestLog ( + Framework, + DEBUG_ERROR, + "[ASSERT FAIL] %a::%d Value %a !=3D %a for length %d bytes!\n", + FunctionName, + LineNumber, + DescriptionA, + DescriptionB, + Length + ); return FALSE; } return TRUE; @@ -135,19 +212,38 @@ UnitTestAssertMemEqual( BOOLEAN EFIAPI UnitTestAssertNotEqual ( - IN UNIT_TEST_FRAMEWORK_HANDLE Framework, - IN UINT64 ValueA, - IN UINT64 ValueB, - IN CONST CHAR8 *FunctionName, - IN UINTN LineNumber, - IN CONST CHAR8 *DescriptionA, - IN CONST CHAR8 *DescriptionB + IN UNIT_TEST_FRAMEWORK_HANDLE Framework, + IN UINT64 ValueA, + IN UINT64 ValueB, + IN CONST CHAR8 *FunctionName, + IN UINTN LineNumber, + IN CONST CHAR8 *DescriptionA, + IN CONST CHAR8 *DescriptionB ) { - if ((ValueA =3D=3D ValueB)) - { - UnitTestLogFailure(Framework, FAILURETYPE_ASSERTNOTEQUAL,"%a::%d Value= %a =3D=3D %a (%d =3D=3D %d)!\n", FunctionName, LineNumber, DescriptionA, D= escriptionB, ValueA, ValueB); - UnitTestLog(Framework, DEBUG_ERROR,"[ASSERT FAIL] %a::%d Value %a =3D= =3D %a (%d =3D=3D %d)!\n", FunctionName, LineNumber,DescriptionA, Descripti= onB, ValueA, ValueB ); + if ((ValueA =3D=3D ValueB)) { + UnitTestLogFailure ( + Framework, + FAILURETYPE_ASSERTNOTEQUAL, + "%a::%d Value %a =3D=3D %a (%d =3D=3D %d)!\n", + FunctionName, + LineNumber, + DescriptionA, + DescriptionB, + ValueA, + ValueB + ); + UnitTestLog ( + Framework, + DEBUG_ERROR, + "[ASSERT FAIL] %a::%d Value %a =3D=3D %a (%d =3D=3D %d)!\n", + FunctionName, + LineNumber, + DescriptionA, + DescriptionB, + ValueA, + ValueB + ); } return (ValueA !=3D ValueB); } @@ -156,36 +252,66 @@ UnitTestAssertNotEqual ( BOOLEAN EFIAPI UnitTestAssertStatusEqual ( - IN UNIT_TEST_FRAMEWORK_HANDLE Framework, - IN EFI_STATUS Status, - IN EFI_STATUS Expected, - IN CONST CHAR8 *FunctionName, - IN UINTN LineNumber, - IN CONST CHAR8 *Description + IN UNIT_TEST_FRAMEWORK_HANDLE Framework, + IN EFI_STATUS Status, + IN EFI_STATUS Expected, + IN CONST CHAR8 *FunctionName, + IN UINTN LineNumber, + IN CONST CHAR8 *Description ) { - if ((Status !=3D Expected)) - { - UnitTestLogFailure(Framework, FAILURETYPE_ASSERTSTATUSEQUAL, "%a::%d S= tatus '%a' is %r, should be %r!\n", FunctionName, LineNumber, Description, = Status, Expected); - UnitTestLog(Framework, DEBUG_ERROR,"[ASSERT FAIL] %a::%d Status '%a' i= s %r, should be %r!\n", FunctionName, LineNumber, Description, Status, Expe= cted ); + if ((Status !=3D Expected)) { + UnitTestLogFailure ( + Framework, + FAILURETYPE_ASSERTSTATUSEQUAL, + "%a::%d Status '%a' is %r, should be %r!\n", + FunctionName, + LineNumber, + Description, + Status, + Expected + ); + UnitTestLog ( + Framework, + DEBUG_ERROR, + "[ASSERT FAIL] %a::%d Status '%a' is %r, should be %r!\n", + FunctionName, + LineNumber, + Description, + Status, + Expected + ); } return (Status =3D=3D Expected); } =20 BOOLEAN EFIAPI -UnitTestAssertNotNull( - IN UNIT_TEST_FRAMEWORK_HANDLE Framework, - IN VOID* Pointer, - IN CONST CHAR8 *FunctionName, - IN UINTN LineNumber, - IN CONST CHAR8 *PointerName -) +UnitTestAssertNotNull ( + IN UNIT_TEST_FRAMEWORK_HANDLE Framework, + IN VOID *Pointer, + IN CONST CHAR8 *FunctionName, + IN UINTN LineNumber, + IN CONST CHAR8 *PointerName + ) { - if (Pointer =3D=3D NULL) - { - UnitTestLogFailure(Framework, FAILURETYPE_ASSERTNOTNULL, "%a::%d Point= er (%a) is NULL!\n", FunctionName, LineNumber, PointerName); - UnitTestLog(Framework, DEBUG_ERROR, "[ASSERT FAIL] %a::%d Pointer (%a)= is NULL!\n", FunctionName, LineNumber, PointerName); + if (Pointer =3D=3D NULL) { + UnitTestLogFailure ( + Framework, + FAILURETYPE_ASSERTNOTNULL, + "%a::%d Pointer (%a) is NULL!\n", + FunctionName, + LineNumber, + PointerName + ); + UnitTestLog ( + Framework, + DEBUG_ERROR, + "[ASSERT FAIL] %a::%d Pointer (%a) is NULL!\n", + FunctionName, + LineNumber, + PointerName + ); } return (Pointer !=3D NULL); =20 diff --git a/MsUnitTestPkg/Library/UnitTestBootUsbClassLib/UnitTestBootUsb.= c b/MsUnitTestPkg/Library/UnitTestBootUsbClassLib/UnitTestBootUsb.c index 5f6b328b7e..30e4a95cee 100644 --- a/MsUnitTestPkg/Library/UnitTestBootUsbClassLib/UnitTestBootUsb.c +++ b/MsUnitTestPkg/Library/UnitTestBootUsbClassLib/UnitTestBootUsb.c @@ -1,28 +1,28 @@ -/** -Implement UnitTestBootUsbLib using USB Class Boot option. This should be = industry standard and should -work on all platforms - -Copyright (c) 2016, Microsoft Corporation - -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notic= e, -this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS= " AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPL= IED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS= CLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY D= IRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUD= ING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF U= SE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO= RY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLI= GENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/** @file + Implement UnitTestBootUsbLib using USB Class Boot option. This should b= e industry standard and should + work on all platforms + + Copyright (c) 2016, Microsoft Corporation + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are m= et: + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright not= ice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE D= ISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY= DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCL= UDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF= USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY TH= EORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEG= LIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 **/ =20 @@ -36,23 +36,30 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 EFI_STATUS EFIAPI -SetUsbBootNext( - VOID -) +SetUsbBootNext ( + VOID + ) { - EFI_STATUS Status; - EFI_BOOT_MANAGER_LOAD_OPTION NewOption; - UINT32 Attributes; - UINT8 *OptionalData =3D NULL; - UINT32 OptionalDataSize =3D 0; - UINT16 BootNextValue =3D 0xABCD; // this should= be a safe number... - USB_CLASS_DEVICE_PATH UsbDp; - EFI_DEVICE_PATH_PROTOCOL *DpEnd =3D NULL; - EFI_DEVICE_PATH_PROTOCOL *Dp =3D NULL; - BOOLEAN NewOptionValid =3D FALSE; - - UsbDp.Header.Length[0] =3D (UINT8)(sizeof(USB_CLASS_DEVICE_PATH) & 0xff); - UsbDp.Header.Length[1] =3D (UINT8)(sizeof(USB_CLASS_DEVICE_PATH) >> 8); + EFI_STATUS Status; + EFI_BOOT_MANAGER_LOAD_OPTION NewOption; + UINT32 Attributes; + UINT8 *OptionalData; + UINT32 OptionalDataSize; + UINT16 BootNextValue; + USB_CLASS_DEVICE_PATH UsbDp; + EFI_DEVICE_PATH_PROTOCOL *DpEnd; + EFI_DEVICE_PATH_PROTOCOL *Dp; + BOOLEAN NewOptionValid; + + OptionalData =3D NULL; + OptionalDataSize =3D 0; + BootNextValue =3D 0xABCD; // this should be a safe number... + DpEnd =3D NULL; + Dp =3D NULL; + NewOptionValid =3D FALSE; + + UsbDp.Header.Length[0] =3D (UINT8)(sizeof (USB_CLASS_DEVICE_PATH) & 0xff= ); + UsbDp.Header.Length[1] =3D (UINT8)(sizeof (USB_CLASS_DEVICE_PATH) >> 8); UsbDp.Header.Type =3D MESSAGING_DEVICE_PATH; UsbDp.Header.SubType =3D MSG_USB_CLASS_DP; UsbDp.VendorId =3D 0xFFFF; @@ -63,69 +70,67 @@ SetUsbBootNext( =20 Attributes =3D LOAD_OPTION_ACTIVE; =20 - DpEnd =3D AppendDevicePathNode(NULL, NULL); - if (DpEnd =3D=3D NULL) - { - DEBUG((DEBUG_ERROR, "%a: Unable to create device path. DpEnd is NULL.= \n", __FUNCTION__)); + DpEnd =3D AppendDevicePathNode (NULL, NULL); + if (DpEnd =3D=3D NULL) { + DEBUG ((DEBUG_ERROR, "%a: Unable to create device path. DpEnd is NULL= .\n", __FUNCTION__)); Status =3D EFI_OUT_OF_RESOURCES; goto CLEANUP; } =20 - Dp =3D AppendDevicePathNode(DpEnd, (EFI_DEVICE_PATH_PROTOCOL *)&UsbDp); = //@MRT --- Is this memory leak becasue we lose the old Dp memory - if (Dp =3D=3D NULL) - { - DEBUG((DEBUG_ERROR, "%a: Unable to create device path. Dp is NULL.\n"= , __FUNCTION__)); + //@MRT --- Is this memory leak becasue we lose the old Dp memory + Dp =3D AppendDevicePathNode (DpEnd, (EFI_DEVICE_PATH_PROTOCOL *)&UsbDp); + if (Dp =3D=3D NULL) { + DEBUG ((DEBUG_ERROR, "%a: Unable to create device path. Dp is NULL.\n= ", __FUNCTION__)); Status =3D EFI_OUT_OF_RESOURCES; goto CLEANUP; } =20 - Status =3D EfiBootManagerInitializeLoadOption( - &NewOption, - (UINTN) BootNextValue, - LoadOptionTypeBoot, - Attributes, - L"Generic USB Class Device", - Dp, - OptionalData, - OptionalDataSize - ); - - if (EFI_ERROR(Status)) { - DEBUG((DEBUG_ERROR, "%a: Error creating load option. Status =3D %r\n"= , __FUNCTION__, Status)); + Status =3D EfiBootManagerInitializeLoadOption ( + &NewOption, + (UINTN) BootNextValue, + LoadOptionTypeBoot, + Attributes, + L"Generic USB Class Device", + Dp, + OptionalData, + OptionalDataSize + ); + + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: Error creating load option. Status =3D %r\n= ", __FUNCTION__, Status)); goto CLEANUP; } =20 NewOptionValid =3D TRUE; - DEBUG((DEBUG_VERBOSE, "%a: Generic USB Class Device boot option created.= \n", __FUNCTION__)); - Status =3D EfiBootManagerLoadOptionToVariable(&NewOption); - if (EFI_ERROR(Status)) { - DEBUG((DEBUG_ERROR, "%a: Error Saving boot option NV variable. Status = =3D %r\n", __FUNCTION__, Status)); + DEBUG ((DEBUG_VERBOSE, "%a: Generic USB Class Device boot option created= .\n", __FUNCTION__)); + Status =3D EfiBootManagerLoadOptionToVariable (&NewOption); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a: Error Saving boot option NV variable. Status= =3D %r\n", __FUNCTION__, Status)); goto CLEANUP; } =20 //Set Boot Next - Status =3D gRT->SetVariable(L"BootNext", - &gEfiGlobalVariableGuid, - (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_V= ARIABLE_NON_VOLATILE), - sizeof(BootNextValue), - &(BootNextValue)); + Status =3D gRT->SetVariable ( + L"BootNext", + &gEfiGlobalVariableGuid, + (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_= ACCESS | EFI_VARIABLE_NON_VOLATILE), + sizeof (BootNextValue), + &(BootNextValue) + ); =20 - DEBUG((DEBUG_VERBOSE, "%a - Set BootNext Status (%r)\n", __FUNCTION__, S= tatus)); + DEBUG ((DEBUG_VERBOSE, "%a - Set BootNext Status (%r)\n", __FUNCTION__, = Status)); =20 CLEANUP: - if (Dp !=3D NULL) - { - FreePool(Dp); + if (Dp !=3D NULL) { + FreePool (Dp); } =20 - if (DpEnd !=3D NULL) - { - FreePool(DpEnd); + if (DpEnd !=3D NULL) { + FreePool (DpEnd); } =20 - if (NewOptionValid) - { - EfiBootManagerFreeLoadOption(&NewOption); + if (NewOptionValid) { + EfiBootManagerFreeLoadOption (&NewOption); } =20 return Status; diff --git a/MsUnitTestPkg/Library/UnitTestBootUsbMicrosoftLib/UnitTestBoot= Usb.c b/MsUnitTestPkg/Library/UnitTestBootUsbMicrosoftLib/UnitTestBootUsb.c index 059c031bf9..b7b511eecb 100644 --- a/MsUnitTestPkg/Library/UnitTestBootUsbMicrosoftLib/UnitTestBootUsb.c +++ b/MsUnitTestPkg/Library/UnitTestBootUsbMicrosoftLib/UnitTestBootUsb.c @@ -1,27 +1,27 @@ -/** -Implement UnitTestBootUsbLib using internal microsoft uefi boot usb boot o= ption - -Copyright (c) 2016, Microsoft Corporation - -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notic= e, -this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS= " AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPL= IED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS= CLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY D= IRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUD= ING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF U= SE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO= RY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLI= GENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/** @file + Implement UnitTestBootUsbLib using internal microsoft uefi boot usb boot= option + + Copyright (c) 2016, Microsoft Corporation + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are m= et: + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright not= ice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE D= ISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY= DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCL= UDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF= USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY TH= EORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEG= LIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 **/ =20 @@ -35,67 +35,84 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. EFI_STATUS EFIAPI SetUsbBootNext ( - VOID + VOID ) { EFI_STATUS Status; - INT16 BootOptionIndex; + INT16 BootOptionIndex; CHAR16 BootOptionName[30]; - CHAR16 *BootOptionIndexChar =3D NULL; - UINT8 *OptionBuffer =3D NULL; - UINTN OptionBufferSize =3D 0, VariableSize =3D 0; - BOOLEAN IsUsbOptionFound =3D FALSE; + CHAR16 *BootOptionIndexChar; + UINT8 *OptionBuffer; + UINTN OptionBufferSize; + UINTN VariableSize; + BOOLEAN IsUsbOptionFound; =20 - StrCpyS(BootOptionName, sizeof (BootOptionName) / sizeof (BootOptionName= [0]), L"Boot000"); - BootOptionIndexChar =3D BootOptionName + StrLen(BootOptionName); + BootOptionIndexChar =3D NULL; + OptionBuffer =3D NULL; + OptionBufferSize =3D 0; + VariableSize =3D 0; + IsUsbOptionFound =3D FALSE; + + StrCpyS (BootOptionName, sizeof (BootOptionName) / sizeof (BootOptionNam= e[0]), L"Boot000"); + BootOptionIndexChar =3D BootOptionName + StrLen (BootOptionName); =20 // // Walk through each of the first 10 boot options looking for the // generic USB boot option. - for (BootOptionIndex =3D 0; BootOptionIndex < 10; BootOptionIndex++) - { + for (BootOptionIndex =3D 0; BootOptionIndex < 10; BootOptionIndex++) { // Construct the BootOption name for this boot option. // Do this by altering the last character of the name. - UnicodeValueToStringS(BootOptionIndexChar, sizeof (BootOptionName) / s= izeof (BootOptionName[0]) - StrLen(BootOptionName), 0, (INT64)BootOptionInd= ex, 1); + UnicodeValueToStringS ( + BootOptionIndexChar, + sizeof (BootOptionName) / sizeof (BootOptionName[0]) - StrLen (BootO= ptionName), + 0, + (INT64)BootOptionIndex, + 1 + ); =20 // Attempt to retrieve the option. - DEBUG(( DEBUG_VERBOSE, "%a - Checking for %s...\n", __FUNCTION__, Boot= OptionName )); + DEBUG ((DEBUG_VERBOSE, "%a - Checking for %s...\n", __FUNCTION__, Boot= OptionName)); VariableSize =3D OptionBufferSize; - Status =3D gRT->GetVariable( BootOptionName, - &gEfiGlobalVariableGuid, - NULL, - &VariableSize, - OptionBuffer ); + Status =3D gRT->GetVariable ( + BootOptionName, + &gEfiGlobalVariableGuid, + NULL, + &VariableSize, + OptionBuffer + ); // If we need a larger buffer, let's do that now. - if (Status =3D=3D EFI_BUFFER_TOO_SMALL) - { + if (Status =3D=3D EFI_BUFFER_TOO_SMALL) { // Free the existing buffer. - if (OptionBuffer !=3D NULL) - { - FreePool( OptionBuffer ); + if (OptionBuffer !=3D NULL) { + FreePool (OptionBuffer); } // Allocate a larger buffer. - OptionBuffer =3D AllocatePool( VariableSize ); + OptionBuffer =3D AllocatePool (VariableSize); // If you fail to... we've gotta get out of here. - if (OptionBuffer =3D=3D NULL) - { - DEBUG(( DEBUG_ERROR, "%a - Failed to allocate memory for Boot opti= on variable %s...\n", __FUNCTION__, BootOptionName )); + if (OptionBuffer =3D=3D NULL) { + DEBUG (( + DEBUG_ERROR, + "%a - Failed to allocate memory for Boot option variable %s...\n= ", + __FUNCTION__, + BootOptionName + )); return EFI_OUT_OF_RESOURCES; } OptionBufferSize =3D VariableSize; =20 // Now that we've got a larger buffer, try that again. - Status =3D gRT->GetVariable( BootOptionName, - &gEfiGlobalVariableGuid, - NULL, - &VariableSize, - OptionBuffer ); + Status =3D gRT->GetVariable ( + BootOptionName, + &gEfiGlobalVariableGuid, + NULL, + &VariableSize, + OptionBuffer + ); } =20 // If we failed to retrieve this option... move on with your life. - if (EFI_ERROR( Status )) - { - DEBUG(( DEBUG_VERBOSE, "%a - Failed to locate option (%r). Moving on= .\n", __FUNCTION__, Status )); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_VERBOSE, "%a - Failed to locate option (%r). Moving on= .\n", __FUNCTION__, Status)); continue; } =20 @@ -104,8 +121,7 @@ SetUsbBootNext ( // optional data) and see whether it's "USB". if (VariableSize > 4 && OptionBuffer[VariableSize - 4] =3D=3D 'U' && OptionBuffer[Variable= Size - 3] =3D=3D 'S' && - OptionBuffer[VariableSize - 2] =3D=3D 'B' && OptionBuffer[Variable= Size - 1] =3D=3D 0x00 ) - { + OptionBuffer[VariableSize - 2] =3D=3D 'B' && OptionBuffer[Variable= Size - 1] =3D=3D 0x00) { IsUsbOptionFound =3D TRUE; break; } @@ -114,25 +130,23 @@ SetUsbBootNext ( // // If the correct boot option was found, // set it to the BootNext variable. - if (IsUsbOptionFound) - { - Status =3D gRT->SetVariable( L"BootNext", - &gEfiGlobalVariableGuid, - (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARI= ABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE), - sizeof( BootOptionIndex ), - &BootOptionIndex ); - DEBUG(( DEBUG_VERBOSE, "%a - Set BootNext Status (%r)\n", __FUNCTION__= , Status )); - } - else - { - DEBUG(( DEBUG_WARN, "%a - Could not find generic USB boot option.\n", = __FUNCTION__)); + if (IsUsbOptionFound) { + Status =3D gRT->SetVariable ( + L"BootNext", + &gEfiGlobalVariableGuid, + (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIM= E_ACCESS | EFI_VARIABLE_NON_VOLATILE), + sizeof (BootOptionIndex), + &BootOptionIndex + ); + DEBUG ((DEBUG_VERBOSE, "%a - Set BootNext Status (%r)\n", __FUNCTION__= , Status)); + } else { + DEBUG ((DEBUG_WARN, "%a - Could not find generic USB boot option.\n", = __FUNCTION__)); Status =3D EFI_NOT_FOUND; } =20 // Always put away your toys. - if (OptionBuffer !=3D NULL) - { - FreePool( OptionBuffer ); + if (OptionBuffer !=3D NULL) { + FreePool (OptionBuffer); } =20 return Status; diff --git a/MsUnitTestPkg/Library/UnitTestLib/Md5.c b/MsUnitTestPkg/Librar= y/UnitTestLib/Md5.c index 495b41730a..6bf3a53d4e 100644 --- a/MsUnitTestPkg/Library/UnitTestLib/Md5.c +++ b/MsUnitTestPkg/Library/UnitTestLib/Md5.c @@ -1,14 +1,14 @@ /** @file Implementation of MD5 algorithm. =20 -Copyright (c) 2004 - 2008, Intel Corporation. All rights reserved.
-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 + Copyright (c) 2004 - 2008, Intel Corporation. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php =20 -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLI= ED. + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. =20 **/ =20 @@ -27,7 +27,7 @@ CONST UINT32 Md5_Data[][2] =3D { CONST UINT32 Md5_S[][4] =3D { { 7, 22, 17, 12 }, { 5, 20, 14, 9 }, - { 4, 23, 16 ,11 }, + { 4, 23, 16, 11 }, { 6, 21, 15, 10 }, }; =20 @@ -50,8 +50,7 @@ CONST UINT32 Md5_T[] =3D { 0xF7537E82, 0xBD3AF235, 0x2AD7D2BB, 0xEB86D391 }; =20 -CONST UINT8 Md5HashPadding[] =3D -{ +CONST UINT8 Md5HashPadding[] =3D { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -73,7 +72,7 @@ CONST UINT8 Md5HashPadding[] =3D // // ROTATE_LEFT rotates x left n bits. // -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) +#define ROTATE_LEFT(x, n)(((x) << (n)) | ((x) >> (32 - (n)))) =20 #define SA MedStates[Index2 & 3] #define SB MedStates[(Index2 + 1) & 3] @@ -83,18 +82,18 @@ CONST UINT8 Md5HashPadding[] =3D /** Tf1 is one basic MD5 transform function. =20 - @param[in] A A 32-bit quantity. - @param[in] B A 32-bit quantity. - @param[in] C A 32-bit quantity. + @param[in] A A 32-bit quantity. + @param[in] B A 32-bit quantity. + @param[in] C A 32-bit quantity. =20 - @return Output was produced as a 32-bit quantity based on the - three 32-bit input quantity. + @return Output was produced as a 32-bit quantity based on the + three 32-bit input quantity. **/ UINT32 Tf1 ( - IN UINT32 A, - IN UINT32 B, - IN UINT32 C + IN UINT32 A, + IN UINT32 B, + IN UINT32 C ) { return (A & B) | (~A & C); @@ -103,18 +102,18 @@ Tf1 ( /** Tf2 is one basic MD5 transform function. =20 - @param[in] A A 32-bit quantity. - @param[in] B A 32-bit quantity. - @param[in] C A 32-bit quantity. + @param[in] A A 32-bit quantity. + @param[in] B A 32-bit quantity. + @param[in] C A 32-bit quantity. =20 - @return Output was produced as a 32-bit quantity based on the - three 32-bit input quantity. + @return Output was produced as a 32-bit quantity based on the + three 32-bit input quantity. **/ UINT32 Tf2 ( - IN UINT32 A, - IN UINT32 B, - IN UINT32 C + IN UINT32 A, + IN UINT32 B, + IN UINT32 C ) { return (A & C) | (B & ~C); @@ -123,18 +122,18 @@ Tf2 ( /** Tf3 is one basic MD5 transform function. =20 - @param[in] A A 32-bit quantity. - @param[in] B A 32-bit quantity. - @param[in] C A 32-bit quantity. + @param[in] A A 32-bit quantity. + @param[in] B A 32-bit quantity. + @param[in] C A 32-bit quantity. =20 - @return Output was produced as a 32-bit quantity based on the - three 32-bit input quantity. + @return Output was produced as a 32-bit quantity based on the + three 32-bit input quantity. **/ UINT32 Tf3 ( - IN UINT32 A, - IN UINT32 B, - IN UINT32 C + IN UINT32 A, + IN UINT32 B, + IN UINT32 C ) { return A ^ B ^ C; @@ -143,18 +142,18 @@ Tf3 ( /** Tf4 is one basic MD5 transform function. =20 - @param[in] A A 32-bit quantity. - @param[in] B A 32-bit quantity. - @param[in] C A 32-bit quantity. + @param[in] A A 32-bit quantity. + @param[in] B A 32-bit quantity. + @param[in] C A 32-bit quantity. =20 - @return Output was produced as a 32-bit quantity based on the - three 32-bit input quantity. + @return Output was produced as a 32-bit quantity based on the + three 32-bit input quantity. **/ UINT32 Tf4 ( - IN UINT32 A, - IN UINT32 B, - IN UINT32 C + IN UINT32 A, + IN UINT32 B, + IN UINT32 C ) { return B ^ (A | ~C); @@ -162,7 +161,7 @@ Tf4 ( =20 typedef UINT32 -(*MD5_TRANSFORM_FUNC) ( +(*MD5_TRANSFORM_FUNC)( IN UINT32 A, IN UINT32 B, IN UINT32 C @@ -203,7 +202,7 @@ MD5Transform ( for (Index1 =3D 0; Index1 < 4; Index1++) { IndexD =3D Md5_Data[Index1][0]; for (Index2 =3D 16; Index2 > 0; Index2--) { - SA +=3D (*Md5_F[Index1]) (SB, SC, SD) + Data[IndexD] + Md5_T[IndexT]; + SA +=3D (*Md5_F[Index1])(SB, SC, SD) + Data[IndexD] + Md5_T[IndexT]; SA =3D ROTATE_LEFT (SA, Md5_S[Index1][Index2 & 3]); SA +=3D SB; =20 @@ -227,19 +226,19 @@ MD5Transform ( All of Md5 code generated for the sequential 64-bytes data segaments are= be accumulated in MD5Final() function. =20 - @param[in, out] Md5Ctx The data structure of storing the original data - segment and the final result. - @param[in] Data The data wanted to be transformed. - @param[in] DataLen The length of data. + @param[in, out] Md5Ctx The data structure of storing the original data + segment and the final result. + @param[in] Data The data wanted to be transformed. + @param[in] DataLen The length of data. **/ VOID MD5UpdateBlock ( - IN OUT MD5_CTX *Md5Ctx, - IN CONST UINT8 *Data, - IN UINTN DataLen + IN OUT MD5_CTX *Md5Ctx, + IN CONST UINT8 *Data, + IN UINTN DataLen ) { - UINTN Limit; + UINTN Limit; =20 for (Limit =3D 64 - Md5Ctx->Count; DataLen >=3D 64 - Md5Ctx->Count; Limi= t =3D 64) { CopyMem (Md5Ctx->M + Md5Ctx->Count, (VOID *)Data, Limit); @@ -257,9 +256,9 @@ MD5UpdateBlock ( /** Initialize four 32-bits chaining variables and use them to do the Md5 tr= ansform. =20 - @param[out] Md5Ctx The data structure of Md5. + @param[out] Md5Ctx The data structure of Md5. =20 - @retval EFI_SUCCESS Initialization is ok. + @retval EFI_SUCCESS Initialization is ok. **/ EFI_STATUS MD5Init ( @@ -282,19 +281,19 @@ MD5Init ( /** the external interface of Md5 algorithm =20 - @param[in, out] Md5Ctx The data structure of storing the original data - segment and the final result. - @param[in] Data The data wanted to be transformed. - @param[in] DataLen The length of data. + @param[in, out] Md5Ctx The data structure of storing the original data + segment and the final result. + @param[in] Data The data wanted to be transformed. + @param[in] DataLen The length of data. =20 - @retval EFI_SUCCESS The transform is ok. - @retval Others Other errors as indicated. + @retval EFI_SUCCESS The transform is ok. + @retval Others Other errors as indicated. **/ EFI_STATUS MD5Update ( - IN OUT MD5_CTX *Md5Ctx, - IN VOID *Data, - IN UINTN DataLen + IN OUT MD5_CTX *Md5Ctx, + IN VOID *Data, + IN UINTN DataLen ) { if (EFI_ERROR (Md5Ctx->Status)) { @@ -310,20 +309,20 @@ MD5Update ( Accumulate the MD5 value of every data segment and generate the finial result according to MD5 algorithm. =20 - @param[in, out] Md5Ctx The data structure of storing the original data + @param[in, out] Md5Ctx The data structure of storing the original data segment and the final result. @param[out] HashVal The final 128-bits output. =20 - @retval EFI_SUCCESS The transform is ok. - @retval Others Other errors as indicated. + @retval EFI_SUCCESS The transform is ok. + @retval Others Other errors as indicated. **/ EFI_STATUS MD5Final ( - IN OUT MD5_CTX *Md5Ctx, - OUT UINT8 *HashVal + IN OUT MD5_CTX *Md5Ctx, + OUT UINT8 *HashVal ) { - UINTN PadLength; + UINTN PadLength; =20 if (Md5Ctx->Status =3D=3D EFI_ALREADY_STARTED) { // diff --git a/MsUnitTestPkg/Library/UnitTestLib/UnitTestLib.c b/MsUnitTestPk= g/Library/UnitTestLib/UnitTestLib.c index c181eae5e4..2d5f00898b 100644 --- a/MsUnitTestPkg/Library/UnitTestLib/UnitTestLib.c +++ b/MsUnitTestPkg/Library/UnitTestLib/UnitTestLib.c @@ -1,26 +1,26 @@ -/** - -Copyright (c) 2016, Microsoft Corporation - -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notic= e, -this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS= " AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPL= IED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS= CLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY D= IRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUD= ING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF U= SE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO= RY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLI= GENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/** @file + + Copyright (c) 2016, Microsoft Corporation + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are m= et: + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright not= ice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE D= ISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY= DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCL= UDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF= USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY TH= EORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEG= LIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 **/ =20 @@ -69,14 +69,14 @@ UpdateTestFromSave ( =20 @param[in] ShortTitleString A pointer to the short title string to be = evaluated. =20 - @retval TRUE The string is acceptable. - @retval FALSE The string should not be used. + @retval TRUE The string is acceptable. + @retval FALSE The string should not be used. =20 **/ STATIC BOOLEAN IsFrameworkShortNameValid ( - IN CHAR16 *ShortTitleString + IN CHAR16 *ShortTitleString ) { // TODO: Finish this function. @@ -85,19 +85,18 @@ IsFrameworkShortNameValid ( =20 =20 STATIC -CHAR16* +CHAR16 * AllocateAndCopyString ( - IN CHAR16 *StringToCopy + IN CHAR16 *StringToCopy ) { CHAR16 *NewString =3D NULL; UINTN NewStringLength; =20 - NewStringLength =3D StrnLenS( StringToCopy, UNIT_TEST_MAX_STRING_LENGTH = ) + 1; - NewString =3D AllocatePool( NewStringLength * sizeof( CHAR16 ) ); - if (NewString !=3D NULL) - { - StrCpyS( NewString, NewStringLength, StringToCopy ); + NewStringLength =3D StrnLenS (StringToCopy, UNIT_TEST_MAX_STRING_LENGTH)= + 1; + NewString =3D AllocatePool (NewStringLength * sizeof (CHAR16)); + if (NewString !=3D NULL) { + StrCpyS (NewString, NewStringLength, StringToCopy); } =20 return NewString; @@ -107,17 +106,17 @@ AllocateAndCopyString ( STATIC VOID SetFrameworkFingerprint ( - OUT UINT8 *Fingerprint, - IN UNIT_TEST_FRAMEWORK *Framework + OUT UINT8 *Fingerprint, + IN UNIT_TEST_FRAMEWORK *Framework ) { - MD5Init( &mFingerprintCtx ); + MD5Init (&mFingerprintCtx); =20 // For this one we'll just use the title and version as the unique finge= rprint. - MD5Update( &mFingerprintCtx, Framework->Title, (StrLen( Framework->Title= ) * sizeof( CHAR16 )) ); - MD5Update( &mFingerprintCtx, Framework->VersionString, (StrLen( Framewor= k->VersionString ) * sizeof( CHAR16 )) ); + MD5Update (&mFingerprintCtx, Framework->Title, (StrLen (Framework->Title= ) * sizeof (CHAR16))); + MD5Update (&mFingerprintCtx, Framework->VersionString, (StrLen (Framewor= k->VersionString) * sizeof (CHAR16))); =20 - MD5Final( &mFingerprintCtx, &Framework->Fingerprint[0] ); + MD5Final (&mFingerprintCtx, &Framework->Fingerprint[0]); return; } // SetFrameworkFingerprint() =20 @@ -125,19 +124,19 @@ SetFrameworkFingerprint ( STATIC VOID SetSuiteFingerprint ( - OUT UINT8 *Fingerprint, - IN UNIT_TEST_FRAMEWORK *Framework, - IN UNIT_TEST_SUITE *Suite + OUT UINT8 *Fingerprint, + IN UNIT_TEST_FRAMEWORK *Framework, + IN UNIT_TEST_SUITE *Suite ) { - MD5Init( &mFingerprintCtx ); + MD5Init (&mFingerprintCtx); =20 // For this one, we'll use the fingerprint from the framework, and the t= itle of the suite. - MD5Update( &mFingerprintCtx, &Framework->Fingerprint[0], UNIT_TEST_FINGE= RPRINT_SIZE ); - MD5Update( &mFingerprintCtx, Suite->Title, (StrLen( Suite->Title ) * siz= eof( CHAR16 )) ); - MD5Update(&mFingerprintCtx, Suite->Package, (StrLen(Suite->Package) * si= zeof(CHAR16))); + MD5Update (&mFingerprintCtx, &Framework->Fingerprint[0], UNIT_TEST_FINGE= RPRINT_SIZE); + MD5Update (&mFingerprintCtx, Suite->Title, (StrLen (Suite->Title) * size= of (CHAR16))); + MD5Update (&mFingerprintCtx, Suite->Package, (StrLen (Suite->Package) * = sizeof (CHAR16))); =20 - MD5Final( &mFingerprintCtx, &Suite->Fingerprint[0] ); + MD5Final (&mFingerprintCtx, &Suite->Fingerprint[0]); return; } // SetSuiteFingerprint() =20 @@ -145,19 +144,19 @@ SetSuiteFingerprint ( STATIC VOID SetTestFingerprint ( - OUT UINT8 *Fingerprint, - IN UNIT_TEST_SUITE *Suite, - IN UNIT_TEST *Test + OUT UINT8 *Fingerprint, + IN UNIT_TEST_SUITE *Suite, + IN UNIT_TEST *Test ) { - MD5Init( &mFingerprintCtx ); + MD5Init (&mFingerprintCtx); =20 // For this one, we'll use the fingerprint from the suite, and the descr= iption and classname of the test. - MD5Update( &mFingerprintCtx, &Suite->Fingerprint[0], UNIT_TEST_FINGERPRI= NT_SIZE ); - MD5Update( &mFingerprintCtx, Test->Description, (StrLen( Test->Descripti= on ) * sizeof( CHAR16 )) ); - MD5Update(&mFingerprintCtx, Test->ClassName, (StrLen(Test->ClassName) * = sizeof(CHAR16))); + MD5Update (&mFingerprintCtx, &Suite->Fingerprint[0], UNIT_TEST_FINGERPRI= NT_SIZE); + MD5Update (&mFingerprintCtx, Test->Description, (StrLen (Test->Descripti= on) * sizeof (CHAR16))); + MD5Update (&mFingerprintCtx, Test->ClassName, (StrLen (Test->ClassName) = * sizeof (CHAR16))); =20 - MD5Final( &mFingerprintCtx, &Test->Fingerprint[0] ); + MD5Final (&mFingerprintCtx, &Test->Fingerprint[0]); return; } // SetTestFingerprint() =20 @@ -165,11 +164,11 @@ SetTestFingerprint ( STATIC BOOLEAN CompareFingerprints ( - IN UINT8 *FingerprintA, - IN UINT8 *FingerprintB + IN UINT8 *FingerprintA, + IN UINT8 *FingerprintB ) { - return (CompareMem( FingerprintA, FingerprintB, UNIT_TEST_FINGERPRINT_SI= ZE ) =3D=3D 0); + return (CompareMem (FingerprintA, FingerprintB, UNIT_TEST_FINGERPRINT_SI= ZE) =3D=3D 0); } // SetTestFingerprint() =20 =20 @@ -187,7 +186,7 @@ FreeUnitTestFramework ( STATIC EFI_STATUS FreeUnitTestSuiteEntry ( - IN UNIT_TEST_SUITE_LIST_ENTRY *SuiteEntry + IN UNIT_TEST_SUITE_LIST_ENTRY *SuiteEntry ) { // TODO: Finish this function. @@ -198,7 +197,7 @@ FreeUnitTestSuiteEntry ( STATIC EFI_STATUS FreeUnitTestTestEntry ( - IN UNIT_TEST_LIST_ENTRY *TestEntry + IN UNIT_TEST_LIST_ENTRY *TestEntry ) { // TODO: Finish this function. @@ -214,18 +213,18 @@ FreeUnitTestTestEntry ( =20 =20 /* -Method to Initialize the Unit Test framework + Method to Initialize the Unit Test framework =20 -@retval Success - Unit Test init. -@retval EFI_ERROR - Unit Tests init failed. + @retval Success - Unit Test init. + @retval EFI_ERROR - Unit Tests init failed. */ EFI_STATUS EFIAPI InitUnitTestFramework ( - OUT UNIT_TEST_FRAMEWORK **Framework, - IN CHAR16 *Title, - IN CHAR16 *ShortTitle, - IN CHAR16 *VersionString + OUT UNIT_TEST_FRAMEWORK **Framework, + IN CHAR16 *Title, + IN CHAR16 *ShortTitle, + IN CHAR16 *VersionString ) { EFI_STATUS Status =3D EFI_SUCCESS; @@ -234,55 +233,49 @@ InitUnitTestFramework ( // // First, check all pointers and make sure nothing's broked. if (Framework =3D=3D NULL || Title =3D=3D NULL || - ShortTitle =3D=3D NULL || VersionString =3D=3D NULL) - { + ShortTitle =3D=3D NULL || VersionString =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 // // Next, determine whether all of the strings are good to use. - if (!IsFrameworkShortNameValid( ShortTitle )) - { + if (!IsFrameworkShortNameValid (ShortTitle)) { return EFI_INVALID_PARAMETER; } =20 // // Next, set aside some space to start messing with the framework. - NewFramework =3D AllocateZeroPool( sizeof( UNIT_TEST_FRAMEWORK ) ); - if (NewFramework =3D=3D NULL) - { + NewFramework =3D AllocateZeroPool (sizeof (UNIT_TEST_FRAMEWORK)); + if (NewFramework =3D=3D NULL) { return EFI_OUT_OF_RESOURCES; } =20 // // Next, set up all the test data. - NewFramework->Title =3D AllocateAndCopyString( Title ); - NewFramework->ShortTitle =3D AllocateAndCopyString( ShortTitle ); - NewFramework->VersionString =3D AllocateAndCopyString( VersionString ); + NewFramework->Title =3D AllocateAndCopyString (Title); + NewFramework->ShortTitle =3D AllocateAndCopyString (ShortTitle); + NewFramework->VersionString =3D AllocateAndCopyString (VersionString); NewFramework->Log =3D NULL; NewFramework->CurrentTest =3D NULL; NewFramework->SavedState =3D NULL; if (NewFramework->Title =3D=3D NULL || NewFramework->ShortTitle =3D=3D N= ULL || - NewFramework->VersionString =3D=3D NULL) - { + NewFramework->VersionString =3D=3D NULL) { Status =3D EFI_OUT_OF_RESOURCES; goto Exit; } - InitializeListHead( &(NewFramework->TestSuiteList) ); + InitializeListHead (&(NewFramework->TestSuiteList)); =20 // // Create the framework fingerprint. - SetFrameworkFingerprint( &NewFramework->Fingerprint[0], NewFramework ); + SetFrameworkFingerprint (&NewFramework->Fingerprint[0], NewFramework); =20 // // If there is a persisted context, load it now. - if (DoesCacheExist( NewFramework )) - { - Status =3D LoadUnitTestCache( NewFramework, (UNIT_TEST_SAVE_HEADER **)= (&(NewFramework->SavedState))); - if (EFI_ERROR( Status )) - { + if (DoesCacheExist (NewFramework)) { + Status =3D LoadUnitTestCache (NewFramework, (UNIT_TEST_SAVE_HEADER **)= (& (NewFramework->SavedState))); + if (EFI_ERROR (Status)) { // Don't actually report it as an error, but emit a warning. - DEBUG(( DEBUG_ERROR, "%a - Cache was detected, but failed to load.\n= ", __FUNCTION__)); + DEBUG ((DEBUG_ERROR, "%a - Cache was detected, but failed to load.\n= ", __FUNCTION__)); Status =3D EFI_SUCCESS; } } @@ -290,14 +283,12 @@ InitUnitTestFramework ( Exit: // // If we're good, then let's copy the framework. - if (!EFI_ERROR( Status )) - { + if (!EFI_ERROR (Status)) { *Framework =3D NewFramework; } // Otherwise, we need to undo this horrible thing that we've done. - else - { - FreeUnitTestFramework( NewFramework ); + else { + FreeUnitTestFramework (NewFramework); } =20 return Status; @@ -308,11 +299,11 @@ EFI_STATUS EFIAPI CreateUnitTestSuite ( OUT UNIT_TEST_SUITE **Suite, - IN UNIT_TEST_FRAMEWORK *Framework, - IN CHAR16 *Title, - IN CHAR16 *Package, - IN UNIT_TEST_SUITE_SETUP Sup OPTIONAL, - IN UNIT_TEST_SUITE_TEARDOWN Tdn OPTIONAL + IN UNIT_TEST_FRAMEWORK *Framework, + IN CHAR16 *Title, + IN CHAR16 *Package, + IN UNIT_TEST_SUITE_SETUP Sup, OPTIONAL + IN UNIT_TEST_SUITE_TEARDOWN Tdn OPTIONAL ) { EFI_STATUS Status =3D EFI_SUCCESS; @@ -320,56 +311,50 @@ CreateUnitTestSuite ( =20 // // First, let's check to make sure that our parameters look good. - if ((Framework =3D=3D NULL) || (Title =3D=3D NULL) || (Package =3D=3D NU= LL)) - { + if ((Framework =3D=3D NULL) || (Title =3D=3D NULL) || (Package =3D=3D NU= LL)) { return EFI_INVALID_PARAMETER; } =20 // // Create the new entry. - NewSuiteEntry =3D AllocateZeroPool( sizeof( UNIT_TEST_SUITE_LIST_ENTRY )= ); - if (NewSuiteEntry =3D=3D NULL) - { + NewSuiteEntry =3D AllocateZeroPool (sizeof (UNIT_TEST_SUITE_LIST_ENTRY)); + if (NewSuiteEntry =3D=3D NULL) { return EFI_OUT_OF_RESOURCES; } =20 // // Copy the fields we think we need. - NewSuiteEntry->UTS.Title =3D AllocateAndCopyString( Title ); - NewSuiteEntry->UTS.Package =3D AllocateAndCopyString(Package); + NewSuiteEntry->UTS.Title =3D AllocateAndCopyString (Title); + NewSuiteEntry->UTS.Package =3D AllocateAndCopyString (Package); NewSuiteEntry->UTS.Setup =3D Sup; NewSuiteEntry->UTS.Teardown =3D Tdn; NewSuiteEntry->UTS.ParentFramework =3D Framework; - InitializeListHead( &(NewSuiteEntry->Entry) ); // List entry= for sibling suites. - InitializeListHead( &(NewSuiteEntry->UTS.TestCaseList) ); // List entry= for child tests. - if (NewSuiteEntry->UTS.Title =3D=3D NULL) - { + InitializeListHead (&(NewSuiteEntry->Entry)); // List entry fo= r sibling suites. + InitializeListHead (&(NewSuiteEntry->UTS.TestCaseList)); // List entry f= or child tests. + if (NewSuiteEntry->UTS.Title =3D=3D NULL) { Status =3D EFI_OUT_OF_RESOURCES; goto Exit; } =20 - if (NewSuiteEntry->UTS.Package =3D=3D NULL) - { + if (NewSuiteEntry->UTS.Package =3D=3D NULL) { Status =3D EFI_OUT_OF_RESOURCES; goto Exit; } =20 // // Create the suite fingerprint. - SetSuiteFingerprint( &NewSuiteEntry->UTS.Fingerprint[0], Framework, &New= SuiteEntry->UTS ); + SetSuiteFingerprint (&NewSuiteEntry->UTS.Fingerprint[0], Framework, &New= SuiteEntry->UTS); =20 Exit: // // If everything is going well, add the new suite to the tail list for t= he framework. - if (!EFI_ERROR( Status )) - { - InsertTailList( &(Framework->TestSuiteList), (LIST_ENTRY*)NewSuiteEntr= y ); + if (!EFI_ERROR (Status)) { + InsertTailList (&(Framework->TestSuiteList), (LIST_ENTRY *)NewSuiteEnt= ry); *Suite =3D &NewSuiteEntry->UTS; } // Otherwise, make with the destruction. - else - { - FreeUnitTestSuiteEntry( NewSuiteEntry ); + else { + FreeUnitTestSuiteEntry (NewSuiteEntry); } =20 return Status; @@ -379,38 +364,36 @@ Exit: EFI_STATUS EFIAPI AddTestCase ( - IN UNIT_TEST_SUITE *Suite, - IN CHAR16 *Description, - IN CHAR16 *ClassName, - IN UNIT_TEST_FUNCTION Func, - IN UNIT_TEST_PREREQ PreReq OPTIONAL, - IN UNIT_TEST_CLEANUP CleanUp OPTIONAL, - IN UNIT_TEST_CONTEXT Context OPTIONAL + IN UNIT_TEST_SUITE *Suite, + IN CHAR16 *Description, + IN CHAR16 *ClassName, + IN UNIT_TEST_FUNCTION Func, + IN UNIT_TEST_PREREQ PreReq, OPTIONAL + IN UNIT_TEST_CLEANUP CleanUp, OPTIONAL + IN UNIT_TEST_CONTEXT Context OPTIONAL ) { EFI_STATUS Status =3D EFI_SUCCESS; UNIT_TEST_LIST_ENTRY *NewTestEntry; - UNIT_TEST_FRAMEWORK *ParentFramework =3D (UNIT_TEST_FRAMEWORK*)Suite->= ParentFramework; + UNIT_TEST_FRAMEWORK *ParentFramework =3D (UNIT_TEST_FRAMEWORK *)Suite-= >ParentFramework; =20 // // First, let's check to make sure that our parameters look good. - if ((Suite =3D=3D NULL) || (Description =3D=3D NULL) || (ClassName =3D= =3D NULL)) - { + if ((Suite =3D=3D NULL) || (Description =3D=3D NULL) || (ClassName =3D= =3D NULL)) { return EFI_INVALID_PARAMETER; } =20 // // Create the new entry. - NewTestEntry =3D AllocateZeroPool( sizeof( UNIT_TEST_LIST_ENTRY ) ); - if (NewTestEntry =3D=3D NULL) - { + NewTestEntry =3D AllocateZeroPool (sizeof (UNIT_TEST_LIST_ENTRY)); + if (NewTestEntry =3D=3D NULL) { return EFI_OUT_OF_RESOURCES; } =20 // // Copy the fields we think we need. - NewTestEntry->UT.Description =3D AllocateAndCopyString( Description ); - NewTestEntry->UT.ClassName =3D AllocateAndCopyString(ClassName); + NewTestEntry->UT.Description =3D AllocateAndCopyString (Description); + NewTestEntry->UT.ClassName =3D AllocateAndCopyString (ClassName); NewTestEntry->UT.FailureType =3D FAILURETYPE_NOFAILURE; NewTestEntry->UT.FailureMessage[0] =3D '\0'; NewTestEntry->UT.Log =3D NULL; @@ -420,37 +403,33 @@ AddTestCase ( NewTestEntry->UT.Context =3D Context; NewTestEntry->UT.Result =3D UNIT_TEST_PENDING; NewTestEntry->UT.ParentSuite =3D Suite; - InitializeListHead( &(NewTestEntry->Entry) ); // List entry for sib= ling tests. - if (NewTestEntry->UT.Description =3D=3D NULL) - { + InitializeListHead (&(NewTestEntry->Entry)); // List entry for siblin= g tests. + if (NewTestEntry->UT.Description =3D=3D NULL) { Status =3D EFI_OUT_OF_RESOURCES; goto Exit; } =20 // // Create the test fingerprint. - SetTestFingerprint( &NewTestEntry->UT.Fingerprint[0], Suite, &NewTestEnt= ry->UT ); + SetTestFingerprint (&NewTestEntry->UT.Fingerprint[0], Suite, &NewTestEnt= ry->UT); =20 // TODO: Make sure that duplicate fingerprints cannot be created. =20 // // If there is saved test data, update this record. - if (ParentFramework->SavedState !=3D NULL) - { - UpdateTestFromSave( &NewTestEntry->UT, ParentFramework->SavedState ); + if (ParentFramework->SavedState !=3D NULL) { + UpdateTestFromSave (&NewTestEntry->UT, ParentFramework->SavedState); } =20 Exit: // // If everything is going well, add the new suite to the tail list for t= he framework. - if (!EFI_ERROR( Status )) - { - InsertTailList( &(Suite->TestCaseList), (LIST_ENTRY*)NewTestEntry ); + if (!EFI_ERROR (Status)) { + InsertTailList (&(Suite->TestCaseList), (LIST_ENTRY *)NewTestEntry); } // Otherwise, make with the destruction. - else - { - FreeUnitTestTestEntry( NewTestEntry ); + else { + FreeUnitTestTestEntry (NewTestEntry); } =20 return Status; @@ -466,59 +445,53 @@ Exit: STATIC EFI_STATUS RunTestSuite ( - IN UNIT_TEST_SUITE *Suite + IN UNIT_TEST_SUITE *Suite ) { UNIT_TEST_LIST_ENTRY *TestEntry =3D NULL; UNIT_TEST *Test; - UNIT_TEST_FRAMEWORK *ParentFramework =3D (UNIT_TEST_FRAMEWORK*)Suite->= ParentFramework; + UNIT_TEST_FRAMEWORK *ParentFramework =3D (UNIT_TEST_FRAMEWORK *)Suite-= >ParentFramework; =20 - if (Suite =3D=3D NULL) - { + if (Suite =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 - DEBUG((DEBUG_VERBOSE, "-------------------------------------------------= --------\n")); - DEBUG((DEBUG_VERBOSE, "RUNNING TEST SUITE: %s\n", Suite->Title)); - DEBUG((DEBUG_VERBOSE, "-------------------------------------------------= --------\n")); + DEBUG ((DEBUG_VERBOSE, "------------------------------------------------= ---------\n")); + DEBUG ((DEBUG_VERBOSE, "RUNNING TEST SUITE: %s\n", Suite->Title)); + DEBUG ((DEBUG_VERBOSE, "------------------------------------------------= ---------\n")); =20 - if (Suite->Setup !=3D NULL) - { - Suite->Setup( Suite->ParentFramework ); + if (Suite->Setup !=3D NULL) { + Suite->Setup (Suite->ParentFramework); } =20 // // Iterate all tests within the suite // - for (TestEntry =3D (UNIT_TEST_LIST_ENTRY*)GetFirstNode( &(Suite->TestCas= eList) ); // Start at the beginning. - (LIST_ENTRY*)TestEntry !=3D &(Suite->TestCaseList); = // Go until you loop back to the head. - TestEntry =3D (UNIT_TEST_LIST_ENTRY*)GetNextNode( &(Suite->TestCase= List), (LIST_ENTRY*)TestEntry) ) // Always get the next test. - { + for (TestEntry =3D (UNIT_TEST_LIST_ENTRY *)GetFirstNode (&(Suite->TestCa= seList)); // Start at the beginning. + (LIST_ENTRY *)TestEntry !=3D &(Suite->TestCaseList); = // Go until you loop back to the head. + TestEntry =3D (UNIT_TEST_LIST_ENTRY *)GetNextNode (&(Suite->TestCas= eList), (LIST_ENTRY *)TestEntry)) { // Always get the next test. Test =3D &TestEntry->UT; ParentFramework->CurrentTest =3D Test; =20 - DEBUG((DEBUG_VERBOSE, "***********************************************= **********\n")); - DEBUG((DEBUG_VERBOSE, " RUNNING TEST: %s:\n", Test->Description)); - DEBUG((DEBUG_VERBOSE, "***********************************************= ***********\n")); + DEBUG ((DEBUG_VERBOSE, "**********************************************= ***********\n")); + DEBUG ((DEBUG_VERBOSE, " RUNNING TEST: %s:\n", Test->Description)); + DEBUG ((DEBUG_VERBOSE, "**********************************************= ************\n")); =20 // // First, check to see whether the test has already been run. // NOTE: This would generally only be the case if a saved state was de= tected and loaded. - if (Test->Result !=3D UNIT_TEST_PENDING && Test->Result !=3D UNIT_TEST= _RUNNING) - { - DEBUG(( DEBUG_VERBOSE, "Test was run on a previous pass. Skipping.\n= " )); + if (Test->Result !=3D UNIT_TEST_PENDING && Test->Result !=3D UNIT_TEST= _RUNNING) { + DEBUG ((DEBUG_VERBOSE, "Test was run on a previous pass. Skipping.\n= ")); ParentFramework->CurrentTest =3D NULL; continue; } =20 // // Next, if we're still running, make sure that our test prerequisites= are in place. - if (Test->Result =3D=3D UNIT_TEST_PENDING && Test->PreReq !=3D NULL) - { - DEBUG(( DEBUG_VERBOSE, "PREREQ\n" )); - if (Test->PreReq( Suite->ParentFramework, Test->Context ) !=3D UNIT_= TEST_PASSED) - { - DEBUG(( DEBUG_ERROR, "PreReq Not Met\n" )); + if (Test->Result =3D=3D UNIT_TEST_PENDING && Test->PreReq !=3D NULL) { + DEBUG ((DEBUG_VERBOSE, "PREREQ\n")); + if (Test->PreReq (Suite->ParentFramework, Test->Context) !=3D UNIT_T= EST_PASSED) { + DEBUG ((DEBUG_ERROR, "PreReq Not Met\n")); Test->Result =3D UNIT_TEST_ERROR_PREREQ_NOT_MET; ParentFramework->CurrentTest =3D NULL; continue; @@ -531,14 +504,13 @@ RunTestSuite ( // or quit. The UNIT_TEST_RUNNING state will allow the test to resume // but will prevent the PreReq from being dispatched a second time. Test->Result =3D UNIT_TEST_RUNNING; - Test->Result =3D Test->RunTest( Suite->ParentFramework, Test->Context = ); + Test->Result =3D Test->RunTest (Suite->ParentFramework, Test->Context); =20 // // Finally, clean everything up, if need be. - if (Test->CleanUp !=3D NULL) - { - DEBUG(( DEBUG_VERBOSE, "CLEANUP\n" )); - Test->CleanUp( Suite->ParentFramework, Test->Context ); + if (Test->CleanUp !=3D NULL) { + DEBUG ((DEBUG_VERBOSE, "CLEANUP\n")); + Test->CleanUp (Suite->ParentFramework, Test->Context); } =20 // @@ -547,9 +519,8 @@ RunTestSuite ( } // End Test iteration =20 =20 - if (Suite->Teardown !=3D NULL) - { - Suite->Teardown( Suite->ParentFramework ); + if (Suite->Teardown !=3D NULL) { + Suite->Teardown (Suite->ParentFramework); } =20 return EFI_SUCCESS; @@ -557,39 +528,36 @@ RunTestSuite ( =20 EFI_STATUS EFIAPI -RunAllTestSuites( +RunAllTestSuites ( IN UNIT_TEST_FRAMEWORK *Framework ) { UNIT_TEST_SUITE_LIST_ENTRY *Suite =3D NULL; EFI_STATUS Status; =20 - if (Framework =3D=3D NULL) - { + if (Framework =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 - DEBUG((DEBUG_VERBOSE, "-------------------------------------------------= --------\n")); - DEBUG((DEBUG_VERBOSE, "------------ RUNNING ALL TEST SUITES ------= --------\n")); - DEBUG((DEBUG_VERBOSE, "-------------------------------------------------= --------\n")); + DEBUG ((DEBUG_VERBOSE, "------------------------------------------------= ---------\n")); + DEBUG ((DEBUG_VERBOSE, "------------ RUNNING ALL TEST SUITES -----= ---------\n")); + DEBUG ((DEBUG_VERBOSE, "------------------------------------------------= ---------\n")); =20 // // Iterate all suites // - for (Suite =3D (UNIT_TEST_SUITE_LIST_ENTRY*)GetFirstNode(&Framework->Tes= tSuiteList); - (LIST_ENTRY*)Suite !=3D &Framework->TestSuiteList; - Suite =3D (UNIT_TEST_SUITE_LIST_ENTRY*)GetNextNode(&Framework->TestSui= teList, (LIST_ENTRY*)Suite)) - { - Status =3D RunTestSuite(&(Suite->UTS)); - if (EFI_ERROR(Status)) - { - DEBUG((DEBUG_ERROR, "Test Suite Failed with Error. %r\n", Status)); + for (Suite =3D (UNIT_TEST_SUITE_LIST_ENTRY *)GetFirstNode (&Framework->T= estSuiteList); + (LIST_ENTRY *)Suite !=3D &Framework->TestSuiteList; + Suite =3D (UNIT_TEST_SUITE_LIST_ENTRY *)GetNextNode (&Framework->Te= stSuiteList, (LIST_ENTRY *)Suite)) { + Status =3D RunTestSuite (& (Suite->UTS)); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Test Suite Failed with Error. %r\n", Status)); } } // End Suite iteration =20 //Save current state so if test is started again it doesn't have to run.= It will just report - SaveFrameworkState(Framework, NULL, 0); - OutputUnitTestFrameworkReport(Framework); + SaveFrameworkState (Framework, NULL, 0); + OutputUnitTestFrameworkReport (Framework); =20 return EFI_SUCCESS; } @@ -615,12 +583,10 @@ UpdateTestFromSave ( =20 // // First, evaluate the inputs. - if (Test =3D=3D NULL || SavedState =3D=3D NULL) - { + if (Test =3D=3D NULL || SavedState =3D=3D NULL) { return; } - if (SavedState->TestCount =3D=3D 0) - { + if (SavedState->TestCount =3D=3D 0) { return; } =20 @@ -628,33 +594,34 @@ UpdateTestFromSave ( // Next, determine whether a matching test can be found. // Start at the beginning. MatchingTest =3D NULL; - FloatingPointer =3D (UINT8*)SavedState + sizeof( *SavedState ); - for (Index =3D 0; Index < SavedState->TestCount; Index++) - { - CurrentTest =3D (UNIT_TEST_SAVE_TEST*)FloatingPointer; - if (CompareFingerprints( &Test->Fingerprint[0], &CurrentTest->Fingerpr= int[0] )) - { + FloatingPointer =3D (UINT8 *)SavedState + sizeof (*SavedState); + for (Index =3D 0; Index < SavedState->TestCount; Index++) { + CurrentTest =3D (UNIT_TEST_SAVE_TEST *)FloatingPointer; + if (CompareFingerprints (&Test->Fingerprint[0], &CurrentTest->Fingerpr= int[0])) { MatchingTest =3D CurrentTest; // If there's a saved context, it's important that we iterate throug= h the entire list. - if (!SavedState->HasSavedContext) - { + if (!SavedState->HasSavedContext) { break; } } =20 // If we didn't find it, we have to increment to the next test. - FloatingPointer =3D (UINT8*)CurrentTest + CurrentTest->Size; + FloatingPointer =3D (UINT8 *)CurrentTest + CurrentTest->Size; } =20 // // If a matching test was found, copy the status. - if (MatchingTest) - { + if (MatchingTest) { // Override the test status with the saved status. Test->Result =3D MatchingTest->Result; =20 Test->FailureType =3D MatchingTest->FailureType; - StrnCpyS(&Test->FailureMessage[0], UNIT_TEST_TESTFAILUREMSG_LENGTH, &M= atchingTest->FailureMessage[0], UNIT_TEST_TESTFAILUREMSG_LENGTH); + StrnCpyS ( + &Test->FailureMessage[0], + UNIT_TEST_TESTFAILUREMSG_LENGTH, + &MatchingTest->FailureMessage[0], + UNIT_TEST_TESTFAILUREMSG_LENGTH + ); =20 // If there is a log string associated, grab that. // We can tell that there's a log string because the "size" will be la= rger than @@ -662,27 +629,28 @@ UpdateTestFromSave ( // IMPORTANT NOTE: There are security implications here. // This data is user-supplied and we're about to play = kinda // fast and loose with data buffers. - if (MatchingTest->Size > sizeof( UNIT_TEST_SAVE_TEST )) - { - UnitTestLogInit(Test, ((UINT8*)MatchingTest + sizeof( UNIT_TEST_SAVE= _TEST )), MatchingTest->Size - sizeof( UNIT_TEST_SAVE_TEST ) ); + if (MatchingTest->Size > sizeof (UNIT_TEST_SAVE_TEST)) { + UnitTestLogInit ( + Test, + ((UINT8 *)MatchingTest + sizeof (UNIT_TEST_SAVE_TEST)), + MatchingTest->Size - sizeof (UNIT_TEST_SAVE_TEST) + ); } } =20 // // If the saved context exists and matches this test, grab it, too. - if (SavedState->HasSavedContext) - { + if (SavedState->HasSavedContext) { // TODO: Reconcile the difference between the way "size" works for Tes= t Saves // and the way it works for Context Saves. Too confusing to use= it different ways. =20 // If there was a saved context, the "matching test" loop will have pl= aced the FloatingPointer // at the beginning of the context structure. - SavedContext =3D (UNIT_TEST_SAVE_CONTEXT*)FloatingPointer; + SavedContext =3D (UNIT_TEST_SAVE_CONTEXT *)FloatingPointer; if (SavedContext->Size > 0 && - CompareFingerprints( &Test->Fingerprint[0], &SavedContext->Fingerp= rint[0] )) - { + CompareFingerprints (&Test->Fingerprint[0], &SavedContext->Fingerp= rint[0])) { // Override the test context with the saved context. - Test->Context =3D (VOID*)((UINT8*)SavedContext + sizeof( *SavedConte= xt )); + Test->Context =3D (VOID *)((UINT8 *)SavedContext + sizeof (*SavedCon= text)); } } =20 @@ -691,11 +659,11 @@ UpdateTestFromSave ( =20 =20 STATIC -UNIT_TEST_SAVE_HEADER* +UNIT_TEST_SAVE_HEADER * SerializeState ( - IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, - IN UNIT_TEST_CONTEXT ContextToSave OPTIONAL, - IN UINTN ContextToSaveSize + IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, + IN UNIT_TEST_CONTEXT ContextToSave, OPTIONAL + IN UINTN ContextToSaveSize ) { UNIT_TEST_FRAMEWORK *Framework =3D FrameworkHandle; @@ -711,8 +679,7 @@ SerializeState ( // // First, let's not make assumptions about the parameters. if (Framework =3D=3D NULL || (ContextToSave !=3D NULL && ContextToSaveSi= ze =3D=3D 0) || - ContextToSaveSize > MAX_UINT32) - { + ContextToSaveSize > MAX_UINT32) { return NULL; } =20 @@ -720,26 +687,23 @@ SerializeState ( // Next, we've gotta figure out the resources that will be required to s= erialize the // the framework state so that we can persist it. // To start with, we're gonna need a header. - TotalSize =3D sizeof( UNIT_TEST_SAVE_HEADER ); + TotalSize =3D sizeof (UNIT_TEST_SAVE_HEADER); // Now we need to figure out how many tests there are. TestCount =3D 0; // Iterate all suites. SuiteListHead =3D &Framework->TestSuiteList; - for (Suite =3D GetFirstNode( SuiteListHead ); Suite !=3D SuiteListHead; = Suite =3D GetNextNode( SuiteListHead, Suite )) - { + for (Suite =3D GetFirstNode (SuiteListHead); Suite !=3D SuiteListHead; S= uite =3D GetNextNode (SuiteListHead, Suite)) { // Iterate all tests within the suite. - TestListHead =3D &((UNIT_TEST_SUITE_LIST_ENTRY*)Suite)->UTS.TestCaseLi= st; - for (Test =3D GetFirstNode( TestListHead ); Test !=3D TestListHead; Te= st =3D GetNextNode( TestListHead, Test )) - { - UnitTest =3D &((UNIT_TEST_LIST_ENTRY*)Test)->UT; + TestListHead =3D &((UNIT_TEST_SUITE_LIST_ENTRY *)Suite)->UTS.TestCaseL= ist; + for (Test =3D GetFirstNode (TestListHead); Test !=3D TestListHead; Tes= t =3D GetNextNode (TestListHead, Test)) { + UnitTest =3D &((UNIT_TEST_LIST_ENTRY *)Test)->UT; // Account for the size of a test structure. - TotalSize +=3D sizeof( UNIT_TEST_SAVE_TEST ); + TotalSize +=3D sizeof (UNIT_TEST_SAVE_TEST); // If there's a log, make sure to account for the log size. - if (UnitTest->Log !=3D NULL) - { + if (UnitTest->Log !=3D NULL) { // The +1 is for the NULL character. Can't forget the NULL charact= er. - LogSize =3D (StrLen( UnitTest->Log ) + 1) * sizeof( CHAR16 ); - ASSERT( LogSize < MAX_UINT32 ); + LogSize =3D (StrLen (UnitTest->Log) + 1) * sizeof (CHAR16); + ASSERT (LogSize < MAX_UINT32); TotalSize +=3D (UINT32)LogSize; } // Increment the test count. @@ -747,21 +711,18 @@ SerializeState ( } } // If there are no tests, we're done here. - if (TestCount =3D=3D 0) - { + if (TestCount =3D=3D 0) { return NULL; } // Add room for the context, if there is one. - if (ContextToSave !=3D NULL) - { - TotalSize +=3D sizeof( UNIT_TEST_SAVE_CONTEXT ) + (UINT32)ContextToSav= eSize; + if (ContextToSave !=3D NULL) { + TotalSize +=3D sizeof (UNIT_TEST_SAVE_CONTEXT) + (UINT32)ContextToSave= Size; } =20 // // Now that we know the size, we need to allocate space for the serializ= ed output. - Header =3D AllocateZeroPool( TotalSize ); - if (Header =3D=3D NULL) - { + Header =3D AllocateZeroPool (TotalSize); + if (Header =3D=3D NULL) { return NULL; } =20 @@ -769,42 +730,44 @@ SerializeState ( // Alright, let's start setting up some data. Header->Version =3D UNIT_TEST_PERSISTENCE_LIB_VERSION; Header->BlobSize =3D TotalSize; - CopyMem( &Header->Fingerprint[0], &Framework->Fingerprint[0], UNIT_TEST_= FINGERPRINT_SIZE ); - CopyMem( &Header->StartTime, &Framework->StartTime, sizeof( EFI_TIME ) ); + CopyMem (&Header->Fingerprint[0], &Framework->Fingerprint[0], UNIT_TEST_= FINGERPRINT_SIZE); + CopyMem (&Header->StartTime, &Framework->StartTime, sizeof (EFI_TIME)); Header->TestCount =3D TestCount; Header->HasSavedContext =3D FALSE; =20 // // Start adding all of the test cases. // Set the floating pointer to the start of the current test save buffer. - FloatingPointer =3D (UINT8*)Header + sizeof( UNIT_TEST_SAVE_HEADER ); + FloatingPointer =3D (UINT8 *)Header + sizeof (UNIT_TEST_SAVE_HEADER); // Iterate all suites. SuiteListHead =3D &Framework->TestSuiteList; - for (Suite =3D GetFirstNode( SuiteListHead ); Suite !=3D SuiteListHead; = Suite =3D GetNextNode( SuiteListHead, Suite )) - { + for (Suite =3D GetFirstNode (SuiteListHead); Suite !=3D SuiteListHead; S= uite =3D GetNextNode (SuiteListHead, Suite)) { // Iterate all tests within the suite. - TestListHead =3D &((UNIT_TEST_SUITE_LIST_ENTRY*)Suite)->UTS.TestCaseLi= st; - for (Test =3D GetFirstNode( TestListHead ); Test !=3D TestListHead; Te= st =3D GetNextNode( TestListHead, Test )) - { - TestSaveData =3D (UNIT_TEST_SAVE_TEST*)FloatingPointer; - UnitTest =3D &((UNIT_TEST_LIST_ENTRY*)Test)->UT; + TestListHead =3D &((UNIT_TEST_SUITE_LIST_ENTRY *)Suite)->UTS.TestCaseL= ist; + for (Test =3D GetFirstNode (TestListHead); Test !=3D TestListHead; Tes= t =3D GetNextNode (TestListHead, Test)) { + TestSaveData =3D (UNIT_TEST_SAVE_TEST *)FloatingPointer; + UnitTest =3D &((UNIT_TEST_LIST_ENTRY *)Test)->UT; =20 // Save the fingerprint. - CopyMem( &TestSaveData->Fingerprint[0], &UnitTest->Fingerprint[0], U= NIT_TEST_FINGERPRINT_SIZE ); + CopyMem (&TestSaveData->Fingerprint[0], &UnitTest->Fingerprint[0], U= NIT_TEST_FINGERPRINT_SIZE); =20 // Save the result. TestSaveData->Result =3D UnitTest->Result; TestSaveData->FailureType =3D UnitTest->FailureType; - StrnCpyS(&TestSaveData->FailureMessage[0], UNIT_TEST_TESTFAILUREMSG_= LENGTH, &UnitTest->FailureMessage[0], UNIT_TEST_TESTFAILUREMSG_LENGTH); + StrnCpyS ( + &TestSaveData->FailureMessage[0], + UNIT_TEST_TESTFAILUREMSG_LENGTH, + &UnitTest->FailureMessage[0], + UNIT_TEST_TESTFAILUREMSG_LENGTH + ); =20 =20 // If there is a log, save the log. - FloatingPointer +=3D sizeof( UNIT_TEST_SAVE_TEST ); - if (UnitTest->Log !=3D NULL) - { + FloatingPointer +=3D sizeof (UNIT_TEST_SAVE_TEST); + if (UnitTest->Log !=3D NULL) { // The +1 is for the NULL character. Can't forget the NULL charact= er. - LogSize =3D (StrLen( UnitTest->Log ) + 1) * sizeof( CHAR16 ); - CopyMem( FloatingPointer, UnitTest->Log, LogSize ); + LogSize =3D (StrLen (UnitTest->Log) + 1) * sizeof (CHAR16); + CopyMem (FloatingPointer, UnitTest->Log, LogSize); FloatingPointer +=3D LogSize; } =20 @@ -813,18 +776,17 @@ SerializeState ( // Maybe. // Am I tired of writing code? // Yes. - TestSaveData->Size =3D (UINT32)(FloatingPointer - (UINT8*)TestSaveDa= ta); + TestSaveData->Size =3D (UINT32)(FloatingPointer - (UINT8 *)TestSaveD= ata); } } =20 // // If there is a context to save, let's do that now. - if (ContextToSave !=3D NULL && Framework->CurrentTest !=3D NULL) - { - TestSaveContext =3D (UNIT_TEST_SAVE_CONTEXT*)FloatingPointer; + if (ContextToSave !=3D NULL && Framework->CurrentTest !=3D NULL) { + TestSaveContext =3D (UNIT_TEST_SAVE_CONTEXT *)FloatingPointer; TestSaveContext->Size =3D (UINT32)ContextToSaveSize; - CopyMem( &TestSaveContext->Fingerprint[0], &Framework->CurrentTest->Fi= ngerprint[0], UNIT_TEST_FINGERPRINT_SIZE ); - CopyMem( ((UINT8*)TestSaveContext + sizeof( UNIT_TEST_SAVE_CONTEXT )),= ContextToSave, ContextToSaveSize ); + CopyMem (&TestSaveContext->Fingerprint[0], &Framework->CurrentTest->Fi= ngerprint[0], UNIT_TEST_FINGERPRINT_SIZE); + CopyMem (((UINT8 *)TestSaveContext + sizeof (UNIT_TEST_SAVE_CONTEXT)),= ContextToSave, ContextToSaveSize); Header->HasSavedContext =3D TRUE; } =20 @@ -835,42 +797,39 @@ SerializeState ( EFI_STATUS EFIAPI SaveFrameworkState ( - IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, - IN UNIT_TEST_CONTEXT ContextToSave OPTIONAL, - IN UINTN ContextToSaveSize + IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, + IN UNIT_TEST_CONTEXT ContextToSave, OPTIONAL + IN UINTN ContextToSaveSize ) { - EFI_STATUS Status; + EFI_STATUS Status; UNIT_TEST_SAVE_HEADER *Header =3D NULL; =20 // // First, let's not make assumptions about the parameters. if (FrameworkHandle =3D=3D NULL || (ContextToSave !=3D NULL && ContextTo= SaveSize =3D=3D 0) || - ContextToSaveSize > MAX_UINT32) - { + ContextToSaveSize > MAX_UINT32) { return EFI_INVALID_PARAMETER; } =20 // // Now, let's package up all the data for saving. - Header =3D SerializeState( FrameworkHandle, ContextToSave, ContextToSave= Size ); - if (Header =3D=3D NULL) - { + Header =3D SerializeState (FrameworkHandle, ContextToSave, ContextToSave= Size); + if (Header =3D=3D NULL) { return EFI_OUT_OF_RESOURCES; } =20 // // All that should be left to do is save it using the associated persist= ence lib. - Status =3D SaveUnitTestCache( FrameworkHandle, Header ); - if (EFI_ERROR( Status )) - { - DEBUG(( DEBUG_ERROR, "%a - Could not save state! %r\n", __FUNCTION__, = Status )); + Status =3D SaveUnitTestCache (FrameworkHandle, Header); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a - Could not save state! %r\n", __FUNCTION__, = Status)); Status =3D EFI_DEVICE_ERROR; } =20 // // Free data that was used. - FreePool( Header ); + FreePool (Header); =20 return Status; } // SaveFrameworkState() @@ -879,36 +838,34 @@ SaveFrameworkState ( EFI_STATUS EFIAPI SaveFrameworkStateAndQuit ( - IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, - IN UNIT_TEST_CONTEXT ContextToSave OPTIONAL, - IN UINTN ContextToSaveSize + IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, + IN UNIT_TEST_CONTEXT ContextToSave, OPTIONAL + IN UINTN ContextToSaveSize ) { - EFI_STATUS Status; + EFI_STATUS Status; =20 // // First, let's not make assumptions about the parameters. - if (FrameworkHandle =3D=3D NULL) - { + if (FrameworkHandle =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 // // Now, save all the data associated with this framework. - Status =3D SaveFrameworkState( FrameworkHandle, ContextToSave, ContextTo= SaveSize ); + Status =3D SaveFrameworkState (FrameworkHandle, ContextToSave, ContextTo= SaveSize); =20 // // If we're all good, let's book... - if (!EFI_ERROR( Status )) - { + if (!EFI_ERROR (Status)) { // // Free data that was used. - FreeUnitTestFramework( (UNIT_TEST_FRAMEWORK*)FrameworkHandle ); + FreeUnitTestFramework ((UNIT_TEST_FRAMEWORK *)FrameworkHandle); =20 // // Quit - gBS->Exit( gImageHandle, EFI_SUCCESS, 0, NULL ); - DEBUG(( DEBUG_ERROR, "%a - Unit test failed to quit! Framework can no = longer be used!\n", __FUNCTION__ )); + gBS->Exit (gImageHandle, EFI_SUCCESS, 0, NULL); + DEBUG ((DEBUG_ERROR, "%a - Unit test failed to quit! Framework can no = longer be used!\n", __FUNCTION__)); =20 // // We REALLY shouldn't be here. @@ -921,38 +878,36 @@ SaveFrameworkStateAndQuit ( =20 /** NOTE: Takes in a ResetType, but currently only supports EfiResetCold - and EfiResetWarm. All other types will return EFI_INVALID_PARAMETE= R. - If a more specific reset is required, use SaveFrameworkState() and - call gRT->ResetSystem() directly. + and EfiResetWarm. All other types will return EFI_INVALID_PARAMETER. + If a more specific reset is required, use SaveFrameworkState() and + call gRT->ResetSystem() directly. =20 **/ EFI_STATUS EFIAPI SaveFrameworkStateAndReboot ( - IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, - IN UNIT_TEST_CONTEXT ContextToSave OPTIONAL, - IN UINTN ContextToSaveSize, - IN EFI_RESET_TYPE ResetType + IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, + IN UNIT_TEST_CONTEXT ContextToSave, OPTIONAL + IN UINTN ContextToSaveSize, + IN EFI_RESET_TYPE ResetType ) { - EFI_STATUS Status; + EFI_STATUS Status; =20 // // First, let's not make assumptions about the parameters. if (FrameworkHandle =3D=3D NULL || - (ResetType !=3D EfiResetCold && ResetType !=3D EfiResetWarm)) - { + (ResetType !=3D EfiResetCold && ResetType !=3D EfiResetWarm)) { return EFI_INVALID_PARAMETER; } =20 // // Now, save all the data associated with this framework. - Status =3D SaveFrameworkState( FrameworkHandle, ContextToSave, ContextTo= SaveSize ); + Status =3D SaveFrameworkState (FrameworkHandle, ContextToSave, ContextTo= SaveSize); =20 // // If we're all good, let's book... - if (!EFI_ERROR( Status )) - { + if (!EFI_ERROR (Status)) { // // Next, we want to update the BootNext variable to USB // so that we have a fighting chance of coming back here. @@ -961,12 +916,12 @@ SaveFrameworkStateAndReboot ( =20 // // Free data that was used. - FreeUnitTestFramework( (UNIT_TEST_FRAMEWORK*)FrameworkHandle ); + FreeUnitTestFramework ((UNIT_TEST_FRAMEWORK *)FrameworkHandle); =20 // // Reset - gRT->ResetSystem( ResetType, EFI_SUCCESS, 0, NULL ); - DEBUG(( DEBUG_ERROR, "%a - Unit test failed to quit! Framework can no = longer be used!\n", __FUNCTION__)); + gRT->ResetSystem (ResetType, EFI_SUCCESS, 0, NULL); + DEBUG ((DEBUG_ERROR, "%a - Unit test failed to quit! Framework can no = longer be used!\n", __FUNCTION__)); =20 // // We REALLY shouldn't be here. diff --git a/MsUnitTestPkg/Library/UnitTestLogLib/UnitTestLogLib.c b/MsUnit= TestPkg/Library/UnitTestLogLib/UnitTestLogLib.c index d5146fcacb..f21e587e88 100644 --- a/MsUnitTestPkg/Library/UnitTestLogLib/UnitTestLogLib.c +++ b/MsUnitTestPkg/Library/UnitTestLogLib/UnitTestLogLib.c @@ -1,27 +1,27 @@ -/** -Implement UnitTestLogLib - Unit test debugging log - -Copyright (c) 2016, Microsoft Corporation - -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notic= e, -this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS= " AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPL= IED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS= CLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY D= IRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUD= ING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF U= SE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO= RY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLI= GENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/** @file + Implement UnitTestLogLib - Unit test debugging log + + Copyright (c) 2016, Microsoft Corporation + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are m= et: + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright not= ice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE D= ISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY= DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCL= UDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF= USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY TH= EORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEG= LIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 **/ =20 @@ -41,20 +41,18 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 =20 =20 -struct _UNIT_TEST_LOG_PREFIX_STRING -{ +struct _UNIT_TEST_LOG_PREFIX_STRING { UNIT_TEST_STATUS LogLevel; CHAR8 *String; }; =20 -struct _UNIT_TEST_LOG_PREFIX_STRING mLogPrefixStrings[] =3D -{ +struct _UNIT_TEST_LOG_PREFIX_STRING mLogPrefixStrings[] =3D { { DEBUG_ERROR, "[ERROR] " }, { DEBUG_WARN, "[WARNING] " }, { DEBUG_INFO, "[INFO] " }, { DEBUG_VERBOSE, "[VERBOSE] " } }; -UINTN mLogPrefixStringsCount =3D sizeof( mLogPrefixStrings ) / sizeof( mLo= gPrefixStrings[0] ); +UINTN mLogPrefixStringsCount =3D sizeof (mLogPrefixStrings) / sizeof (mLog= PrefixStrings[0]); =20 =20 =20 @@ -66,18 +64,16 @@ UINTN mLogPrefixStringsCount =3D sizeof( mLogPrefixStri= ngs ) / sizeof( mLogPrefixS //=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D =20 STATIC -CONST CHAR8* +CONST CHAR8 * GetStringForStatusLogPrefix ( - IN UINTN LogLevel + IN UINTN LogLevel ) { - UINTN Index; + UINTN Index; CHAR8 *Result =3D NULL; =20 - for (Index =3D 0; Index < mLogPrefixStringsCount; Index++) - { - if (mLogPrefixStrings[Index].LogLevel =3D=3D LogLevel) - { + for (Index =3D 0; Index < mLogPrefixStringsCount; Index++) { + if (mLogPrefixStrings[Index].LogLevel =3D=3D LogLevel) { Result =3D mLogPrefixStrings[Index].String; break; } @@ -91,8 +87,8 @@ GetStringForStatusLogPrefix ( STATIC EFI_STATUS AddStringToUnitTestLog ( - IN OUT UNIT_TEST *UnitTest, - IN CONST CHAR16 *String + IN OUT UNIT_TEST *UnitTest, + IN CONST CHAR16 *String ) { EFI_STATUS Status; @@ -100,28 +96,29 @@ AddStringToUnitTestLog ( // // Make sure that you're cooking with gas. // - if (UnitTest =3D=3D NULL || String =3D=3D NULL) - { + if (UnitTest =3D=3D NULL || String =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 // If this is the first log for the test allocate log space - if (UnitTest->Log =3D=3D NULL) - { - UnitTestLogInit(UnitTest, NULL, 0); + if (UnitTest->Log =3D=3D NULL) { + UnitTestLogInit (UnitTest, NULL, 0); } =20 - if (UnitTest->Log =3D=3D NULL) - { - DEBUG((DEBUG_ERROR, "Failed to allocate space for unit test log\n")); - ASSERT(UnitTest->Log !=3D NULL); + if (UnitTest->Log =3D=3D NULL) { + DEBUG ((DEBUG_ERROR, "Failed to allocate space for unit test log\n")); + ASSERT (UnitTest->Log !=3D NULL); return EFI_OUT_OF_RESOURCES; } =20 - Status =3D StrnCatS(UnitTest->Log, UNIT_TEST_MAX_LOG_BUFFER/ sizeof(CHAR= 16), String, UNIT_TEST_MAX_SINGLE_LOG_STRING_LENGTH); - if(EFI_ERROR(Status)) - { - DEBUG((DEBUG_ERROR, "Failed to add unit test log string. Status =3D %= r\n", Status)); + Status =3D StrnCatS ( + UnitTest->Log, + UNIT_TEST_MAX_LOG_BUFFER / sizeof (CHAR16), + String, + UNIT_TEST_MAX_SINGLE_LOG_STRING_LENGTH + ); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Failed to add unit test log string. Status =3D = %r\n", Status)); return Status; } =20 @@ -130,22 +127,21 @@ AddStringToUnitTestLog ( =20 STATIC EFI_STATUS -AddUnitTestFailure( - IN OUT UNIT_TEST *UnitTest, - IN CONST CHAR16 *FailureMessage, - FAILURE_TYPE FailureType -) +AddUnitTestFailure ( + IN OUT UNIT_TEST *UnitTest, + IN CONST CHAR16 *FailureMessage, + FAILURE_TYPE FailureType + ) { // // Make sure that you're cooking with gas. // - if (UnitTest =3D=3D NULL || FailureMessage =3D=3D NULL) - { + if (UnitTest =3D=3D NULL || FailureMessage =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 UnitTest->FailureType =3D FailureType; - StrCpyS(&UnitTest->FailureMessage[0], UNIT_TEST_TESTFAILUREMSG_LENGTH, F= ailureMessage); + StrCpyS (&UnitTest->FailureMessage[0], UNIT_TEST_TESTFAILUREMSG_LENGTH, = FailureMessage); =20 return EFI_SUCCESS; } @@ -159,45 +155,41 @@ AddUnitTestFailure( VOID EFIAPI UnitTestLogInit ( -IN OUT UNIT_TEST *Test, -IN UINT8 *Buffer, -IN UINTN BufferSize -) + IN OUT UNIT_TEST *Test, + IN UINT8 *Buffer, + IN UINTN BufferSize + ) { // // Make sure that you're cooking with gas. // - if (Test =3D=3D NULL) - { - DEBUG((DEBUG_ERROR, "%a called with invalid Test parameter\n", __FUNCT= ION__)); + if (Test =3D=3D NULL) { + DEBUG ((DEBUG_ERROR, "%a called with invalid Test parameter\n", __FUNC= TION__)); return; } =20 // If this is the first log for the test allocate log space - if (Test->Log =3D=3D NULL) - { - Test->Log =3D AllocateZeroPool(UNIT_TEST_MAX_LOG_BUFFER); + if (Test->Log =3D=3D NULL) { + Test->Log =3D AllocateZeroPool (UNIT_TEST_MAX_LOG_BUFFER); } =20 //check again to make sure allocate worked - if(Test->Log =3D=3D NULL) - { - DEBUG((DEBUG_ERROR, "Failed to allocate memory for the log\n")); + if (Test->Log =3D=3D NULL) { + DEBUG ((DEBUG_ERROR, "Failed to allocate memory for the log\n")); return; } =20 - if((Buffer !=3D NULL) && (BufferSize > 0) && ((BufferSize <=3D UNIT_TEST= _MAX_LOG_BUFFER))) - { - CopyMem(Test->Log, Buffer, BufferSize); + if ((Buffer !=3D NULL) && (BufferSize > 0) && ((BufferSize <=3D UNIT_TES= T_MAX_LOG_BUFFER))) { + CopyMem (Test->Log, Buffer, BufferSize); } } =20 VOID EFIAPI UnitTestLog ( - IN UNIT_TEST_FRAMEWORK_HANDLE Framework, - IN UINTN ErrorLevel, - IN CONST CHAR8 *Format, + IN UNIT_TEST_FRAMEWORK_HANDLE Framework, + IN UINTN ErrorLevel, + IN CONST CHAR8 *Format, ... ) { @@ -205,51 +197,48 @@ UnitTestLog ( CHAR16 LogString[UNIT_TEST_MAX_SINGLE_LOG_STRING_LENGTH]; CONST CHAR8 *LogTypePrefix =3D NULL; VA_LIST Marker; - UINTN LogLevel =3D (UINTN) PcdGet32(UnitTestLogLevel); + UINTN LogLevel =3D (UINTN) PcdGet32 (UnitTestLogLevel); // // Make sure that this debug mode is enabled. // if ((ErrorLevel & LogLevel) =3D=3D 0) { - return; + return; } =20 // // If we need to define a new format string... // well... get to it. // - LogTypePrefix =3D GetStringForStatusLogPrefix( ErrorLevel ); - if (LogTypePrefix !=3D NULL) - { - AsciiSPrint( NewFormatString, sizeof( NewFormatString ), "%a%a", LogTy= pePrefix, Format ); - } - else - { - AsciiStrCpyS( NewFormatString, sizeof( NewFormatString ), Format ); + LogTypePrefix =3D GetStringForStatusLogPrefix (ErrorLevel); + if (LogTypePrefix !=3D NULL) { + AsciiSPrint (NewFormatString, sizeof (NewFormatString), "%a%a", LogTyp= ePrefix, Format); + } else { + AsciiStrCpyS (NewFormatString, sizeof (NewFormatString), Format); } =20 // // Convert the message to an ASCII String // VA_START (Marker, Format); - UnicodeVSPrintAsciiFormat( LogString, sizeof( LogString ), NewFormatStri= ng, Marker ); + UnicodeVSPrintAsciiFormat (LogString, sizeof (LogString), NewFormatStrin= g, Marker); VA_END (Marker); =20 // // Finally, add the string to the log. // - AddStringToUnitTestLog( ((UNIT_TEST_FRAMEWORK*)Framework)->CurrentTest, = LogString ); + AddStringToUnitTestLog (((UNIT_TEST_FRAMEWORK *)Framework)->CurrentTest,= LogString); =20 return; } =20 VOID EFIAPI -UnitTestLogFailure( - IN UNIT_TEST_FRAMEWORK_HANDLE Framework, - FAILURE_TYPE FailureType, - IN CONST CHAR8 *Format, +UnitTestLogFailure ( + IN UNIT_TEST_FRAMEWORK_HANDLE Framework, + IN FAILURE_TYPE FailureType, + IN CONST CHAR8 *Format, ... -) + ) { CHAR16 LogString[UNIT_TEST_TESTFAILUREMSG_LENGTH]; VA_LIST Marker; @@ -258,14 +247,14 @@ UnitTestLogFailure( // // Convert the message to an ASCII String // - VA_START(Marker, Format); - UnicodeVSPrintAsciiFormat(LogString, sizeof(LogString), Format, Marker); - VA_END(Marker); + VA_START (Marker, Format); + UnicodeVSPrintAsciiFormat (LogString, sizeof (LogString), Format, Marker= ); + VA_END (Marker); =20 // // Finally, add the string to the log. // - AddUnitTestFailure(((UNIT_TEST_FRAMEWORK*)Framework)->CurrentTest, LogSt= ring, FailureType); + AddUnitTestFailure (((UNIT_TEST_FRAMEWORK *)Framework)->CurrentTest, Log= String, FailureType); =20 return; } diff --git a/MsUnitTestPkg/Library/UnitTestPersistenceFileSystemLib/UnitTes= tPersistenceFileSystemLib.c b/MsUnitTestPkg/Library/UnitTestPersistenceFile= SystemLib/UnitTestPersistenceFileSystemLib.c index c137a1b738..0b3b6deaec 100644 --- a/MsUnitTestPkg/Library/UnitTestPersistenceFileSystemLib/UnitTestPersis= tenceFileSystemLib.c +++ b/MsUnitTestPkg/Library/UnitTestPersistenceFileSystemLib/UnitTestPersis= tenceFileSystemLib.c @@ -1,30 +1,30 @@ -/** @file -- UnitTestPersistenceFilesystemLib.c - -This is an instance of the Unit Test Persistence Lib that will utilize -the filesystem that a test application is running from to save a serialized -version of the internal test state in case the test needs to quit and rest= ore. - -Copyright (c) 2016, Microsoft Corporation - -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notic= e, -this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS= " AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPL= IED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS= CLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY D= IRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUD= ING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF U= SE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO= RY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLI= GENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/** @file + + This is an instance of the Unit Test Persistence Lib that will utilize + the filesystem that a test application is running from to save a seriali= zed + version of the internal test state in case the test needs to quit and re= store. + + Copyright (c) 2016, Microsoft Corporation + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are m= et: + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright not= ice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE D= ISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY= DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCL= UDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF= USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY TH= EORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEG= LIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 **/ #include @@ -43,18 +43,18 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** TODO: STUFF!! =20 - @retval !NULL A pointer to the EFI_FILE protocol instance for the = filesystem. - @retval NULL Filesystem could not be found or an error occurred. + @retval !NULL A pointer to the EFI_FILE protocol instance for the file= system. + @retval NULL Filesystem could not be found or an error occurred. =20 **/ STATIC -EFI_DEVICE_PATH_PROTOCOL* +EFI_DEVICE_PATH_PROTOCOL * GetCacheFileDevicePath ( - IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle + IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle ) { - EFI_STATUS Status; - UNIT_TEST_FRAMEWORK *Framework =3D (UNIT_TEST_FRAMEWORK*)Fra= meworkHandle; + EFI_STATUS Status; + UNIT_TEST_FRAMEWORK *Framework =3D (UNIT_TEST_FRAMEWORK *)Fr= ameworkHandle; EFI_LOADED_IMAGE_PROTOCOL *LoadedImage; CHAR16 *AppPath =3D NULL, *CacheFilePath =3D NU= LL; CHAR16 *FileSuffix =3D L"_Cache.dat"; @@ -65,12 +65,13 @@ GetCacheFileDevicePath ( // First, we need to get some information from the loaded image. // Namely, where the hell are you? // - Status =3D gBS->HandleProtocol( gImageHandle, - &gEfiLoadedImageProtocolGuid, - (VOID**)&LoadedImage ); - if (EFI_ERROR( Status )) - { - DEBUG(( DEBUG_WARN, "%a - Failed to locate DevicePath for loaded image= . %r\n", __FUNCTION__, Status )); + Status =3D gBS->HandleProtocol ( + gImageHandle, + &gEfiLoadedImageProtocolGuid, + (VOID **)&LoadedImage + ); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_WARN, "%a - Failed to locate DevicePath for loaded image= . %r\n", __FUNCTION__, Status)); return NULL; } =20 @@ -82,19 +83,16 @@ GetCacheFileDevicePath ( // NOTE: This may not be necessary... Path processing functions exist... // PathCleanUpDirectories (FileNameCopy); // if (PathRemoveLastItem (FileNameCopy)) { - AppPath =3D ConvertDevicePathToText( LoadedImage->FilePath, TRUE, TRUE )= ; // NOTE: This must be freed. - DirectorySlashOffset =3D StrLen( AppPath ); + AppPath =3D ConvertDevicePathToText (LoadedImage->FilePath, TRUE, TRUE);= // NOTE: This must be freed. + DirectorySlashOffset =3D StrLen (AppPath); // Make sure we didn't get any weird data. - if (DirectorySlashOffset =3D=3D 0) - { - DEBUG(( DEBUG_ERROR, "%a - Weird 0-length string when processing app p= ath.\n", __FUNCTION__ )); + if (DirectorySlashOffset =3D=3D 0) { + DEBUG ((DEBUG_ERROR, "%a - Weird 0-length string when processing app p= ath.\n", __FUNCTION__)); goto Exit; } // Now that we know we have a decent string, let's take a deeper look. - do - { - if (AppPath[DirectorySlashOffset] =3D=3D L'\\') - { + do { + if (AppPath[DirectorySlashOffset] =3D=3D L'\\') { break; } DirectorySlashOffset--; @@ -105,9 +103,8 @@ GetCacheFileDevicePath ( // That would be the path to the parent directory that the test app is e= xecuting from. // Let's check and make sure that's right. // - if (AppPath[DirectorySlashOffset] !=3D L'\\') - { - DEBUG(( DEBUG_ERROR, "%a - Could not find a single directory separator= in app path.\n", __FUNCTION__ )); + if (AppPath[DirectorySlashOffset] !=3D L'\\') { + DEBUG ((DEBUG_ERROR, "%a - Could not find a single directory separator= in app path.\n", __FUNCTION__)); goto Exit; } =20 @@ -115,32 +112,39 @@ GetCacheFileDevicePath ( // Now we know some things, we're ready to produce our output string, I = think. // CacheFilePathLength =3D DirectorySlashOffset + 1; - CacheFilePathLength +=3D StrLen( Framework->ShortTitle ); - CacheFilePathLength +=3D StrLen( FileSuffix ); + CacheFilePathLength +=3D StrLen (Framework->ShortTitle); + CacheFilePathLength +=3D StrLen (FileSuffix); CacheFilePathLength +=3D 1; // Don't forget the NULL terminator. - CacheFilePath =3D AllocateZeroPool( CacheFilePathLength * sizeof( = CHAR16 ) ); + CacheFilePath =3D AllocateZeroPool (CacheFilePathLength * sizeof (= CHAR16)); =20 // // Let's produce our final path string, shall we? // - StrnCpyS( CacheFilePath, CacheFilePathLength, AppPath, DirectorySlashOff= set + 1 ); // Copy the path for the parent directory. - StrCatS( CacheFilePath, CacheFilePathLength, Framework->ShortTitle ); = // Copy the base name for the test cache. - StrCatS( CacheFilePath, CacheFilePathLength, FileSuffix ); = // Copy the file suffix. + StrnCpyS ( + CacheFilePath, + CacheFilePathLength, + AppPath, + DirectorySlashOffset + 1 + ); // Copy the path for the parent directory. + StrCatS ( + CacheFilePath, + CacheFilePathLength, + Framework->ShortTitle + ); // Copy the base name for the test cache. + StrCatS (CacheFilePath, CacheFilePathLength, FileSuffix); = // Copy the file suffix. =20 // // Finally, try to create the device path for the thing thing. // - CacheFileDevicePath =3D FileDevicePath( LoadedImage->DeviceHandle, Cache= FilePath ); + CacheFileDevicePath =3D FileDevicePath (LoadedImage->DeviceHandle, Cache= FilePath); =20 Exit: // Always put away your toys. - if (AppPath !=3D NULL) - { - FreePool( AppPath ); + if (AppPath !=3D NULL) { + FreePool (AppPath); } - if (CacheFilePath !=3D NULL) - { - FreePool( CacheFilePath); + if (CacheFilePath !=3D NULL) { + FreePool (CacheFilePath); } =20 return CacheFileDevicePath; @@ -151,47 +155,47 @@ Exit: Determines whether a persistence cache already exists for the given framework. =20 - @param[in] FrameworkHandle A pointer to the framework that is being p= ersisted. + @param[in] FrameworkHandle A pointer to the framework that is being pe= rsisted. =20 - @retval TRUE - @retval FALSE Cache doesn't exist or an error occurred. + @retval TRUE=20 + @retval FALSE Cache doesn't exist or an error occurred. =20 **/ BOOLEAN EFIAPI DoesCacheExist ( - IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle + IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle ) { - EFI_DEVICE_PATH_PROTOCOL *FileDevicePath; - EFI_STATUS Status; - EFI_HANDLE FileDeviceHandle; - SHELL_FILE_HANDLE FileHandle; + EFI_DEVICE_PATH_PROTOCOL *FileDevicePath; + EFI_STATUS Status; + EFI_HANDLE FileDeviceHandle; + SHELL_FILE_HANDLE FileHandle; =20 // NOTE: This devpath is allocated and must be freed. - FileDevicePath =3D GetCacheFileDevicePath( FrameworkHandle ); + FileDevicePath =3D GetCacheFileDevicePath (FrameworkHandle); =20 // Check to see whether the file exists. // If the file can be opened for reading, it exists. // Otherwise, probably not. - Status =3D ShellOpenFileByDevicePath( &FileDevicePath, - &FileDeviceHandle, - &FileHandle, - EFI_FILE_MODE_READ, - 0 ); - if (!EFI_ERROR( Status )) - { - ShellCloseFile( &FileHandle ); + Status =3D ShellOpenFileByDevicePath ( + &FileDevicePath, + &FileDeviceHandle, + &FileHandle, + EFI_FILE_MODE_READ, + 0 + ); + if (!EFI_ERROR (Status)) { + ShellCloseFile (&FileHandle); } =20 - if (FileDevicePath !=3D NULL) - { - FreePool( FileDevicePath ); + if (FileDevicePath !=3D NULL) { + FreePool (FileDevicePath); } =20 - DEBUG(( DEBUG_VERBOSE, "%a - Returning %d\n", __FUNCTION__, !EFI_ERROR( = Status ) )); + DEBUG ((DEBUG_VERBOSE, "%a - Returning %d\n", __FUNCTION__, !EFI_ERROR (= Status))); =20 - return !EFI_ERROR( Status ); + return !EFI_ERROR (Status); } // DoesCacheExist() =20 =20 @@ -200,69 +204,69 @@ DoesCacheExist ( state in a manner that can persist a Unit Test Application quit or even a system reboot. =20 - @param[in] FrameworkHandle A pointer to the framework that is being p= ersisted. - @param[in] SaveData A pointer to the buffer containing the ser= ialized - framework internal state. + @param[in] FrameworkHandle A pointer to the framework that is being pe= rsisted. + @param[in] SaveData A pointer to the buffer containing the seri= alized + framework internal state. =20 - @retval EFI_SUCCESS Data is persisted and the test can be safely q= uit. - @retval Others Data is not persisted and test cannot be resum= ed upon exit. + @retval EFI_SUCCESS Data is persisted and the test can be safely quit. + @retval Others Data is not persisted and test cannot be resumed u= pon exit. =20 **/ EFI_STATUS EFIAPI SaveUnitTestCache ( - IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, - IN UNIT_TEST_SAVE_HEADER *SaveData + IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, + IN UNIT_TEST_SAVE_HEADER *SaveData ) { - EFI_DEVICE_PATH_PROTOCOL *FileDevicePath; - EFI_STATUS Status; - EFI_HANDLE FileDeviceHandle; - SHELL_FILE_HANDLE FileHandle; - UINTN WriteCount; + EFI_DEVICE_PATH_PROTOCOL *FileDevicePath; + EFI_STATUS Status; + EFI_HANDLE FileDeviceHandle; + SHELL_FILE_HANDLE FileHandle; + UINTN WriteCount; =20 // // Check the inputs for sanity. - if (FrameworkHandle =3D=3D NULL || SaveData =3D=3D NULL) - { + if (FrameworkHandle =3D=3D NULL || SaveData =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 // // Determine the path for the cache file. // NOTE: This devpath is allocated and must be freed. - FileDevicePath =3D GetCacheFileDevicePath( FrameworkHandle ); + FileDevicePath =3D GetCacheFileDevicePath (FrameworkHandle); =20 // //First lets open the file if it exists so we can delete it...This is th= e work around for truncation // - Status =3D ShellOpenFileByDevicePath(&FileDevicePath, - &FileDeviceHandle, - &FileHandle, - (EFI_FILE_MODE_READ | EFI_FILE_MODE_W= RITE), - 0); - - if (!EFI_ERROR(Status)) - { + Status =3D ShellOpenFileByDevicePath ( + &FileDevicePath, + &FileDeviceHandle, + &FileHandle, + (EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE), + 0 + ); + + if (!EFI_ERROR (Status)) { //if file handle above was opened it will be closed by the delete. - Status =3D ShellDeleteFile(&FileHandle); - if (EFI_ERROR(Status)) - { - DEBUG((DEBUG_ERROR, "%a failed to delete file %r\n", __FUNCTION__, S= tatus)); + Status =3D ShellDeleteFile (&FileHandle); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a failed to delete file %r\n", __FUNCTION__, = Status)); } } =20 // // Now that we know the path to the file... let's open it for writing. // - Status =3D ShellOpenFileByDevicePath( &FileDevicePath, - &FileDeviceHandle, - &FileHandle, - (EFI_FILE_MODE_READ | EFI_FILE_MODE_= WRITE | EFI_FILE_MODE_CREATE), - 0 ); - if (EFI_ERROR( Status )) - { - DEBUG(( DEBUG_ERROR, "%a - Opening file for writing failed! %r\n", __F= UNCTION__, Status )); + Status =3D ShellOpenFileByDevicePath ( + &FileDevicePath, + &FileDeviceHandle, + &FileHandle, + (EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CRE= ATE), + 0 + ); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a - Opening file for writing failed! %r\n", __F= UNCTION__, Status)); goto Exit; } =20 @@ -270,29 +274,27 @@ SaveUnitTestCache ( // Write the data to the file. // WriteCount =3D SaveData->BlobSize; - DEBUG(( DEBUG_INFO, "%a - Writing %d bytes to file...\n", __FUNCTION__, = WriteCount )); - Status =3D ShellWriteFile( FileHandle, - &WriteCount, - SaveData ); - - if (EFI_ERROR( Status ) || WriteCount !=3D SaveData->BlobSize) - { - DEBUG(( DEBUG_ERROR, "%a - Writing to file failed! %r\n", __FUNCTION__= , Status )); - } - else - { - DEBUG(( DEBUG_INFO, "%a - SUCCESS!\n", __FUNCTION__)); + DEBUG ((DEBUG_INFO, "%a - Writing %d bytes to file...\n", __FUNCTION__, = WriteCount)); + Status =3D ShellWriteFile ( + FileHandle, + &WriteCount, + SaveData + ); + + if (EFI_ERROR (Status) || WriteCount !=3D SaveData->BlobSize) { + DEBUG ((DEBUG_ERROR, "%a - Writing to file failed! %r\n", __FUNCTION__= , Status)); + } else { + DEBUG ((DEBUG_INFO, "%a - SUCCESS!\n", __FUNCTION__)); } =20 // // No matter what, we should probably close the file. // - ShellCloseFile( &FileHandle ); + ShellCloseFile (&FileHandle); =20 Exit: - if (FileDevicePath !=3D NULL) - { - FreePool( FileDevicePath ); + if (FileDevicePath !=3D NULL) { + FreePool (FileDevicePath); } =20 return Status; @@ -303,14 +305,14 @@ Exit: Will retrieve any cached state associated with the given framework. Will allocate a buffer to hold the loaded data. =20 - @param[in] FrameworkHandle A pointer to the framework that is being p= ersisted. - @param[in] SaveData A pointer pointer that will be updated wit= h the address - of the loaded data buffer. + @param[in] FrameworkHandle A pointer to the framework that is being pe= rsisted. + @param[in] SaveData A pointer pointer that will be updated with= the address + of the loaded data buffer. =20 - @retval EFI_SUCCESS Data has been loaded successfully and Save= Data is updated - with a pointer to the buffer. - @retval Others An error has occurred and no data has been= loaded. SaveData - is set to NULL. + @retval EFI_SUCCESS Data has been loaded successfully and SaveData is = updated + with a pointer to the buffer. + @retval Others An error has occurred and no data has been loaded.= SaveData + is set to NULL. =20 **/ EFI_STATUS @@ -320,10 +322,10 @@ LoadUnitTestCache ( OUT UNIT_TEST_SAVE_HEADER **SaveData ) { - EFI_STATUS Status; - EFI_DEVICE_PATH_PROTOCOL *FileDevicePath; - EFI_HANDLE FileDeviceHandle; - SHELL_FILE_HANDLE FileHandle; + EFI_STATUS Status; + EFI_DEVICE_PATH_PROTOCOL *FileDevicePath; + EFI_HANDLE FileDeviceHandle; + SHELL_FILE_HANDLE FileHandle; BOOLEAN IsFileOpened =3D FALSE; UINT64 LargeFileSize; UINTN FileSize; @@ -331,80 +333,72 @@ LoadUnitTestCache ( =20 // // Check the inputs for sanity. - if (FrameworkHandle =3D=3D NULL || SaveData =3D=3D NULL) - { + if (FrameworkHandle =3D=3D NULL || SaveData =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 // // Determine the path for the cache file. // NOTE: This devpath is allocated and must be freed. - FileDevicePath =3D GetCacheFileDevicePath( FrameworkHandle ); + FileDevicePath =3D GetCacheFileDevicePath (FrameworkHandle); =20 // // Now that we know the path to the file... let's open it for writing. // - Status =3D ShellOpenFileByDevicePath( &FileDevicePath, - &FileDeviceHandle, - &FileHandle, - EFI_FILE_MODE_READ, - 0 ); - if (EFI_ERROR( Status )) - { - DEBUG(( DEBUG_ERROR, "%a - Opening file for writing failed! %r\n", __F= UNCTION__, Status )); + Status =3D ShellOpenFileByDevicePath ( + &FileDevicePath, + &FileDeviceHandle, + &FileHandle, + EFI_FILE_MODE_READ, + 0 + ); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a - Opening file for writing failed! %r\n", __F= UNCTION__, Status)); goto Exit; - } - else - { + } else { IsFileOpened =3D TRUE; } =20 // // Now that the file is opened, we need to determine how large a buffer = we need. - Status =3D ShellGetFileSize( FileHandle, &LargeFileSize ); - if (EFI_ERROR( Status )) - { - DEBUG(( DEBUG_ERROR, "%a - Failed to determine file size! %r\n", __FUN= CTION__, Status )); + Status =3D ShellGetFileSize (FileHandle, &LargeFileSize); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a - Failed to determine file size! %r\n", __FUN= CTION__, Status)); goto Exit; } =20 // // Now that we know the size, let's allocated a buffer to hold the conte= nts. FileSize =3D (UINTN)LargeFileSize; // You know what... if it's too la= rge, this lib don't care. - Buffer =3D AllocatePool( FileSize ); - if (Buffer =3D=3D NULL) - { - DEBUG(( DEBUG_ERROR, "%a - Failed to allocate a pool to hold the file = contents! %r\n", __FUNCTION__, Status )); + Buffer =3D AllocatePool (FileSize); + if (Buffer =3D=3D NULL) { + DEBUG ((DEBUG_ERROR, "%a - Failed to allocate a pool to hold the file = contents! %r\n", __FUNCTION__, Status)); Status =3D EFI_OUT_OF_RESOURCES; goto Exit; } =20 // // Finally, let's read the bloody data. - Status =3D ShellReadFile( FileHandle, &FileSize, Buffer ); - if (EFI_ERROR( Status )) - { - DEBUG(( DEBUG_ERROR, "%a - Failed to read the file contents! %r\n", __= FUNCTION__, Status )); + Status =3D ShellReadFile (FileHandle, &FileSize, Buffer); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a - Failed to read the file contents! %r\n", __= FUNCTION__, Status)); } =20 Exit: // // Always put away your toys. - if (FileDevicePath !=3D NULL) - { - FreePool( FileDevicePath ); + if (FileDevicePath !=3D NULL) { + FreePool (FileDevicePath); } - if (IsFileOpened) - { - ShellCloseFile( &FileHandle ); + if (IsFileOpened) { + ShellCloseFile (&FileHandle); } =20 // // If we're returning an error, make sure // the state is sane. - if (EFI_ERROR( Status ) && Buffer !=3D NULL) - { - FreePool( Buffer ); + if (EFI_ERROR (Status) && Buffer !=3D NULL) { + FreePool (Buffer); Buffer =3D NULL; } =20 diff --git a/MsUnitTestPkg/Library/UnitTestPersistenceLibNull/UnitTestPersi= stenceLibNull.c b/MsUnitTestPkg/Library/UnitTestPersistenceLibNull/UnitTest= PersistenceLibNull.c index 01ac4a4fe7..ef1cda8d3f 100644 --- a/MsUnitTestPkg/Library/UnitTestPersistenceLibNull/UnitTestPersistenceL= ibNull.c +++ b/MsUnitTestPkg/Library/UnitTestPersistenceLibNull/UnitTestPersistenceL= ibNull.c @@ -1,27 +1,27 @@ /** @file -- UnitTestNullPersistenceLib.c -This is an instance of the Unit Test Persistence Lib that does nothing. - -Copyright (c) 2016, Microsoft Corporation - -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notic= e, -this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS= " AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPL= IED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS= CLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY D= IRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUD= ING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF U= SE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO= RY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLI= GENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + This is an instance of the Unit Test Persistence Lib that does nothing. + + Copyright (c) 2016, Microsoft Corporation + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are m= et: + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright not= ice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE D= ISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY= DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCL= UDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF= USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY TH= EORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEG= LIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 **/ =20 @@ -35,16 +35,16 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Determines whether a persistence cache already exists for the given framework. =20 - @param[in] FrameworkHandle A pointer to the framework that is being p= ersisted. + @param[in] FrameworkHandle A pointer to the framework that is being pe= rsisted. =20 - @retval TRUE - @retval FALSE Cache doesn't exist or an error occurred. + @retval TRUE=20 + @retval FALSE Cache doesn't exist or an error occurred. =20 **/ BOOLEAN EFIAPI DoesCacheExist ( - IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle + IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle ) { return FALSE; @@ -56,19 +56,19 @@ DoesCacheExist ( state in a manner that can persist a Unit Test Application quit or even a system reboot. =20 - @param[in] FrameworkHandle A pointer to the framework that is being p= ersisted. - @param[in] SaveData A pointer to the buffer containing the ser= ialized - framework internal state. + @param[in] FrameworkHandle A pointer to the framework that is being pe= rsisted. + @param[in] SaveData A pointer to the buffer containing the seri= alized + framework internal state. =20 - @retval EFI_SUCCESS Data is persisted and the test can be safely q= uit. - @retval Others Data is not persisted and test cannot be resum= ed upon exit. + @retval EFI_SUCCESS Data is persisted and the test can be safely quit. + @retval Others Data is not persisted and test cannot be resumed u= pon exit. =20 **/ EFI_STATUS EFIAPI SaveUnitTestCache ( - IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, - IN UNIT_TEST_SAVE_HEADER *SaveData + IN UNIT_TEST_FRAMEWORK_HANDLE FrameworkHandle, + IN UNIT_TEST_SAVE_HEADER *SaveData ) { return EFI_UNSUPPORTED; @@ -79,14 +79,14 @@ SaveUnitTestCache ( Will retrieve any cached state associated with the given framework. Will allocate a buffer to hold the loaded data. =20 - @param[in] FrameworkHandle A pointer to the framework that is being p= ersisted. - @param[in] SaveData A pointer pointer that will be updated wit= h the address - of the loaded data buffer. + @param[in] FrameworkHandle A pointer to the framework that is being pe= rsisted. + @param[in] SaveData A pointer pointer that will be updated with= the address + of the loaded data buffer. =20 - @retval EFI_SUCCESS Data has been loaded successfully and Save= Data is updated - with a pointer to the buffer. - @retval Others An error has occurred and no data has been= loaded. SaveData - is set to NULL. + @retval EFI_SUCCESS Data has been loaded successfully and SaveData is = updated + with a pointer to the buffer. + @retval Others An error has occurred and no data has been loaded.= SaveData + is set to NULL. =20 **/ EFI_STATUS diff --git a/MsUnitTestPkg/Library/UnitTestResultReportPlainTextOutputLib/U= nitTestResultReportLib.c b/MsUnitTestPkg/Library/UnitTestResultReportPlainT= extOutputLib/UnitTestResultReportLib.c index 9c243a34e3..c713de25f8 100644 --- a/MsUnitTestPkg/Library/UnitTestResultReportPlainTextOutputLib/UnitTest= ResultReportLib.c +++ b/MsUnitTestPkg/Library/UnitTestResultReportPlainTextOutputLib/UnitTest= ResultReportLib.c @@ -1,28 +1,27 @@ -/** -Implement UnitTestResultReportLib doing plain txt out to console - - -Copyright (c) 2016, Microsoft Corporation - -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notic= e, -this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS= " AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPL= IED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS= CLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY D= IRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUD= ING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF U= SE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO= RY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLI= GENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/** @file + Implement UnitTestResultReportLib doing plain txt out to console + + Copyright (c) 2016, Microsoft Corporation + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are m= et: + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright not= ice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE D= ISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY= DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCL= UDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF= USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY TH= EORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEG= LIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 **/ =20 @@ -35,31 +34,27 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 =20 =20 -struct _UNIT_TEST_STATUS_STRING -{ +struct _UNIT_TEST_STATUS_STRING { UNIT_TEST_STATUS Status; CHAR8 *String; }; =20 -struct _UNIT_TEST_STATUS_STRING mStatusStrings[] =3D -{ +struct _UNIT_TEST_STATUS_STRING mStatusStrings[] =3D { { UNIT_TEST_PASSED, "PASSED" }, { UNIT_TEST_ERROR_PREREQ_NOT_MET, "NOT RUN - PREREQ FAILED" }, { UNIT_TEST_ERROR_TEST_FAILED, "FAILED" }, { UNIT_TEST_RUNNING, "RUNNING" }, { UNIT_TEST_PENDING, "PENDING" } }; -UINTN mStatusStringsCount =3D sizeof( mStatusS= trings ) / sizeof( mStatusStrings[0] ); +UINTN mStatusStringsCount =3D sizeof (mStatusS= trings) / sizeof (mStatusStrings[0]); CHAR8 *mUnknownStatus =3D "**UNKNOWN**"; =20 -struct _UNIT_TEST_FAILURE_TYPE_STRING -{ +struct _UNIT_TEST_FAILURE_TYPE_STRING { FAILURE_TYPE Type; CHAR8 *String; }; =20 -struct _UNIT_TEST_FAILURE_TYPE_STRING mFailureTypeStrings[]=3D -{ +struct _UNIT_TEST_FAILURE_TYPE_STRING mFailureTypeStrings[] =3D { { FAILURETYPE_NOFAILURE, "NO FAILURE"}, { FAILURETYPE_OTHER, "OTHER FAILURE" }, { FAILURETYPE_ASSERTTRUE, "ASSERT_TRUE FAILURE" }, @@ -68,9 +63,9 @@ struct _UNIT_TEST_FAILURE_TYPE_STRING mFailureTypeStrings= []=3D { FAILURETYPE_ASSERTNOTEQUAL, "ASSERT_NOTEQUAL FAILURE"}, { FAILURETYPE_ASSERTNOTEFIERROR, "ASSERT_NOTEFIERROR FAILURE"}, { FAILURETYPE_ASSERTSTATUSEQUAL, "ASSERT_STATUSEQUAL FAILURE"}, - { FAILURETYPE_ASSERTNOTNULL , "ASSERT_NOTNULL FAILURE" } + { FAILURETYPE_ASSERTNOTNULL, "ASSERT_NOTNULL FAILURE" } }; -UINTN mFailureTypeStringsCount =3D sizeof(mFailureTypeStrings) / sizeof(mF= ailureTypeStrings[0]); +UINTN mFailureTypeStringsCount =3D sizeof (mFailureTypeStrings) / sizeof (= mFailureTypeStrings[0]); CHAR8 *mUnknownFailureType =3D "*UNKNOWN* Failure"; =20 //=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D @@ -80,19 +75,17 @@ CHAR8 *mUnknownFailureType =3D "*UNKNOWN* Failure"; //=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D =20 STATIC -CONST CHAR8* +CONST CHAR8 * GetStringForUnitTestStatus ( - IN UNIT_TEST_STATUS Status + IN UNIT_TEST_STATUS Status ) { - UINTN Index; - CHAR8 *Result; + UINTN Index; + CHAR8 *Result; =20 Result =3D mUnknownStatus; - for (Index =3D 0; Index < mStatusStringsCount; Index++) - { - if (mStatusStrings[Index].Status =3D=3D Status) - { + for (Index =3D 0; Index < mStatusStringsCount; Index++) { + if (mStatusStrings[Index].Status =3D=3D Status) { Result =3D mStatusStrings[Index].String; break; } @@ -102,39 +95,36 @@ GetStringForUnitTestStatus ( } =20 STATIC -CONST CHAR8* -GetStringForFailureType( - IN FAILURE_TYPE Failure -) +CONST CHAR8 * +GetStringForFailureType ( + IN FAILURE_TYPE Failure + ) { - UINTN Index; - CHAR8 *Result; + UINTN Index; + CHAR8 *Result; =20 Result =3D mUnknownFailureType; - for (Index =3D 0; Index < mFailureTypeStringsCount; Index++) - { - if (mFailureTypeStrings[Index].Type =3D=3D Failure) - { + for (Index =3D 0; Index < mFailureTypeStringsCount; Index++) { + if (mFailureTypeStrings[Index].Type =3D=3D Failure) { Result =3D mFailureTypeStrings[Index].String; break; } } - if (Result =3D=3D mUnknownFailureType) - { - DEBUG((DEBUG_INFO, "%a Failure Type does not have string defined 0x%X\= n", __FUNCTION__ , (UINT32)Failure)); + if (Result =3D=3D mUnknownFailureType) { + DEBUG ((DEBUG_INFO, "%a Failure Type does not have string defined 0x%X= \n", __FUNCTION__, (UINT32)Failure)); } =20 return Result; } =20 /* -Method to print the Unit Test run results + Method to print the Unit Test run results =20 -@retval Success + @retval Success */ EFI_STATUS EFIAPI -OutputUnitTestFrameworkReport( +OutputUnitTestFrameworkReport ( IN UNIT_TEST_FRAMEWORK *Framework ) { @@ -143,87 +133,89 @@ OutputUnitTestFrameworkReport( INTN NotRun =3D 0; UNIT_TEST_SUITE_LIST_ENTRY *Suite =3D NULL; =20 - if (Framework =3D=3D NULL) - { + if (Framework =3D=3D NULL) { return EFI_INVALID_PARAMETER; } =20 - Print( L"---------------------------------------------------------\n" ); - Print( L"------------- UNIT TEST FRAMEWORK RESULTS ---------------\n" ); - Print( L"---------------------------------------------------------\n" ); + Print (L"---------------------------------------------------------\n"); + Print (L"------------- UNIT TEST FRAMEWORK RESULTS ---------------\n"); + Print (L"---------------------------------------------------------\n"); =20 //print the version and time =20 // // Iterate all suites // - for (Suite =3D (UNIT_TEST_SUITE_LIST_ENTRY*)GetFirstNode(&Framework->Tes= tSuiteList); - (LIST_ENTRY*)Suite !=3D &Framework->TestSuiteList; - Suite =3D (UNIT_TEST_SUITE_LIST_ENTRY*)GetNextNode(&Framework->TestSui= teList, (LIST_ENTRY*)Suite)) - { + for (Suite =3D (UNIT_TEST_SUITE_LIST_ENTRY *)GetFirstNode (&Framework->T= estSuiteList); + (LIST_ENTRY *)Suite !=3D &Framework->TestSuiteList; + Suite =3D (UNIT_TEST_SUITE_LIST_ENTRY *)GetNextNode (&Framework->Te= stSuiteList, (LIST_ENTRY *)Suite)) { UNIT_TEST_LIST_ENTRY *Test =3D NULL; INTN SPassed =3D 0; INTN SFailed =3D 0; INTN SNotRun =3D 0; =20 - Print( L"/////////////////////////////////////////////////////////\n" = ); - Print( L" SUITE: %s\n", Suite->UTS.Title ); - Print( L" PACKAGE: %s\n", Suite->UTS.Package); - Print( L"/////////////////////////////////////////////////////////\n" = ); + Print (L"/////////////////////////////////////////////////////////\n"); + Print (L" SUITE: %s\n", Suite->UTS.Title); + Print (L" PACKAGE: %s\n", Suite->UTS.Package); + Print (L"/////////////////////////////////////////////////////////\n"); =20 // // Iterate all tests within the suite // - for (Test =3D (UNIT_TEST_LIST_ENTRY*)GetFirstNode(&(Suite->UTS.TestCas= eList)); - (LIST_ENTRY*)Test !=3D &(Suite->UTS.TestCaseList); - Test =3D (UNIT_TEST_LIST_ENTRY*)GetNextNode(&(Suite->UTS.TestCaseLis= t), (LIST_ENTRY*)Test)) - { + for (Test =3D (UNIT_TEST_LIST_ENTRY *)GetFirstNode (& (Suite->UTS.Test= CaseList)); + (LIST_ENTRY *)Test !=3D &(Suite->UTS.TestCaseList); + Test =3D (UNIT_TEST_LIST_ENTRY *)GetNextNode (& (Suite->UTS.TestC= aseList), (LIST_ENTRY *)Test)) { =20 - Print (L"*********************************************************\n= " ); + Print (L"*********************************************************\n= "); Print (L" CLASS NAME: %s\n", Test->UT.ClassName); - Print( L" TEST: %s\n", Test->UT.Description ); - Print( L" STATUS: %a\n", GetStringForUnitTestStatus( Test->UT.Resu= lt ) ); - Print( L" FAILURE: %a\n", GetStringForFailureType(Test->UT.FailureT= ype)); - Print( L" FAILURE MESSAGE:\n%a\n", Test->UT.FailureMessage); - - if (Test->UT.Log !=3D NULL) - { - Print( L" LOG:\n" ); + Print (L" TEST: %s\n", Test->UT.Description); + Print (L" STATUS: %a\n", GetStringForUnitTestStatus (Test->UT.Resu= lt)); + Print (L" FAILURE: %a\n", GetStringForFailureType (Test->UT.Failure= Type)); + Print (L" FAILURE MESSAGE:\n%a\n", Test->UT.FailureMessage); + + if (Test->UT.Log !=3D NULL) { + Print (L" LOG:\n"); // NOTE: This has to be done directly because all of the other // "formatted" print statements have caps on the string size. - gST->ConOut->OutputString( gST->ConOut, Test->UT.Log ); + gST->ConOut->OutputString (gST->ConOut, Test->UT.Log); } =20 - switch (Test->UT.Result) - { - case UNIT_TEST_PASSED: SPassed++; break; - case UNIT_TEST_ERROR_TEST_FAILED: SFailed++; break; - case UNIT_TEST_PENDING: // Fall through... - case UNIT_TEST_RUNNING: // Fall through... - case UNIT_TEST_ERROR_PREREQ_NOT_MET: SNotRun++; break; - default: break; + switch (Test->UT.Result) { + case UNIT_TEST_PASSED: + SPassed++; + break; + case UNIT_TEST_ERROR_TEST_FAILED: + SFailed++; + break; + case UNIT_TEST_PENDING: // Fall through... + case UNIT_TEST_RUNNING: // Fall through... + case UNIT_TEST_ERROR_PREREQ_NOT_MET: + SNotRun++; + break; + default: + break; } - Print( L"**********************************************************\= n" ); + Print (L"**********************************************************\= n"); } //End Test iteration =20 - Print( L"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n" = ); - Print( L"Suite Stats\n" ); - Print( L" Passed: %d (%d%%)\n", SPassed, (SPassed * 100)/(SPassed+SF= ailed+SNotRun) ); - Print( L" Failed: %d (%d%%)\n", SFailed, (SFailed * 100) / (SPassed = + SFailed + SNotRun) ); - Print( L" Not Run: %d (%d%%)\n", SNotRun, (SNotRun * 100) / (SPassed = + SFailed + SNotRun) ); - Print( L"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n" = ); + Print (L"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); + Print (L"Suite Stats\n"); + Print (L" Passed: %d (%d%%)\n", SPassed, (SPassed * 100) / (SPassed = + SFailed + SNotRun)); + Print (L" Failed: %d (%d%%)\n", SFailed, (SFailed * 100) / (SPassed = + SFailed + SNotRun)); + Print (L" Not Run: %d (%d%%)\n", SNotRun, (SNotRun * 100) / (SPassed = + SFailed + SNotRun)); + Print (L"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n"); =20 Passed +=3D SPassed; //add to global counters Failed +=3D SFailed; //add to global counters NotRun +=3D SNotRun; //add to global coutners }//End Suite iteration =20 - Print( L"=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n" ); - Print( L"Total Stats\n" ); - Print( L" Passed: %d (%d%%)\n", Passed, (Passed * 100) / (Passed + Fai= led + NotRun) ); - Print( L" Failed: %d (%d%%)\n", Failed, (Failed * 100) / (Passed + Fai= led + NotRun) ); - Print( L" Not Run: %d (%d%%)\n", NotRun, (NotRun * 100) / (Passed + Fai= led + NotRun) ); - Print( L"=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n" ); + Print (L"=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); + Print (L"Total Stats\n"); + Print (L" Passed: %d (%d%%)\n", Passed, (Passed * 100) / (Passed + Fai= led + NotRun)); + Print (L" Failed: %d (%d%%)\n", Failed, (Failed * 100) / (Passed + Fai= led + NotRun)); + Print (L" Not Run: %d (%d%%)\n", NotRun, (NotRun * 100) / (Passed + Fai= led + NotRun)); + Print (L"=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D\n"); =20 return EFI_SUCCESS; } diff --git a/MsUnitTestPkg/Sample/SampleUnitTestApp/SampleUnitTestApp.c b/M= sUnitTestPkg/Sample/SampleUnitTestApp/SampleUnitTestApp.c index 73af67a8e4..578a5b4270 100644 --- a/MsUnitTestPkg/Sample/SampleUnitTestApp/SampleUnitTestApp.c +++ b/MsUnitTestPkg/Sample/SampleUnitTestApp/SampleUnitTestApp.c @@ -1,27 +1,27 @@ -/** @file -- SampleUnitTestApp.c -This is a sample EFI Shell application to demostrate the usage of the Unit= Test Library. - -Copyright (c) 2016, Microsoft Corporation - -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notic= e, -this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS= " AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPL= IED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DIS= CLAIMED. -IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY D= IRECT, -INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUD= ING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF U= SE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEO= RY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLI= GENCE -OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +/** @file + This is a sample EFI Shell application to demostrate the usage of the Un= it Test Library. + + Copyright (c) 2016, Microsoft Corporation + + All rights reserved. + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are m= et: + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright not= ice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS = IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IM= PLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE D= ISCLAIMED. + IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY= DIRECT, + INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCL= UDING, + BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF= USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY TH= EORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEG= LIGENCE + OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 **/ =20 @@ -101,7 +101,7 @@ OnePlusOneShouldEqualTwo ( B =3D 1; C =3D A + B; =20 - UT_ASSERT_EQUAL(C, 2); + UT_ASSERT_EQUAL (C, 2); return UNIT_TEST_PASSED; } // OnePlusOneShouldEqualTwo() =20 @@ -114,10 +114,10 @@ GlobalBooleanShouldBeChangeable ( ) { mSampleGlobalTestBoolean =3D TRUE; - UT_ASSERT_TRUE(mSampleGlobalTestBoolean); + UT_ASSERT_TRUE (mSampleGlobalTestBoolean); =20 mSampleGlobalTestBoolean =3D FALSE; - UT_ASSERT_FALSE(mSampleGlobalTestBoolean); + UT_ASSERT_FALSE (mSampleGlobalTestBoolean); =20 return UNIT_TEST_PASSED; } // GlobalBooleanShouldBeChangeable() @@ -148,11 +148,11 @@ GlobalPointerShouldBeChangeable ( /** SampleUnitTestApp =20 - @param[in] ImageHandle The firmware allocated handle for the EFI image. - @param[in] SystemTable A pointer to the EFI System Table. + @param[in] ImageHandle The firmware allocated handle for the EFI image. + @param[in] SystemTable A pointer to the EFI System Table. =20 - @retval EFI_SUCCESS The entry point executed successfully. - @retval other Some error occured when executing this entry poi= nt. + @retval EFI_SUCCESS The entry point executed successfully. + @retval other Some error occured when executing this entry point. =20 **/ EFI_STATUS @@ -162,56 +162,52 @@ SampleUnitTestApp ( IN EFI_SYSTEM_TABLE *SystemTable ) { - EFI_STATUS Status; + EFI_STATUS Status; UNIT_TEST_FRAMEWORK *Fw =3D NULL; UNIT_TEST_SUITE *SimpleMathTests, *GlobalVarTests; =20 - DEBUG(( DEBUG_INFO, "%s v%s\n", UNIT_TEST_APP_NAME, UNIT_TEST_APP_VERSIO= N )); + DEBUG ((DEBUG_INFO, "%s v%s\n", UNIT_TEST_APP_NAME, UNIT_TEST_APP_VERSIO= N)); =20 // // Start setting up the test framework for running the tests. // - Status =3D InitUnitTestFramework( &Fw, UNIT_TEST_APP_NAME, UNIT_TEST_APP= _SHORT_NAME, UNIT_TEST_APP_VERSION ); - if (EFI_ERROR( Status )) - { - DEBUG((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status =3D %r\n"= , Status)); + Status =3D InitUnitTestFramework (&Fw, UNIT_TEST_APP_NAME, UNIT_TEST_APP= _SHORT_NAME, UNIT_TEST_APP_VERSION); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status =3D %r\n= ", Status)); goto EXIT; } =20 // // Populate the SimpleMathTests Unit Test Suite. // - Status =3D CreateUnitTestSuite( &SimpleMathTests, Fw, L"Simple Math Test= s", L"Sample.Math", NULL, NULL ); - if (EFI_ERROR( Status )) - { - DEBUG((DEBUG_ERROR, "Failed in CreateUnitTestSuite for SimpleMathTests= \n")); + Status =3D CreateUnitTestSuite (&SimpleMathTests, Fw, L"Simple Math Test= s", L"Sample.Math", NULL, NULL); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for SimpleMathTest= s\n")); Status =3D EFI_OUT_OF_RESOURCES; goto EXIT; } - AddTestCase( SimpleMathTests, L"Adding 1 to 1 should produce 2", L"Sampl= e.Math.Addition", OnePlusOneShouldEqualTwo, NULL, NULL, NULL ); + AddTestCase (SimpleMathTests, L"Adding 1 to 1 should produce 2", L"Sampl= e.Math.Addition", OnePlusOneShouldEqualTwo, NULL, NULL, NULL); =20 // // Populate the GlobalVarTests Unit Test Suite. // - Status =3D CreateUnitTestSuite( &GlobalVarTests, Fw, L"Global Variable T= ests", L"Sample.Globals", NULL, NULL ); - if (EFI_ERROR( Status )) - { - DEBUG((DEBUG_ERROR, "Failed in CreateUnitTestSuite for GlobalVarTests\= n")); + Status =3D CreateUnitTestSuite (&GlobalVarTests, Fw, L"Global Variable T= ests", L"Sample.Globals", NULL, NULL); + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for GlobalVarTests= \n")); Status =3D EFI_OUT_OF_RESOURCES; goto EXIT; } - AddTestCase( GlobalVarTests, L"You should be able to change a global BOO= LEAN", L"Sample.Globals.Boolean", GlobalBooleanShouldBeChangeable, NULL, NU= LL, NULL ); - AddTestCase( GlobalVarTests, L"You should be able to change a global poi= nter", L"Sample.Globals.Pointer", GlobalPointerShouldBeChangeable, MakeSure= ThatPointerIsNull, ClearThePointer, NULL ); + AddTestCase (GlobalVarTests, L"You should be able to change a global BOO= LEAN", L"Sample.Globals.Boolean", GlobalBooleanShouldBeChangeable, NULL, NU= LL, NULL); + AddTestCase (GlobalVarTests, L"You should be able to change a global poi= nter", L"Sample.Globals.Pointer", GlobalPointerShouldBeChangeable, MakeSure= ThatPointerIsNull, ClearThePointer, NULL); =20 // // Execute the tests. // - Status =3D RunAllTestSuites( Fw ); + Status =3D RunAllTestSuites (Fw); =20 EXIT: - if (Fw) - { - FreeUnitTestFramework( Fw ); + if (Fw) { + FreeUnitTestFramework (Fw); } =20 return Status; --=20 2.14.2.windows.3 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel