| # Copyright 2019 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 | |
| """Bazel macros for running lit tests.""" | |
| load(":lit_test.bzl", "lit_test", "lit_test_suite") | |
| def iree_lit_test( | |
| name, | |
| cfg, | |
| tools = None, | |
| env = None, | |
| **kwargs): | |
| """A thin wrapper around lit_test with some opinionated settings. | |
| See the base lit_test for more details on argument meanings. | |
| Args: | |
| name: name for the test. | |
| cfg: string. lit config file. | |
| tools: label_list. tools that should be included on the PATH. | |
| llvm-symbolizer is added by default. | |
| env: string_dict. Environment variables available to the test at runtime. | |
| FILECHECK_OPTS=--enable-var-scope is added if FILECHECK_OPTS is not | |
| already set. | |
| **kwargs: additional keyword args to forward to the underlying lit_test. | |
| """ | |
| tools = tools or [] | |
| env = env or {} | |
| # Always include llvm-symbolizer so we get useful stack traces. Maybe it | |
| # would be better to force everyone to do this explicitly, but since | |
| # forgetting wouldn't cause the test to fail, only make debugging harder | |
| # when it does, I think better to hardcode it here. | |
| llvm_symbolizer = "@llvm-project//llvm:llvm-symbolizer" | |
| if llvm_symbolizer not in tools: | |
| tools.append(llvm_symbolizer) | |
| filecheck_env_var = "FILECHECK_OPTS" | |
| if filecheck_env_var not in env: | |
| env[filecheck_env_var] = "--enable-var-scope" | |
| lit_test( | |
| name = name, | |
| cfg = cfg, | |
| tools = tools, | |
| env = env, | |
| **kwargs | |
| ) | |
| def iree_lit_test_suite( | |
| name, | |
| cfg, | |
| tools = None, | |
| env = None, | |
| **kwargs): | |
| """A thin wrapper around lit_test_suite with some opinionated settings. | |
| See the base lit_test for more details on argument meanings. | |
| Args: | |
| name: name for the test suite. | |
| cfg: string. lit config file. | |
| tools: label_list. tools that should be included on the PATH. | |
| llvm-symbolizer is added by default. | |
| env: string_dict. Environment variables available to the test at runtime. | |
| FILECHECK_OPTS=--enable-var-scope is added if FILECHECK_OPTS is not | |
| already set. | |
| **kwargs: additional keyword args to forward to the underlying | |
| lit_test_suite. | |
| """ | |
| tools = tools or [] | |
| env = env or {} | |
| # Always include llvm-symbolizer so we get useful stack traces. Maybe it | |
| # would be better to force everyone to do this explicitly, but since | |
| # forgetting wouldn't cause the test to fail, only make debugging harder | |
| # when it does, I think better to hardcode it here. | |
| llvm_symbolizer = "@llvm-project//llvm:llvm-symbolizer" | |
| if llvm_symbolizer not in tools: | |
| tools.append(llvm_symbolizer) | |
| filecheck_env_var = "FILECHECK_OPTS" | |
| if filecheck_env_var not in env: | |
| env[filecheck_env_var] = "--enable-var-scope" | |
| lit_test_suite( | |
| name = name, | |
| cfg = cfg, | |
| tools = tools, | |
| env = env, | |
| **kwargs | |
| ) |