blob: bb22ec9c33371a60f6238b67f8b66998aa50f801 [file] [log] [blame]
# Copyright 2019 Google LLC
#
# 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.
# Test coverage across backends for e2e tests is defined directly in the BUILD
# files. A coverage table generated from this file can be viewed here:
# https://google.github.io/iree/TensorFlowE2ECoverage
# Updates made to test suite names should also be reflected here:
# https://github.com/google/iree/blob/main/scripts/update_e2e_coverage.py
load(
"//bindings/python:build_defs.oss.bzl",
"INTREE_TENSORFLOW_PY_DEPS",
"NUMPY_DEPS",
"iree_py_test",
)
load(
"//integrations/tensorflow/e2e:iree_e2e_test_suite.bzl",
"iree_e2e_test_suite",
)
package(
default_visibility = ["//visibility:public"],
licenses = ["notice"], # Apache 2.0
)
# Create binaries for all test srcs to allow them to be run manually.
[
py_binary(
name = src.replace(".py", "_manual"),
srcs = [src],
main = src,
python_version = "PY3",
deps = INTREE_TENSORFLOW_PY_DEPS + NUMPY_DEPS + [
"//integrations/tensorflow/bindings/python/pyiree/tf/support",
],
)
for src in glob(["*_test.py"])
]
# Special cases to exclude from automatically expanding targets for all
# backends.
# keep sorted
SPECIAL_CASES = [
"explicit_backend_test.py",
"linspace_test.py",
]
# keep sorted
VMLA_FAILING = [
"fill_test.py",
"mandelbrot_test.py",
"ring_buffer_test.py",
"strings_test.py",
]
# keep sorted
LLVM_FAILING = [
"broadcasting_test.py",
"depth_conv_test.py",
"dynamic_mlp_relu_test.py",
"dynamic_mlp_test.py",
"fill_test.py",
"mandelbrot_test.py",
"matrix_ops_test.py",
"ring_buffer_test.py",
"strings_test.py",
]
# keep sorted
VULKAN_FAILING = [
"broadcasting_test.py",
"depth_conv_test.py",
"dynamic_mlp_relu_test.py",
"dynamic_mlp_test.py",
"fill_test.py",
"mandelbrot_test.py",
"matrix_ops_test.py",
"ring_buffer_test.py",
"strings_test.py",
"tensorlist_test.py",
]
TF_PASSING = glob(
["*_test.py"],
exclude = SPECIAL_CASES,
)
VMLA_PASSING = glob(
["*_test.py"],
exclude = VMLA_FAILING + SPECIAL_CASES,
)
LLVM_PASSING = glob(
["*_test.py"],
exclude = LLVM_FAILING + SPECIAL_CASES,
)
VULKAN_PASSING = glob(
["*_test.py"],
exclude = VULKAN_FAILING + SPECIAL_CASES,
)
iree_e2e_test_suite(
name = "e2e_tests",
backends_to_srcs = {
"tf_also": TF_PASSING,
"iree_vmla": VMLA_PASSING,
"iree_llvmjit": LLVM_PASSING,
"iree_vulkan": VULKAN_PASSING,
},
reference_backend = "tf",
deps = INTREE_TENSORFLOW_PY_DEPS + NUMPY_DEPS + [
"//integrations/tensorflow/bindings/python/pyiree/tf/support",
],
)
iree_e2e_test_suite(
name = "e2e_tests_failing",
backends_to_srcs = {
"iree_vmla": VMLA_FAILING,
"iree_llvmjit": LLVM_FAILING,
"iree_vulkan": VULKAN_FAILING,
},
reference_backend = "tf",
tags = [
"manual",
"nokokoro",
"notap",
],
deps = INTREE_TENSORFLOW_PY_DEPS + NUMPY_DEPS + [
"//integrations/tensorflow/bindings/python/pyiree/tf/support",
],
)
# Special cases.
# linspace_test passes internally, but fails in the OSS CI, so it needs
# a "nokokoro" tag.
iree_e2e_test_suite(
# TODO(#2082): `linspace_test.py` fails in the `bazel-tensorflow` image.
name = "linspace_tests",
backends_to_srcs = {
"tf_also": ["linspace_test.py"],
"iree_vmla": ["linspace_test.py"],
},
reference_backend = "tf",
tags = [
"nokokoro",
],
deps = INTREE_TENSORFLOW_PY_DEPS + NUMPY_DEPS + [
"//integrations/tensorflow/bindings/python/pyiree/tf/support",
],
)
iree_e2e_test_suite(
name = "linspace_tests_failing",
backends_to_srcs = {
"iree_llvmjit": ["linspace_test.py"],
"iree_vulkan": ["linspace_test.py"],
},
reference_backend = "tf",
tags = [
"manual",
"nokokoro",
"notap",
],
deps = INTREE_TENSORFLOW_PY_DEPS + NUMPY_DEPS + [
"//integrations/tensorflow/bindings/python/pyiree/tf/support",
],
)
# This tests explicitly writing which backends to use in Python,
# so overriding the backends can cause it to break.
iree_py_test(
name = "explicit_backend_test",
srcs = ["explicit_backend_test.py"],
main = "explicit_backend_test.py",
python_version = "PY3",
deps = INTREE_TENSORFLOW_PY_DEPS + NUMPY_DEPS + [
"//integrations/tensorflow/bindings/python/pyiree/tf/support",
],
)