Skip to content

Commit

Permalink
[dexter] Add keyword argument 'on_line' to DexLabel
Browse files Browse the repository at this point in the history
Add optional keyword argument 'on_line' to DexLabel to label the specifed line
instead of the line the command is found on.

This will be helpful when used alongside DexDeclareFile (D99651).

Reviewed By: TWeaver

Differential Revision: https://reviews.llvm.org/D101055
  • Loading branch information
OCHyams committed Apr 23, 2021
1 parent 2fdedf9 commit 487ab53
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 5 deletions.
9 changes: 6 additions & 3 deletions debuginfo-tests/dexter/Commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -205,14 +205,17 @@ large test cases that would normally take much longer to complete.

----
## DexLabel
DexLabel(name)
DexLabel(name [, **on_line])

Args:
name (str): A unique name for this line.

Keyword args:
on_line (int): Specify a line number to label.

### Description
Name the line this command is found on. Line names can be referenced by other
commands expecting line number arguments.
Name the line this command is found on or 'on_line' if it is provided. Line
names can be referenced by other commands expecting line number arguments.
For example, `DexExpectWatchValues(..., on_line='my_line_name')`.

### Heuristic
Expand Down
15 changes: 13 additions & 2 deletions debuginfo-tests/dexter/dex/command/commands/DexLabel.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,27 @@


class DexLabel(CommandBase):
def __init__(self, label):
def __init__(self, label, **kwargs):

if not isinstance(label, str):
raise TypeError('invalid argument type')

try:
self.on_line = kwargs.pop('on_line')
except KeyError:
# We cannot use self.lineno because it hasn't been set yet.
pass
if kwargs:
raise TypeError(f'unexpected named args: {", ".join(kwargs)}')

self._label = label
super(DexLabel, self).__init__()

def get_line(self):
return getattr(self, 'on_line', self.lineno)

def get_as_pair(self):
return (self._label, self.lineno)
return (self._label, self.get_line())

@staticmethod
def get_name():
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// Purpose:
// Check that bad keyword args in \DexLabel are reported.
// Use --binary switch to trick dexter into skipping the build step.
//
// RUN: not %dexter_base test --binary %s --debugger 'lldb' -- %s | FileCheck %s
// CHECK: parser error:{{.*}}err_label_kwarg.cpp(8): unexpected named args: bad_arg

// DexLabel('test', bad_arg=0)
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Purpose:
// Check that the optional keyword argument 'on_line' makes a \DexLabel label
// that line instead of the line the command is found on.
//
// RUN: %dexter_regression_test -- %s | FileCheck %s
// CHECK: label_another_line.cpp: (1.0000)

int main() {
int result = 0;
return result;
}

// DexLabel('test', on_line=10)
// DexExpectWatchValue('result', '0', on_line='test')

0 comments on commit 487ab53

Please sign in to comment.