Skip to content

Commit

Permalink
[lldb/test] Allow indentation in inline tests
Browse files Browse the repository at this point in the history
This makes it possible to use for loops (and other language constructs)
in inline tests.

Differential Revision: https://reviews.llvm.org/D112706
  • Loading branch information
labath committed Oct 28, 2021
1 parent e8535fa commit 349295f
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
5 changes: 4 additions & 1 deletion lldb/packages/Python/lldbsuite/test/lldbinline.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

# System modules
import os
import textwrap

# Third-party modules
import io
Expand Down Expand Up @@ -38,7 +39,7 @@ def parse_one_command(self, line):
new_breakpoint = True

if len(parts) == 2:
command = parts[1].strip() # take off whitespace
command = parts[1].rstrip()
new_breakpoint = parts[0].strip() != ""

return (command, new_breakpoint)
Expand Down Expand Up @@ -68,6 +69,8 @@ def parse_source_files(self, source_files):
else:
current_breakpoint['command'] = current_breakpoint[
'command'] + "\n" + command
for bkpt in self.breakpoints:
bkpt['command'] = textwrap.dedent(bkpt['command'])

def set_breakpoints(self, target):
for breakpoint in self.breakpoints:
Expand Down
33 changes: 33 additions & 0 deletions lldb/test/API/test_utils/TestInlineTest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from lldbsuite.test.lldbinline import CommandParser
from lldbsuite.test.lldbtest import Base
import textwrap


class TestCommandParser(Base):

mydir = Base.compute_mydir(__file__)

def test_indentation(self):
"""Test indentation handling"""
filename = self.getBuildArtifact("test_file.cpp")
with open(filename, "w") as f:
f.write(textwrap.dedent("""\
int q;
int w; //% first break
int e;
int r; //% second break
//% continue second
//% continuing indented
//% not indented
int t; //% third break
"""))
p = CommandParser()
p.parse_source_files([filename])

def bkpt(line, cmd):
return {'file_name': filename, 'line_number': line, 'command': cmd}
self.assertEqual(
p.breakpoints, [
bkpt(2, 'first break'),
bkpt(4, 'second break\ncontinue second\n continuing indented\nnot indented'),
bkpt(8, "third break")])

0 comments on commit 349295f

Please sign in to comment.