mirror of
https://github.com/intel/llvm.git
synced 2026-01-25 09:37:03 +08:00
[lldb/test] Allow indentation in inline tests
This makes it possible to use for loops (and other language constructs) in inline tests. Differential Revision: https://reviews.llvm.org/D112706
This commit is contained in:
@@ -3,6 +3,7 @@ from __future__ import absolute_import
|
||||
|
||||
# System modules
|
||||
import os
|
||||
import textwrap
|
||||
|
||||
# Third-party modules
|
||||
import io
|
||||
@@ -38,7 +39,7 @@ class CommandParser:
|
||||
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)
|
||||
@@ -68,6 +69,8 @@ class CommandParser:
|
||||
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:
|
||||
|
||||
33
lldb/test/API/test_utils/TestInlineTest.py
Normal file
33
lldb/test/API/test_utils/TestInlineTest.py
Normal file
@@ -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")])
|
||||
Reference in New Issue
Block a user