1*051a5ae9SMed Ismail Bennani"""
2*051a5ae9SMed Ismail BennaniTest trimming long progress report in tiny terminal windows
3*051a5ae9SMed Ismail Bennani"""
4*051a5ae9SMed Ismail Bennani
5*051a5ae9SMed Ismail Bennaniimport os
6*051a5ae9SMed Ismail Bennaniimport pexpect
7*051a5ae9SMed Ismail Bennaniimport tempfile
8*051a5ae9SMed Ismail Bennaniimport re
9*051a5ae9SMed Ismail Bennani
10*051a5ae9SMed Ismail Bennaniimport lldb
11*051a5ae9SMed Ismail Bennanifrom lldbsuite.test.decorators import *
12*051a5ae9SMed Ismail Bennanifrom lldbsuite.test.lldbtest import *
13*051a5ae9SMed Ismail Bennanifrom lldbsuite.test.lldbpexpect import PExpectTest
14*051a5ae9SMed Ismail Bennani
15*051a5ae9SMed Ismail Bennaniclass TestTrimmedProgressReporting(PExpectTest):
16*051a5ae9SMed Ismail Bennani
17*051a5ae9SMed Ismail Bennani    def do_test(self, term_width, pattern_list):
18*051a5ae9SMed Ismail Bennani        self.build()
19*051a5ae9SMed Ismail Bennani        # Start with a small window
20*051a5ae9SMed Ismail Bennani        self.launch(use_colors=True)
21*051a5ae9SMed Ismail Bennani        self.expect("set set show-progress true")
22*051a5ae9SMed Ismail Bennani        self.expect("set show show-progress", substrs=["show-progress (boolean) = true"])
23*051a5ae9SMed Ismail Bennani        self.expect("set set term-width " + str(term_width))
24*051a5ae9SMed Ismail Bennani        self.expect("set show term-width", substrs=["term-width (int) = " + str(term_width)])
25*051a5ae9SMed Ismail Bennani
26*051a5ae9SMed Ismail Bennani        self.child.send("file " + self.getBuildArtifact("a.out") + "\n")
27*051a5ae9SMed Ismail Bennani        self.child.expect(pattern_list)
28*051a5ae9SMed Ismail Bennani
29*051a5ae9SMed Ismail Bennani
30*051a5ae9SMed Ismail Bennani    # PExpect uses many timeouts internally and doesn't play well
31*051a5ae9SMed Ismail Bennani    # under ASAN on a loaded machine..
32*051a5ae9SMed Ismail Bennani    @skipIfAsan
33*051a5ae9SMed Ismail Bennani    @skipUnlessDarwin
34*051a5ae9SMed Ismail Bennani    @skipIfEditlineSupportMissing
35*051a5ae9SMed Ismail Bennani    def test_trimmed_progress_message(self):
36*051a5ae9SMed Ismail Bennani        self.do_test(19, ['Locating externa...',
37*051a5ae9SMed Ismail Bennani                          'Loading Apple DW...',
38*051a5ae9SMed Ismail Bennani                          'Parsing symbol t...'])
39*051a5ae9SMed Ismail Bennani
40*051a5ae9SMed Ismail Bennani    # PExpect uses many timeouts internally and doesn't play well
41*051a5ae9SMed Ismail Bennani    # under ASAN on a loaded machine..
42*051a5ae9SMed Ismail Bennani    @skipIfAsan
43*051a5ae9SMed Ismail Bennani    @skipUnlessDarwin
44*051a5ae9SMed Ismail Bennani    @skipIfEditlineSupportMissing
45*051a5ae9SMed Ismail Bennani    def test_long_progress_message(self):
46*051a5ae9SMed Ismail Bennani        self.do_test(80, ['Locating external symbol file for a.out...',
47*051a5ae9SMed Ismail Bennani                          'Loading Apple DWARF index for a.out...',
48*051a5ae9SMed Ismail Bennani                          'Parsing symbol table for dyld...'])
49