# List of whitelisted unit tests to run for Brillo.
# The format is two column CSV with:
# * first column is the binary name (the binary path is
#   /data/nativetest/<name>/<name>
# * second column is "yes" or "no" whether we want to run the test as root or
#   not.
# Everything after a # is ignored.
apmanager_test, no,
bluetoothtbd_test, no,
crash_reporter_tests, yes,
libbrillo_test, no,
libchrome_test, yes,
libminijail_unittest, no,
libnativepower_tests, no,
libperipheralman_tests, no, -j1
libweave_test, no,
metrics_collector_tests, no,
metricsd_tests, no,
nativepowerman_tests, no,
seccomp_bpf_test, no,
shill_test, no,
syscall_filter_unittest, no,
update_engine_unittests, yes,
weaved_test, no,
