xref: /llvm-project/cross-project-tests/debuginfo-tests/dexter/dex/command/commands/DexFinishTest.py (revision f98ee40f4b5d7474fc67e82824bf6abbaedb7b1c)
16cf69179SStephen Tozer# DExTer : Debugging Experience Tester
26cf69179SStephen Tozer# ~~~~~~   ~         ~~         ~   ~~
36cf69179SStephen Tozer#
46cf69179SStephen Tozer# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
56cf69179SStephen Tozer# See https://llvm.org/LICENSE.txt for license information.
66cf69179SStephen Tozer# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
76cf69179SStephen Tozer"""A Command that enables test writers to terminate a test after a specified
86cf69179SStephen Tozerbreakpoint has been hit a number of times.
96cf69179SStephen Tozer"""
106cf69179SStephen Tozer
116cf69179SStephen Tozerfrom dex.command.CommandBase import CommandBase
126cf69179SStephen Tozer
13*f98ee40fSTobias Hieta
146cf69179SStephen Tozerclass DexFinishTest(CommandBase):
156cf69179SStephen Tozer    def __init__(self, *args, **kwargs):
166cf69179SStephen Tozer        if len(args) == 0:
176cf69179SStephen Tozer            self.expression = None
186cf69179SStephen Tozer            self.values = []
196cf69179SStephen Tozer        elif len(args) == 1:
206cf69179SStephen Tozer            raise TypeError("expected 0 or at least 2 positional arguments")
216cf69179SStephen Tozer        else:
226cf69179SStephen Tozer            self.expression = args[0]
236cf69179SStephen Tozer            self.values = [str(arg) for arg in args[1:]]
24*f98ee40fSTobias Hieta        self.on_line = kwargs.pop("on_line")
25*f98ee40fSTobias Hieta        self.hit_count = kwargs.pop("hit_count", 0)
266cf69179SStephen Tozer        if kwargs:
27*f98ee40fSTobias Hieta            raise TypeError("unexpected named args: {}".format(", ".join(kwargs)))
286cf69179SStephen Tozer        super(DexFinishTest, self).__init__()
296cf69179SStephen Tozer
306cf69179SStephen Tozer    def eval(self):
31*f98ee40fSTobias Hieta        raise NotImplementedError("DexFinishTest commands cannot be evaled.")
326cf69179SStephen Tozer
336cf69179SStephen Tozer    @staticmethod
346cf69179SStephen Tozer    def get_name():
356cf69179SStephen Tozer        return __class__.__name__
366cf69179SStephen Tozer
376cf69179SStephen Tozer    @staticmethod
386cf69179SStephen Tozer    def get_subcommands() -> dict:
396cf69179SStephen Tozer        return None
40