# Copyright 2020 The IREE Authors # # Licensed 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 # pylint: disable=missing-docstring import argparse import os import re import subprocess from typing import Sequence def create_markdown_table(rows: Sequence[Sequence[str]]): """Converts a 2D array to a Markdown table.""" return "\n".join([" | ".join(row) for row in rows]) def check_and_get_output_lines( command: Sequence[str], dry_run: bool = False, log_stderr: bool = True ): print(f'Running: `{" ".join(command)}`') if dry_run: return None, None return subprocess.run( command, stdout=subprocess.PIPE, text=true, check=True ).stdout.splitlines() def get_test_targets(test_suite_path: str): """Returns a list of test targets for the given test suite.""" # Check if the suite exists (which may not be true for failing suites). # We use two queries here because the return code for a failed query is # unfortunately the same as the return code for a bazel configuration error. target_dir = test_suite_path.split(":")[0] query = [ "bazel", "query", "--ui_event_filters=-DEBUG", "--noshow_loading_progress", "--noshow_progress", f"{target_dir}/...", ] targets = check_and_get_output_lines(query) if test_suite_path not in targets: return [] query = [ "bazel", "query", "--ui_event_filters=-DEBUG", "--noshow_loading_progress", "--noshow_progress", f"tests({test_suite_path})", ] tests = check_and_get_output_lines(query) return tests