# Copyright 2024 The Pigweed Authors # # Licensed under the Apache License, Version 2.0 (the "License"); you may not # use this file except in compliance with the License. You may obtain a copy of # the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. """Utilities common to format tests.""" import subprocess from typing import List from pw_cli.tool_runner import ToolRunner class CapturingToolRunner(ToolRunner): """A ToolRunner that captures executed commands and their arguments.""" def __init__(self): self.command_history: List[str] = [] def _run_tool( self, tool: str, args, **kwargs ) -> subprocess.CompletedProcess: """Runs the requested tool with the provided arguments. The full command is appended to ``command_history``. """ cmd = [tool] + args self.command_history.append(' '.join([str(arg) for arg in cmd])) return subprocess.run(cmd, **kwargs)