diff --git a/libc/utils/UnitTest/LibcTest.h b/libc/utils/UnitTest/LibcTest.h --- a/libc/utils/UnitTest/LibcTest.h +++ b/libc/utils/UnitTest/LibcTest.h @@ -70,7 +70,7 @@ virtual void SetUp() {} virtual void TearDown() {} - static int runTests(); + static int runTests(int, char *[]); protected: static void addTest(Test *T); diff --git a/libc/utils/UnitTest/LibcTest.cpp b/libc/utils/UnitTest/LibcTest.cpp --- a/libc/utils/UnitTest/LibcTest.cpp +++ b/libc/utils/UnitTest/LibcTest.cpp @@ -143,14 +143,23 @@ End = T; } -int Test::runTests() { +int Test::runTests(int argc,char *argv[]) { int TestCount = 0; int FailCount = 0; for (Test *T = Start; T != nullptr; T = T->Next, ++TestCount) { const char *TestName = T->getName(); + std::string str_test_name(TestName); constexpr auto GREEN = "\033[32m"; constexpr auto RED = "\033[31m"; constexpr auto RESET = "\033[0m"; + constexpr auto YELLOW = "\033[33m"; + if(argc>1) { + std::string specific_binary(argv[1]); + if(specific_binary!=str_test_name) { + std::cout << YELLOW << "[ SKIPPING ] " << RESET << TestName << '\n'; + break; + } + } std::cout << GREEN << "[ RUN ] " << RESET << TestName << '\n'; RunContext Ctx; T->SetUp(); @@ -169,9 +178,14 @@ } } - std::cout << "Ran " << TestCount << " tests. " - << " PASS: " << TestCount - FailCount << ' ' - << " FAIL: " << FailCount << '\n'; + if(TestCount>0) { + std::cout << "Ran " << TestCount << " tests. " + << " PASS: " << TestCount - FailCount << ' ' + << " FAIL: " << FailCount << '\n'; + } + else { + std::cout << "No tests run. Ensure that inputted test binary matches the test name exactly."; + } return FailCount > 0 ? 1 : 0; } @@ -350,4 +364,4 @@ } // namespace testing } // namespace __llvm_libc -int main() { return __llvm_libc::testing::Test::runTests(); } +int main(int argc, char *argv[]) { return __llvm_libc::testing::Test::runTests(argc,argv); }