[libcxx-commits] [libcxx] [libc++][z/OS] Disable porsion of formatter.char.funsigned-char.pass.cpp for no unicode (PR #94044)
Zibi Sarbinowski via libcxx-commits
libcxx-commits at lists.llvm.org
Fri May 31 13:18:14 PDT 2024
https://github.com/zibi2 created https://github.com/llvm/llvm-project/pull/94044
This PR carves out small portion of the test in subject to avoid the following failure when unicode is not available.
```
# | Assertion failure: result == expected .../formatter.char.funsigned-char.pass.cpp 56
# |
# | Format string ?}
# | Expected output '\x{80}'
# | Actual output '�'
```
This was traced down to different definition of `__code_point_view::__consume()` under macro_LIBCXX_HAS_NO_UNICODE which is called inside `__formatter::__escape()`. The `__consume()` returns `__ok` and code assumes that escaped sequence was already written but it is not., thus the failure. Here is the snippen code we fall into:
```
typename __unicode::__consume_result __result = __view.__consume();
if (__result.__status == __unicode::__consume_result::__ok) {
__escape = __formatter::__is_escaped_sequence_written(__str, __result.__code_point, __escape, __mark);
```
>From 981b391df554092bba750598d7e6162b0b74427b Mon Sep 17 00:00:00 2001
From: Zbigniew Sarbinowski <zibi at ca.ibm.com>
Date: Fri, 31 May 2024 19:57:58 +0000
Subject: [PATCH] Disable porsion of formatter.char.funsigned-char.pass.cpp for
no unicode
---
.../formatter.char.funsigned-char.pass.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char.funsigned-char.pass.cpp b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char.funsigned-char.pass.cpp
index 9c31ecad85eac..643efe00e3fc2 100644
--- a/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char.funsigned-char.pass.cpp
+++ b/libcxx/test/std/utilities/format/format.formatter/format.formatter.spec/formatter.char.funsigned-char.pass.cpp
@@ -71,16 +71,18 @@ void test() {
#if TEST_STD_VER > 20
test(STR(R"('\u{0}')"), STR("?}"), '\x00');
test(STR("'a'"), STR("?}"), 'a');
+# ifndef TEST_HAS_NO_UNICODE
if constexpr (std::same_as<CharT, char>) {
test(STR(R"('\x{80}')"), STR("?}"), '\x80');
test(STR(R"('\x{ff}')"), STR("?}"), '\xff');
}
-# ifndef TEST_HAS_NO_WIDE_CHARACTERS
+# ifndef TEST_HAS_NO_WIDE_CHARACTERS
else {
test(STR(R"('\u{80}')"), STR("?}"), '\x80');
test(STR("'\u00ff'"), STR("?}"), '\xff');
}
-# endif // TEST_HAS_NO_WIDE_CHARACTERS
+# endif // TEST_HAS_NO_WIDE_CHARACTERS
+# endif // TEST_HAS_NO_UNICODE
#endif // TEST_STD_VER > 20
test(STR("10000000"), STR("b}"), char(128));
More information about the libcxx-commits
mailing list