xref: /llvm-project/lldb/test/API/functionalities/progress_reporting/TestTrimmedProgressReporting.py (revision 503075e4d4a9c1b3754b21ee9ec41f176e54fd83)
1051a5ae9SMed Ismail Bennani"""
2051a5ae9SMed Ismail BennaniTest trimming long progress report in tiny terminal windows
3051a5ae9SMed Ismail Bennani"""
4051a5ae9SMed Ismail Bennani
5051a5ae9SMed Ismail Bennaniimport os
6051a5ae9SMed Ismail Bennaniimport tempfile
7051a5ae9SMed Ismail Bennaniimport re
8051a5ae9SMed Ismail Bennani
9051a5ae9SMed Ismail Bennaniimport lldb
10051a5ae9SMed Ismail Bennanifrom lldbsuite.test.decorators import *
11051a5ae9SMed Ismail Bennanifrom lldbsuite.test.lldbtest import *
12051a5ae9SMed Ismail Bennanifrom lldbsuite.test.lldbpexpect import PExpectTest
13051a5ae9SMed Ismail Bennani
14051a5ae9SMed Ismail Bennani
152238dcc3SJonas Devlieghereclass TestTrimmedProgressReporting(PExpectTest):
16051a5ae9SMed Ismail Bennani    def do_test(self, term_width, pattern_list):
17051a5ae9SMed Ismail Bennani        self.build()
18051a5ae9SMed Ismail Bennani        # Start with a small window
19051a5ae9SMed Ismail Bennani        self.launch(use_colors=True)
20051a5ae9SMed Ismail Bennani        self.expect("set set show-progress true")
212238dcc3SJonas Devlieghere        self.expect(
222238dcc3SJonas Devlieghere            "set show show-progress", substrs=["show-progress (boolean) = true"]
232238dcc3SJonas Devlieghere        )
24051a5ae9SMed Ismail Bennani        self.expect("set set term-width " + str(term_width))
252238dcc3SJonas Devlieghere        self.expect(
26*afd46902SJonas Devlieghere            "set show term-width",
27*afd46902SJonas Devlieghere            substrs=["term-width (unsigned) = " + str(term_width)],
282238dcc3SJonas Devlieghere        )
29051a5ae9SMed Ismail Bennani
30051a5ae9SMed Ismail Bennani        self.child.send("file " + self.getBuildArtifact("a.out") + "\n")
31051a5ae9SMed Ismail Bennani        self.child.expect(pattern_list)
32051a5ae9SMed Ismail Bennani
33051a5ae9SMed Ismail Bennani    # PExpect uses many timeouts internally and doesn't play well
34051a5ae9SMed Ismail Bennani    # under ASAN on a loaded machine..
35051a5ae9SMed Ismail Bennani    @skipIfAsan
36051a5ae9SMed Ismail Bennani    @skipIfEditlineSupportMissing
37051a5ae9SMed Ismail Bennani    def test_trimmed_progress_message(self):
388947469eSChelsea Cassanova        self.do_test(19, ["Locating e...", "Parsing sy..."])
39051a5ae9SMed Ismail Bennani
40051a5ae9SMed Ismail Bennani    # PExpect uses many timeouts internally and doesn't play well
41051a5ae9SMed Ismail Bennani    # under ASAN on a loaded machine..
42051a5ae9SMed Ismail Bennani    @skipIfAsan
43051a5ae9SMed Ismail Bennani    @skipIfEditlineSupportMissing
44051a5ae9SMed Ismail Bennani    def test_long_progress_message(self):
452238dcc3SJonas Devlieghere        self.do_test(
462238dcc3SJonas Devlieghere            80,
472238dcc3SJonas Devlieghere            [
488947469eSChelsea Cassanova                "Locating external symbol file",
498947469eSChelsea Cassanova                "Parsing symbol table",
502238dcc3SJonas Devlieghere            ],
512238dcc3SJonas Devlieghere        )
52