xref: /llvm-project/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexLimitSteps.py (revision f98ee40f4b5d7474fc67e82824bf6abbaedb7b1c)
11364750dSJames Henderson# DExTer : Debugging Experience Tester
21364750dSJames Henderson# ~~~~~~   ~         ~~         ~   ~~
31364750dSJames Henderson#
41364750dSJames Henderson# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
51364750dSJames Henderson# See https://llvm.org/LICENSE.txt for license information.
61364750dSJames Henderson# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
71364750dSJames Henderson"""A Command that enables test writers to specify a limited number of break
81364750dSJames Hendersonpoints using an start condition and range.
91364750dSJames Henderson"""
101364750dSJames Henderson
111364750dSJames Hendersonfrom dex.command.CommandBase import CommandBase
121364750dSJames Henderson
13*f98ee40fSTobias Hieta
141364750dSJames Hendersonclass DexLimitSteps(CommandBase):
151364750dSJames Henderson    def __init__(self, *args, **kwargs):
161364750dSJames Henderson        if len(args) == 0:
171364750dSJames Henderson            self.expression = None
181364750dSJames Henderson            self.values = []
191364750dSJames Henderson        elif len(args) == 1:
201364750dSJames Henderson            raise TypeError("expected 0 or at least 2 positional arguments")
211364750dSJames Henderson        else:
221364750dSJames Henderson            self.expression = args[0]
231364750dSJames Henderson            self.values = [str(arg) for arg in args[1:]]
241364750dSJames Henderson        try:
25*f98ee40fSTobias Hieta            on_line = kwargs.pop("on_line")
261364750dSJames Henderson            self.from_line = on_line
271364750dSJames Henderson            self.to_line = on_line
281364750dSJames Henderson        except KeyError:
29*f98ee40fSTobias Hieta            self.from_line = kwargs.pop("from_line", 1)
30*f98ee40fSTobias Hieta            self.to_line = kwargs.pop("to_line", 999999)
31*f98ee40fSTobias Hieta        self.hit_count = kwargs.pop("hit_count", None)
321364750dSJames Henderson        if kwargs:
33*f98ee40fSTobias Hieta            raise TypeError("unexpected named args: {}".format(", ".join(kwargs)))
341364750dSJames Henderson        super(DexLimitSteps, self).__init__()
351364750dSJames Henderson
361364750dSJames Henderson    def eval(self):
37*f98ee40fSTobias Hieta        raise NotImplementedError("DexLimitSteps commands cannot be evaled.")
381364750dSJames Henderson
391364750dSJames Henderson    @staticmethod
401364750dSJames Henderson    def get_name():
411364750dSJames Henderson        return __class__.__name__
421364750dSJames Henderson
431364750dSJames Henderson    @staticmethod
441364750dSJames Henderson    def get_subcommands() -> dict:
451364750dSJames Henderson        return None
46