blob: 36b31ae3335a10bcdd54a94666299b10749a2853 [file] [log] [blame]
# 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