teak-llvm/lldb/packages/Python/lldbsuite/test/lang/c/strings/TestCStrings.py
Stella Stamenova 0ab990345a [lldbsuite] Un-xfail tests on Windows that are now passing (pt.2)
This is a set of tests that were all marked as failing becuse of pr21765. The bug is not fixed (as in more of the tests that were marked this way are failing), but this set is passing. It is possible that some of them are false positives, but there's a large number of unexpectedly passing tests on Windows, so I am doing a bulk un-xfail to get the buildbot to green.

llvm-svn: 349668
2018-12-19 19:10:25 +00:00

57 lines
1.8 KiB
Python

"""
Tests that C strings work as expected in expressions
"""
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class CStringsTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
def test_with_run_command(self):
"""Tests that C strings work as expected in expressions"""
self.build()
self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET)
line = line_number('main.c', '// breakpoint 1')
lldbutil.run_break_set_by_file_and_line(
self, "main.c", line, num_expected_locations=1, loc_exact=True)
self.runCmd("process launch", RUN_SUCCEEDED)
self.expect("expression -- a[2]",
patterns=["\((const )?char\) \$0 = 'c'"])
self.expect("expression -- z[2]",
startstr="(const char) $1 = 'x'")
# On Linux, the expression below will test GNU indirect function calls.
self.expect("expression -- (int)strlen(\"hello\")",
startstr="(int) $2 = 5")
self.expect("expression -- \"world\"[2]",
startstr="(const char) $3 = 'r'")
self.expect("expression -- \"\"[0]",
startstr="(const char) $4 = '\\0'")
self.expect("expr --raw -- \"hello\"",
substrs=['[0] = \'h\'',
'[5] = \'\\0\''])
self.expect("p \"hello\"",
substrs=['[6]) $', 'hello'])
self.expect("p (char*)\"hello\"",
substrs=['(char *) $', ' = 0x',
'hello'])
self.expect("p (int)strlen(\"\")",
substrs=['(int) $', ' = 0'])
self.expect("expression !z",
substrs=['false'])