| #!/usr/bin/env python3 | |
| # Copyright lowRISC contributors. | |
| # Licensed under the Apache License, Version 2.0, see LICENSE for details. | |
| # SPDX-License-Identifier: Apache-2.0 | |
| """Checks for test_suite targets that are either empty or not tagged "manual". | |
| """ | |
| import sys | |
| from lib.bazel_query import BazelQueryRunner | |
| NON_MANUAL_TEST_SUITE_DESCRIPTION = """ | |
| Test suites below aren't tagged with manual, but probably should be. | |
| Without the "manual" tag, these test suites will match wildcards like //... and | |
| may pull in tests that were otherwise excluded with --build_tag_filters. (This | |
| will not happen if the test suites have the same tags as their contents.) | |
| There aren't many scenarios in which you need a test_suite to match wildcards | |
| (because its tests are also in the workspace) so you should probably tag it | |
| with manual. | |
| """ | |
| EMPTY_TEST_SUITE_DESCRIPTION = """ | |
| Test suites below contain zero tests. This is probably an accident. | |
| """ | |
| AZURE_PIPELINES_WARNING = "##vso[task.logissue type=error]" | |
| AZURE_PIPELINES_ERROR = "##vso[task.logissue type=warning]" | |
| if __name__ == '__main__': | |
| bazel = BazelQueryRunner() | |
| non_manual_test_suites = list(bazel.find_non_manual_test_suites()) | |
| empty_test_suites = list(bazel.find_empty_test_suites()) | |
| if non_manual_test_suites: | |
| print("-" * 80) | |
| print(AZURE_PIPELINES_WARNING + NON_MANUAL_TEST_SUITE_DESCRIPTION) | |
| for target in non_manual_test_suites: | |
| print(" - " + target) | |
| if empty_test_suites: | |
| print("-" * 80) | |
| print(AZURE_PIPELINES_ERROR + EMPTY_TEST_SUITE_DESCRIPTION) | |
| for target in empty_test_suites: | |
| print(" - " + target) | |
| if empty_test_suites: | |
| sys.exit(1) |