loolwsd/test/test.cpp | 73 ++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 37 deletions(-)
New commits: commit 8ab4682a710dbea6286ccd09c2239413038c80fd Author: Pranav Kant <pran...@collabora.co.uk> Date: Mon Oct 17 21:21:54 2016 +0530 loolwsd: Fix handling of CPPUNIT_TEST_NAME in external test-suite Doing a plain CPPUNIT_TEST_NAME='somettest' make check will result in executing all the tests in external test suite. This is a problem when one wants to execute only internal tests (unit-* ones) as test harness first executes those followed by all of the tests in external test-suites. Lets execute all the tests only when no CPPUNIT_TEST_NAME is provided, and ignore when it is provided but no match is found. Change-Id: I7e40b6f3124e6965a86cfb6395d246df3b5c17ba diff --git a/loolwsd/test/test.cpp b/loolwsd/test/test.cpp index 7a081a9..ba80912 100644 --- a/loolwsd/test/test.cpp +++ b/loolwsd/test/test.cpp @@ -24,51 +24,34 @@ class HTTPGetTest; -bool filterTests(CPPUNIT_NS::TestRunner& runner, CPPUNIT_NS::Test* testRegistry) +bool filterTests(CPPUNIT_NS::TestRunner& runner, CPPUNIT_NS::Test* testRegistry, const std::string testName) { - const char* envar = std::getenv("CPPUNIT_TEST_NAME"); - if (envar) - { - std::string testName(envar); - if (testName.empty()) - { - return false; - } - - Poco::RegularExpression re(testName, Poco::RegularExpression::RE_CASELESS); - Poco::RegularExpression::Match reMatch; + Poco::RegularExpression re(testName, Poco::RegularExpression::RE_CASELESS); + Poco::RegularExpression::Match reMatch; - bool haveTests = false; - for (int i = 0; i < testRegistry->getChildTestCount(); ++i) + bool haveTests = false; + for (int i = 0; i < testRegistry->getChildTestCount(); ++i) + { + CPPUNIT_NS::Test* testSuite = testRegistry->getChildTestAt(i); + for (int j = 0; j < testSuite->getChildTestCount(); ++j) { - CPPUNIT_NS::Test* testSuite = testRegistry->getChildTestAt(i); - for (int j = 0; j < testSuite->getChildTestCount(); ++j) + CPPUNIT_NS::Test* testCase = testSuite->getChildTestAt(j); + try { - CPPUNIT_NS::Test* testCase = testSuite->getChildTestAt(j); - try - { - if (re.match(testCase->getName(), reMatch)) - { - runner.addTest(testCase); - haveTests = true; - } - } - catch (const std::exception& exc) + if (re.match(testCase->getName(), reMatch)) { - // Nothing to do; skip. + runner.addTest(testCase); + haveTests = true; } } + catch (const std::exception& exc) + { + // Nothing to do; skip. + } } - - if (!haveTests) - { - std::cerr << "Failed to match [" << testName << "] to any names in the test-suite. Running all tests." << std::endl; - } - - return haveTests; } - return false; + return haveTests; } int main(int /*argc*/, char** /*argv*/) @@ -86,11 +69,27 @@ int main(int /*argc*/, char** /*argv*/) CPPUNIT_NS::Test* testRegistry = CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest(); CPPUNIT_NS::TestRunner runner; - if (!filterTests(runner, testRegistry)) + const char* envar = std::getenv("CPPUNIT_TEST_NAME"); + std::string testName; + if (envar) + { + testName = std::string(envar); + } + + if (testName.empty()) { - // All tests. + // Add all tests. runner.addTest(testRegistry); } + else + { + const bool testsAdded = filterTests(runner, testRegistry, testName); + if (!testsAdded) + { + std::cerr << "Failed to match [" << testName << "] to any names in the external test-suite. " + << "No external tests will be executed" << std::endl; + } + } runner.run(controller); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits