74 lines
2.3 KiB
Python
74 lines
2.3 KiB
Python
"""Rules for simple testing without dependencies by parsing output logs."""
|
|
|
|
load(
|
|
"//tensorflow/lite/micro:build_def.bzl",
|
|
"micro_copts",
|
|
)
|
|
|
|
def tflite_micro_cc_test(
|
|
name,
|
|
size = "medium",
|
|
expected_in_logs = "~~~ALL TESTS PASSED~~~",
|
|
srcs = [],
|
|
includes = [],
|
|
defines = [],
|
|
copts = micro_copts(),
|
|
nocopts = "",
|
|
linkopts = [],
|
|
deps = [],
|
|
tags = [],
|
|
visibility = None):
|
|
"""Tests a C/C++ binary without testing framework dependencies`.
|
|
|
|
Runs a C++ binary, and tests that the output logs contain the
|
|
expected value. This is a deliberately spartan way of testing, to match
|
|
what's available when testing microcontroller binaries.
|
|
|
|
Args:
|
|
name: a unique name for this rule.
|
|
expected_in_logs: A regular expression that is required to be
|
|
present in the binary's logs for the test to pass.
|
|
srcs: sources to compile (C, C++, ld scripts).
|
|
includes: include paths to add to this rule and its dependents.
|
|
defines: list of `VAR` or `VAR=VAL` to pass to CPP for this rule and
|
|
its dependents.
|
|
copts: gcc compilation flags for this rule only.
|
|
nocopts: list of gcc compilation flags to remove for this rule
|
|
only. No regexp like for `cc_library`.
|
|
linkopts: `gcc` flags to add to the linking phase. For "pure" ld flags,
|
|
prefix them with the `-Wl,` prefix here.
|
|
deps: dependencies. only `tflite_bare_metal_cc_library()` dependencies
|
|
allowed.
|
|
visibility: visibility.
|
|
"""
|
|
native.cc_binary(
|
|
name = name + "_binary",
|
|
srcs = srcs,
|
|
includes = includes,
|
|
defines = defines,
|
|
copts = copts,
|
|
nocopts = nocopts,
|
|
linkopts = linkopts,
|
|
deps = deps,
|
|
tags = tags,
|
|
visibility = visibility,
|
|
)
|
|
native.sh_test(
|
|
name = name,
|
|
size = size,
|
|
srcs = [
|
|
"//tensorflow/lite/micro/testing:test_linux_binary.sh",
|
|
],
|
|
args = [
|
|
native.package_name() + "/" + name + "_binary",
|
|
"'" + expected_in_logs + "'",
|
|
],
|
|
data = [
|
|
name + "_binary",
|
|
# Internal test dependency placeholder
|
|
],
|
|
deps = [
|
|
],
|
|
tags = tags,
|
|
)
|