From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com []) by mx.groups.io with SMTP id smtpd.web11.4378.1594267536731145998 for ; Wed, 08 Jul 2020 21:05:39 -0700 Authentication-Results: mx.groups.io; dkim=missing; spf=fail (domain: intel.com, ip: , mailfrom: michael.d.kinney@intel.com) IronPort-SDR: 72olhMYgJbMFt+OyqCItM0fOh9+EO2EWuJceH0fQiNdfLnsq3n2RODDk0cVlswWgizODuWnCwR lBy4gmEPB+yw== X-IronPort-AV: E=McAfee;i="6000,8403,9676"; a="212851108" X-IronPort-AV: E=Sophos;i="5.75,330,1589266800"; d="scan'208";a="212851108" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jul 2020 21:05:39 -0700 IronPort-SDR: ZLtppSh0GJQ7mCFHwkAcDKso1prlVrrk/UFwvYb+Dst4z5o75rvhCS5QuhenMuKPqoBVOVqPVZ 0lW549ZSLpKw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,330,1589266800"; d="scan'208";a="280163942" Received: from mdkinney-mobl2.amr.corp.intel.com ([10.255.230.8]) by orsmga003.jf.intel.com with ESMTP; 08 Jul 2020 21:05:38 -0700 From: "Michael D Kinney" To: devel@edk2.groups.io Cc: Sean Brogan , Bret Barkelew , Jiewen Yao Subject: [Patch v2 10/16] UnitTestFrameworkPkg/UnitTestLib: Move print log into cleanup Date: Wed, 8 Jul 2020 21:05:15 -0700 Message-Id: <20200709040521.3748-11-michael.d.kinney@intel.com> X-Mailer: git-send-email 2.21.0.windows.1 In-Reply-To: <20200709040521.3748-1-michael.d.kinney@intel.com> References: <20200709040521.3748-1-michael.d.kinney@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2805 If a unit test fails with an exception or an assert, then the CmockaUnitTestFunctionRunner() is terminated and the logic that follows the invocation of the unit test is skipped. This currently skips the logic that prints log messages. Move the print of log messages to the end of the function CmockaUnitTestTeardownFunctionRunner() that is guaranteed to be executed when a unit test completes normally or is terminated with an exception or an assert. Cc: Sean Brogan Cc: Bret Barkelew Cc: Jiewen Yao Signed-off-by: Michael D Kinney --- .../Library/UnitTestLib/RunTestsCmocka.c | 33 +++++++++---------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/UnitTestFrameworkPkg/Library/UnitTestLib/RunTestsCmocka.c b/UnitTestFrameworkPkg/Library/UnitTestLib/RunTestsCmocka.c index fb81cc9658..96aa4d9b13 100644 --- a/UnitTestFrameworkPkg/Library/UnitTestLib/RunTestsCmocka.c +++ b/UnitTestFrameworkPkg/Library/UnitTestLib/RunTestsCmocka.c @@ -53,21 +53,9 @@ CmockaUnitTestFunctionRunner ( UnitTest->Result = UNIT_TEST_SKIPPED; } else { UnitTest->Result = UNIT_TEST_RUNNING; - Framework->CurrentTest = UnitTest; UnitTest->Result = UnitTest->RunTest (UnitTest->Context); Framework->CurrentTest = NULL; - - // Print out the log messages - This is a partial solution as it - // does not get the log into the XML. Need cmocka changes to support - // stdout and stderr in their xml format - // - if (UnitTest->Log != NULL) { - print_message("UnitTest: %s - %s\n", UnitTest->Name, UnitTest->Description); - print_message("Log Output Start\n"); - print_message("%s", UnitTest->Log); - print_message("Log Output End\n"); - } } } @@ -112,13 +100,24 @@ CmockaUnitTestTeardownFunctionRunner ( Suite = (UNIT_TEST_SUITE *)(UnitTest->ParentSuite); Framework = (UNIT_TEST_FRAMEWORK *)(Suite->ParentFramework); - if (UnitTest->CleanUp == NULL) { - return 0; + if (UnitTest->CleanUp != NULL) { + Framework->CurrentTest = UnitTest; + UnitTest->CleanUp (UnitTest->Context); + Framework->CurrentTest = NULL; + } + + // + // Print out the log messages - This is a partial solution as it + // does not get the log into the XML. Need cmocka changes to support + // stdout and stderr in their xml format + // + if (UnitTest->Log != NULL) { + print_message("UnitTest: %s - %s\n", UnitTest->Name, UnitTest->Description); + print_message("Log Output Start\n"); + print_message("%s", UnitTest->Log); + print_message("Log Output End\n"); } - Framework->CurrentTest = UnitTest; - UnitTest->CleanUp (UnitTest->Context); - Framework->CurrentTest = NULL; // // Return 0 for success. Non-zero for error. // -- 2.21.0.windows.1