diff --git a/lldb/packages/Python/lldbsuite/test/lldbpexpect.py b/lldb/packages/Python/lldbsuite/test/lldbpexpect.py --- a/lldb/packages/Python/lldbsuite/test/lldbpexpect.py +++ b/lldb/packages/Python/lldbsuite/test/lldbpexpect.py @@ -54,6 +54,10 @@ def expect(self, cmd, substrs=None): self.assertNotIn('\n', cmd) self.child.sendline(cmd) + # If 'substrs' is a string then this code would just check that every + # character of the string is in the output. + assert not isinstance(substrs, six.string_types), \ + "substrs must be a collection of strings" if substrs is not None: for s in substrs: self.child.expect_exact(s) diff --git a/lldb/test/API/test_utils/TestPExpectTest.py b/lldb/test/API/test_utils/TestPExpectTest.py new file mode 100644 --- /dev/null +++ b/lldb/test/API/test_utils/TestPExpectTest.py @@ -0,0 +1,29 @@ +""" +Test the PExpectTest test functions. +""" + + +import lldb +import lldbsuite.test.lldbutil as lldbutil +from lldbsuite.test.lldbtest import * +from textwrap import dedent + + +class TestPExpectTestCase(TestBase): + + mydir = TestBase.compute_mydir(__file__) + NO_DEBUG_INFO_TESTCASE = True + + def assert_expect_fails_with(self, cmd, expect_args, expected_msg): + try: + self.expect(cmd, **expect_args) + except AssertionError as e: + self.assertIn(expected_msg, str(e)) + else: + self.fail("expect should have raised AssertionError!") + + def test_expect(self): + # Test that passing a string to the 'substrs' argument is rejected. + self.assert_expect_fails_with("settings list prompt", + dict(substrs="some substring"), + "substrs must be a collection of strings")