Skip to content

Commit

Permalink
tests: update logger
Browse files Browse the repository at this point in the history
  • Loading branch information
ctapmex committed Oct 19, 2024
1 parent 8c1d10c commit 938bfc2
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gdbinit
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
source icu_unicodestring_prettyprinter.py
53 changes: 53 additions & 0 deletions icu_unicodestring_prettyprinter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# To autoload this file into GDB, put the following line in ~/.gdbinit:
#
# python execfile("/path/to/icu_unicodestring_prettyprinter.py")
#
# You can also run that line of code in the GDB console without adding it to ~/.gdbinit.

from __future__ import print_function
from array import array
import re
import gdb

class UnicodeStringPrinter:
"""GDB pretty printer for ICU4C UnicodeString"""

def __init__(self, val):
self.val = val

def to_string(self):

fLengthAndFlags = self.val["fUnion"]["fFields"]["fLengthAndFlags"]

if fLengthAndFlags >= 0:
# Short length
length = fLengthAndFlags >> 5
else:
# Long length
length = self.val["fUnion"]["fFields"]["fLength"]

if (fLengthAndFlags & 2) != 0:
# Stack storage
if (fLengthAndFlags & 1) != 0:
return u"UnicodeString (BOGUS)"
stack = True
buffer = self.val["fUnion"]["fStackFields"]["fBuffer"]
else:
# Heap storage
stack = False
buffer = self.val["fUnion"]["fFields"]["fArray"]

content = array('B', [buffer[i] for i in range(length)]).tostring()
return u"UnicodeString (%d on %s): \"%s\"" % (
length,
u"stack" if stack else u"heap",
content)

unicode_string_re = re.compile("^icu_?\d*::UnicodeString$")

def lookup_type(val):
if unicode_string_re.match(str(val.type.unqualified().strip_typedefs())):
return UnicodeStringPrinter(val)
return None

gdb.pretty_printers.append(lookup_type)
5 changes: 5 additions & 0 deletions tests/unit/TestLogger.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ class TestLogger : public Logger
//std::cerr << message << '\n';
}

void flush() override
{

}

bool message_exists() const { return !log_messages.empty(); }
bool message_print(bool waiting_exist = false) const
{
Expand Down

0 comments on commit 938bfc2

Please sign in to comment.