blob: 3bf79583894226e0a3c1c9b001808a737766dd2f [file] [log] [blame]
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <iostream>
#include <sstream>
#ifdef ANDROID
#define FLAGS_list_slow_tests false
#define FLAGS_disable_slow_tests false
// TODO: how does FLAGS_release_tests feature here?
#define FLAGS_release_tests true
#else
#include <gflags/gflags.h>
DEFINE_bool(list_slow_tests, false, "List tests included in the set of slow tests.");
DEFINE_bool(disable_slow_tests, false, "Enables a filter to disable a set of slow tests.");
DEFINE_bool(release_tests, false, "Disables tests that would fail for firmware images built with TEST_IMAGE=0");
#endif // ANDROID
static void generate_disabled_test_list(
const std::vector<std::string>& tests,
std::stringstream *ss) {
for (const auto& test : tests) {
if (ss->tellp() == 0) {
*ss << "-";
} else {
*ss << ":";
}
*ss << test;
}
}
int main(int argc, char** argv) {
const std::vector<std::string> slow_tests{
"AvbTest.*",
"ImportKeyTest.RSASuccess",
"NuggetCoreTest.EnterDeepSleep",
"NuggetCoreTest.HardRebootTest",
"WeaverTest.ReadAttemptCounterPersistsDeepSleep",
"WeaverTest.ReadAttemptCounterPersistsHardReboot",
"WeaverTest.ReadThrottleAfterDeepSleep",
"WeaverTest.ReadThrottleAfterHardReboot",
"WeaverTest.ReadThrottleAfterSleep",
"WeaverTest.WriteDeepSleepRead",
"WeaverTest.WriteHardRebootRead",
};
const std::vector<std::string> disabled_for_release_tests{
"DcryptoTest.AesCmacRfc4493Test",
"KeymasterProvisionTest.ProvisionDeviceIdsSuccess",
"KeymasterProvisionTest.ReProvisionDeviceIdsSuccess",
"KeymasterProvisionTest.ProductionModeProvisionFails",
"KeymasterProvisionTest.InvalidDeviceIdFails",
"KeymasterProvisionTest.MaxDeviceIdSuccess",
"KeymasterProvisionTest.NoMeidSuccess",
"NuggetCoreTest.GetUartPassthruInBootloader",
"NuggetCoreTest.EnableUartPassthruInBootloader",
"NuggetCoreTest.DisableUartPassthruInBootloader",
"NuggetOsTest.NoticePing",
"NuggetOsTest.InvalidMessageType",
"NuggetOsTest.Sequence",
"NuggetOsTest.Echo",
"NuggetOsTest.AesCbc",
"NuggetOsTest.Trng",
"WeaverTest.ProductionResetWipesUserData",
"AvbTest.*",
"ImportKeyTest.*",
"ImportWrappedKeyTest.ImportSuccess",
};
testing::InitGoogleMock(&argc, argv);
#ifndef ANDROID
google::ParseCommandLineFlags(&argc, &argv, true);
#endif // ANDROID
if (FLAGS_list_slow_tests) {
std::cout << "Slow tests:\n";
for (const auto& test : slow_tests) {
std::cout << " " << test << "\n";
}
std::cout.flush();
exit(0);
}
std::stringstream ss;
if (FLAGS_disable_slow_tests) {
generate_disabled_test_list(slow_tests, &ss);
}
if (FLAGS_release_tests) {
generate_disabled_test_list(disabled_for_release_tests, &ss);
}
if (FLAGS_disable_slow_tests || FLAGS_release_tests) {
::testing::GTEST_FLAG(filter) = ss.str();
}
return RUN_ALL_TESTS();
}