From: Jiaying Song <[email protected]>

Added a new configure option `--enable-ptest-automake-format` to enable 
Automake-style ptest output format.

Signed-off-by: Jiaying Song <[email protected]>
---
 ...utput-compatible-with-Automake-forma.patch | 70 +++++++++++++++----
 meta/recipes-support/icu/icu_77-1.bb          |  2 +-
 2 files changed, 59 insertions(+), 13 deletions(-)

diff --git 
a/meta/recipes-support/icu/icu/0001-Make-ICU-ptest-output-compatible-with-Automake-forma.patch
 
b/meta/recipes-support/icu/icu/0001-Make-ICU-ptest-output-compatible-with-Automake-forma.patch
index a3d9b46835..8fbc209097 100644
--- 
a/meta/recipes-support/icu/icu/0001-Make-ICU-ptest-output-compatible-with-Automake-forma.patch
+++ 
b/meta/recipes-support/icu/icu/0001-Make-ICU-ptest-output-compatible-with-Automake-forma.patch
@@ -1,49 +1,95 @@
-From f56e295e936c6c6d9c7219ef649697891cd11382 Mon Sep 17 00:00:00 2001
+From e92a2b82cbbfa499ba210eca50cb6ca0b5c786a5 Mon Sep 17 00:00:00 2001
 From: Jiaying Song <[email protected]>
-Date: Mon, 3 Nov 2025 11:34:06 +0800
+Date: Wed, 12 Nov 2025 11:35:43 +0800
 Subject: [PATCH] Make ICU ptest output compatible with Automake format
 
-Change test result format to PASS/FAIL for Automake compatibility
+Change test result format to PASS/FAIL for Automake compatibility, controlled 
by the --enable-ptest-automake-format option.
 
 Upstream-Status: Submitted [https://github.com/unicode-org/icu/pull/3764]
 
 Signed-off-by: Jiaying Song <[email protected]>
 ---
- test/intltest/intltest.cpp | 4 ++--
- tools/ctestfw/ctest.c      | 3 ++-
- 2 files changed, 4 insertions(+), 3 deletions(-)
+ configure.ac               | 17 +++++++++++++++++
+ test/intltest/intltest.cpp | 10 +++++++++-
+ tools/ctestfw/ctest.c      |  9 ++++++++-
+ 3 files changed, 34 insertions(+), 2 deletions(-)
 
+diff --git a/configure.ac b/configure.ac
+index da4f170..37872d4 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1165,6 +1165,21 @@ If set, it will REPLACE any automatic list of 
libraries.],
+               *) AC_MSG_ERROR(bad value ${enableval} for --enable-samples) ;;
+               esac],
+       samples=true)
++
++# Enable Automake-compatible ptest output format (for Yocto/OpenEmbedded)
++AC_ARG_ENABLE([ptest-automake-format],
++    AS_HELP_STRING([--enable-ptest-automake-format],
++                   [Emit ptest output in Automake format (PASS:/FAIL:) for 
Yocto ptest]),
++    [
++        if test "x$enableval" = "xyes"; then
++            UCONFIG_CPPFLAGS="${UCONFIG_CPPFLAGS} -DU_PTEST_AUTOMAKE_FORMAT=1"
++            AC_MSG_RESULT([enabling Automake ptest format])
++        else
++            AC_MSG_RESULT([disabling Automake ptest format])
++        fi
++    ],
++    [enable_ptest_automake_format=no])
++
+ ICU_CONDITIONAL(SAMPLES, test "$samples" = true)
+ 
+ ICUDATA_CHAR=$U_ENDIAN_CHAR
+@@ -1428,3 +1443,5 @@ then
+ fi
+ 
+ $as_unset _CXX_CXXSUFFIX
++
++
 diff --git a/test/intltest/intltest.cpp b/test/intltest/intltest.cpp
-index 33829b0..07071ea 100644
+index 33829b0..6dfc8cb 100644
 --- a/test/intltest/intltest.cpp
 +++ b/test/intltest/intltest.cpp
-@@ -830,11 +830,11 @@ UBool IntlTest::runTestLoop( char* testname, char* par, 
char *baseName )
+@@ -830,11 +830,19 @@ UBool IntlTest::runTestLoop( char* testname, char* par, 
char *baseName )
              saveBaseLoc[0]=0; /* reset path */
              
              if (lastErrorCount == errorCount) {
 -                snprintf( msg, sizeof(msg),  "   } OK:   %s ", name );
++            #ifdef U_PTEST_AUTOMAKE_FORMAT
 +                snprintf(msg, sizeof(msg), "PASS: %s\n   }", name);
++            #else
++                snprintf(msg, sizeof(msg),  "   } OK:   %s ", name );
++            #endif
                  if(!no_time) 
str_timeDelta(msg+strlen(msg),timeStop-timeStart);
                  lastTestFailed = false;
              }else{
--                snprintf(msg, sizeof(msg), "   } ERRORS (%li) in %s", 
static_cast<long>(errorCount - lastErrorCount), name);
++            #ifdef U_PTEST_AUTOMAKE_FORMAT
 +                snprintf(msg, sizeof(msg), "FAIL: %s\n   } (ERRORS: %li)", 
name, static_cast<long>(errorCount - lastErrorCount));
++            #else
+                 snprintf(msg, sizeof(msg), "   } ERRORS (%li) in %s", 
static_cast<long>(errorCount - lastErrorCount), name);
++            #endif
                  if(!no_time) 
str_timeDelta(msg+strlen(msg),timeStop-timeStart);
  
                  for(int i=0;i<LL_indentlevel;i++) {
 diff --git a/tools/ctestfw/ctest.c b/tools/ctestfw/ctest.c
-index 7634526..727b164 100644
+index 7634526..1f73650 100644
 --- a/tools/ctestfw/ctest.c
 +++ b/tools/ctestfw/ctest.c
-@@ -413,9 +413,10 @@ static void iterateTestsWithLevel ( const TestNode* root,
+@@ -413,9 +413,16 @@ static void iterateTestsWithLevel ( const TestNode* root,
          ctest_xml_testcase(pathToFunction, pathToFunction, timeSeconds, 
(myERROR_COUNT!=ERROR_COUNT)?"error":NULL);
  
          if (myERROR_COUNT != ERROR_COUNT) {
 -          log_testinfo_i("} ---[%d ERRORS in %s] ", ERROR_COUNT - 
myERROR_COUNT, pathToFunction);
-+          log_testinfo_i("\nFAIL: %s\n} ---[ERRORS: %d]", root->name, 
ERROR_COUNT - myERROR_COUNT);
++        #ifdef U_PTEST_AUTOMAKE_FORMAT
++          log_testinfo_i("\nFAIL: %s\n} ---[ERRORS: %d]", 
root->name,ERROR_COUNT - myERROR_COUNT);
++        #else
++          log_testinfo_i("} ---[%d ERRORS in %s] ", ERROR_COUNT - 
myERROR_COUNT,pathToFunction);
++        #endif
            strcpy(ERROR_LOG[ERRONEOUS_FUNCTION_COUNT++], pathToFunction);
          } else {
++        #ifdef U_PTEST_AUTOMAKE_FORMAT
 +          log_testinfo_i("\nPASS: %s\n", root->name);
++        #endif
            if(!ON_LINE) { /* had some output */
              int spaces = FLAG_INDENT-(depth-1);
              log_testinfo_i("} %*s[OK] ", spaces, "---");
diff --git a/meta/recipes-support/icu/icu_77-1.bb 
b/meta/recipes-support/icu/icu_77-1.bb
index 370c14af81..17fa4a4db2 100644
--- a/meta/recipes-support/icu/icu_77-1.bb
+++ b/meta/recipes-support/icu/icu_77-1.bb
@@ -23,7 +23,7 @@ inherit autotools pkgconfig github-releases
 EXTRA_OECONF = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} 
--disable-icu-config ac_cv_path_install='install -c'"
 EXTRA_OECONF:class-native = "--disable-icu-config ac_cv_path_install='install 
-c'"
 EXTRA_OECONF:class-nativesdk = "--with-cross-build=${STAGING_ICU_DIR_NATIVE} 
--disable-icu-config ac_cv_path_install='install -c'"
-
+EXTRA_OECONF:append:class-target = " --enable-ptest-automake-format"
 EXTRA_OECONF:append:class-target = 
"${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', ' 
--with-data-packaging=archive', '', d)}"
 TARGET_CXXFLAGS:append = "${@oe.utils.conditional('SITEINFO_ENDIANNESS', 'be', 
' -DICU_DATA_DIR=\\""${datadir}/${BPN}/${@icu_install_folder(d)}\\""', '', d)}"
 
-- 
2.34.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#226287): 
https://lists.openembedded.org/g/openembedded-core/message/226287
Mute This Topic: https://lists.openembedded.org/mt/116290305/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to