Files
clang-p2996/lldb/test/API/functionalities/progress_reporting/TestTrimmedProgressReporting.py
Med Ismail Bennani 051a5ae998 [lldb/Core] Fix "sticky" long progress messages
When the terminal window is too small, lldb would wrap progress messages
accross multiple lines which would break the progress event handling
code that is supposed to clear the message once the progress is completed.

This causes the progress message to remain on the screen, sometimes partially,
which can be confusing for the user.

To fix this issue, this patch trims the progress message to the terminal
width taking into account the progress counter leading the message for
finite progress events and also the trailing `...`.

rdar://91993836

Differential Revision: https://reviews.llvm.org/D124785

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
2022-05-18 18:22:46 -07:00

51 lines
1.7 KiB
Python

"""
Test trimming long progress report in tiny terminal windows
"""
import os
import pexpect
import tempfile
import re
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test.lldbpexpect import PExpectTest
class TestTrimmedProgressReporting(PExpectTest):
mydir = TestBase.compute_mydir(__file__)
def do_test(self, term_width, pattern_list):
self.build()
# Start with a small window
self.launch(use_colors=True)
self.expect("set set show-progress true")
self.expect("set show show-progress", substrs=["show-progress (boolean) = true"])
self.expect("set set term-width " + str(term_width))
self.expect("set show term-width", substrs=["term-width (int) = " + str(term_width)])
self.child.send("file " + self.getBuildArtifact("a.out") + "\n")
self.child.expect(pattern_list)
# PExpect uses many timeouts internally and doesn't play well
# under ASAN on a loaded machine..
@skipIfAsan
@skipUnlessDarwin
@skipIfEditlineSupportMissing
def test_trimmed_progress_message(self):
self.do_test(19, ['Locating externa...',
'Loading Apple DW...',
'Parsing symbol t...'])
# PExpect uses many timeouts internally and doesn't play well
# under ASAN on a loaded machine..
@skipIfAsan
@skipUnlessDarwin
@skipIfEditlineSupportMissing
def test_long_progress_message(self):
self.do_test(80, ['Locating external symbol file for a.out...',
'Loading Apple DWARF index for a.out...',
'Parsing symbol table for dyld...'])