Added test cases for invalid surrogates sequences.

While these are disabled now because the current implementation does not correctly handle them, this is a starting point for a future fix.

PiperOrigin-RevId: 756431459
Change-Id: I9c498ce1a2e12baa32a46bcdc56e9354feee305a
This commit is contained in:
Omer Mor
2025-05-08 13:13:32 -07:00
committed by Copybara-Service
parent a4950fba03
commit 0710718aca

View File

@@ -1009,7 +1009,7 @@ TEST(WideStringLogFormatTest, Literal) {
#undef ABSL_LOG_INTERNAL_WIDE_LITERAL
#undef ABSL_LOG_INTERNAL_UTF8_LITERAL
TYPED_TEST(WideStringLogFormatTest, InvalidCharactersAreReplaced) {
TYPED_TEST(WideStringLogFormatTest, IsolatedLowSurrogatesAreReplaced) {
absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
TypeParam value = L"AAA \xDC00 BBB";
@@ -1024,6 +1024,74 @@ TYPED_TEST(WideStringLogFormatTest, InvalidCharactersAreReplaced) {
LOG(INFO) << value;
}
TYPED_TEST(WideStringLogFormatTest,
DISABLED_IsolatedHighSurrogatesAreReplaced) {
absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
TypeParam value = L"AAA \xD800 BBB";
// NOLINTNEXTLINE(readability/utf8)
absl::string_view utf8_value = "AAA <20> BBB";
// Currently, this is "AAA \xF0\x90 BBB".
EXPECT_CALL(test_sink, Send(AllOf(TextMessage(Eq(utf8_value)),
ENCODED_MESSAGE(HasValues(ElementsAre(
ValueWithStr(Eq(utf8_value))))))));
test_sink.StartCapturingLogs();
LOG(INFO) << value;
}
TYPED_TEST(WideStringLogFormatTest,
DISABLED_ConsecutiveHighSurrogatesAreReplaced) {
absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
TypeParam value = L"AAA \xD800\xD800 BBB";
// NOLINTNEXTLINE(readability/utf8)
absl::string_view utf8_value = "AAA <20><> BBB";
// Currently, this is "AAA \xF0\x90\xF0\x90 BBB".
EXPECT_CALL(test_sink, Send(AllOf(TextMessage(Eq(utf8_value)),
ENCODED_MESSAGE(HasValues(ElementsAre(
ValueWithStr(Eq(utf8_value))))))));
test_sink.StartCapturingLogs();
LOG(INFO) << value;
}
TYPED_TEST(WideStringLogFormatTest,
DISABLED_HighHighLowSurrogateSequencesAreReplaced) {
absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
TypeParam value = L"AAA \xD800\xD800\xDC00 BBB";
// NOLINTNEXTLINE(readability/utf8)
absl::string_view utf8_value = "AAA <20>𐀀 BBB";
// Currently, this is "AAA \xF0\x90𐀀 BBB".
EXPECT_CALL(test_sink, Send(AllOf(TextMessage(Eq(utf8_value)),
ENCODED_MESSAGE(HasValues(ElementsAre(
ValueWithStr(Eq(utf8_value))))))));
test_sink.StartCapturingLogs();
LOG(INFO) << value;
}
TYPED_TEST(WideStringLogFormatTest,
DISABLED_TrailingHighSurrogatesAreReplaced) {
absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);
TypeParam value = L"AAA \xD800";
// NOLINTNEXTLINE(readability/utf8)
absl::string_view utf8_value = "AAA <20>";
// Currently, this is "AAA \xF0\x90".
EXPECT_CALL(test_sink, Send(AllOf(TextMessage(Eq(utf8_value)),
ENCODED_MESSAGE(HasValues(ElementsAre(
ValueWithStr(Eq(utf8_value))))))));
test_sink.StartCapturingLogs();
LOG(INFO) << value;
}
TYPED_TEST(WideStringLogFormatTest, EmptyWideString) {
absl::ScopedMockLog test_sink(absl::MockLogDefault::kDisallowUnexpected);