# DExTer : Debugging Experience Tester # ~~~~~~ ~ ~~ ~ ~~ # # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception import os from itertools import chain def in_source_file(source_files, step_info): if not step_info.current_frame: return False if not step_info.current_location.path: return False if not os.path.exists(step_info.current_location.path): return False return any(os.path.samefile(step_info.current_location.path, f) \ for f in source_files) def update_step_watches(step_info, watches, commands): watch_cmds = ['DexUnreachable', 'DexExpectStepOrder'] towatch = chain.from_iterable(commands[x] for x in watch_cmds if x in commands) try: # Iterate over all watches of the types named in watch_cmds for watch in towatch: loc = step_info.current_location if (os.path.exists(loc.path) and os.path.samefile(watch.path, loc.path) and watch.lineno == loc.lineno): result = watch.eval(step_info) step_info.watches.update(result) break except KeyError: pass