We do not run `pexpect` based tests on Windows, but there are still cases where those tests run `import pexpect` outside of the scope where the test is skipped. By moving the import statement to a different scope, those tests can run even when `pexpect` truly isn't installed. Tangentially related: TestSTTYBeforeAndAfter.py is using a manual `@expectedFailureAll` for windows instead of the common `@skipIfWindows`. If `pexepect` is generally expected to not be available, we should not bother running the test at all.
52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
"""
|
|
Test trimming long progress report in tiny terminal windows
|
|
"""
|
|
|
|
import os
|
|
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):
|
|
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 (unsigned) = " + 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
|
|
@skipIfEditlineSupportMissing
|
|
def test_trimmed_progress_message(self):
|
|
self.do_test(19, ["Locating e...", "Parsing sy..."])
|
|
|
|
# PExpect uses many timeouts internally and doesn't play well
|
|
# under ASAN on a loaded machine..
|
|
@skipIfAsan
|
|
@skipIfEditlineSupportMissing
|
|
def test_long_progress_message(self):
|
|
self.do_test(
|
|
80,
|
|
[
|
|
"Locating external symbol file",
|
|
"Parsing symbol table",
|
|
],
|
|
)
|