#include #include #include "OEMCryptoCENC.h" #include "log.h" #include "oec_device_features.h" #include "oemcrypto_corpus_generator_helper.h" #include "test_sleep.h" static void acknowledge_cast() { std::cout << "==================================================================\n" << "= This device is expected to load x509 certs as a cast receiver. =\n" << "==================================================================\n"; } // This special main procedure is used instead of the standard GTest main, // because we need to initialize the list of features supported by the device. // Also, the test filter is updated based on the feature list. int main(int argc, char** argv) { bool is_cast_receiver = false; int verbosity = 0; // Skip the first element, which is the program name. const std::vector args(argv + 1, argv + argc); for (const std::string& arg : args) { if (arg == "--generate_corpus") { wvoec::SetGenerateCorpus(true); } if (arg == "--verbose" || arg == "-v") { ++verbosity; } else if (arg == "--cast") { acknowledge_cast(); is_cast_receiver = true; } if (arg == "--force_load_test_keybox") { std::cerr << "The argument --force_load_test_keybox is obsolete.\n"; return 1; } if (arg == "--fake_sleep") { wvutil::TestSleep::set_real_sleep(false); } } wvutil::g_cutoff = static_cast(verbosity); wvoec::global_features.Initialize(); if (is_cast_receiver) { // Turn it on if passed in on the command line. Do not turn these tests off // automtically -- instead, we'll let the caller filter them out if they // need to. These tests will normally only run if the device claims to // support being a cast receiver. wvoec::global_features.set_cast_receiver(is_cast_receiver); } // Init GTest after device properties has been initialized. ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }