From: Alex Rousskov Date: Sat, 22 Jul 2023 22:30:39 +0000 (+0000) Subject: Allow unit tests to customize their initialization code (#1423) X-Git-Tag: SQUID_7_0_1~390 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=53a5a6de2c7e5c194531531ceae911d92eae129c;p=thirdparty%2Fsquid.git Allow unit tests to customize their initialization code (#1423) CppUnit provides TestFixture::setUp() and tearDown() methods, but those methods are executed before and after _each_ test case. Many single TestFixture-derived classes register many test cases that need to run some test program setup/initialization code just once. Counting past setUp() calls would increase noise and likely introduce bugs. Some of our test cases may actually need before/after cleanup -- the functionality already provided by TestFixture::setUp()/tearDown() methods. Moreover, when multiple TestFixture-derived classes share the same test executable, their collections of test cases are executed in essentially random order (see commit 27685ef). In those use cases, insuring one-time initialization via setUp() hacks would be especially awkward and error-prone. With this solution, a test program with custom needs just needs to define a TestProgram-derived class that implements its one-time startup logic. The same TestProgram class hierarchy might also prove useful in future custom test execution adjustments. Also migrated away from the "include main()" unit test design to avoid adding risky hacks that register custom TestProgram-derived classes and to reduce "magic" in test code (while following our style guidelines). Every test programs now declares its own (trivial) main() rather than getting it from include/unitTestMain.h. --- diff --git a/compat/testPreCompiler.cc b/compat/testPreCompiler.cc index 2a76fb4e83..a15e3c55e2 100644 --- a/compat/testPreCompiler.cc +++ b/compat/testPreCompiler.cc @@ -193,3 +193,9 @@ TestPreCompiler::testIfDefOr() CPPUNIT_ASSERT(!undefinedOrUndefinedC); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/include/unitTestMain.h b/include/unitTestMain.h index 035d3d8564..aae54397cc 100644 --- a/include/unitTestMain.h +++ b/include/unitTestMain.h @@ -21,13 +21,42 @@ #include #include +/// implements test program's main() function while enabling customization +class TestProgram +{ +public: + virtual ~TestProgram() = default; + + /// Runs before all tests. + /// Does nothing by default. + virtual void startup() {} + + /// Implements main(), combining all the steps. + /// Must be called from main(). + /// \returns desired main() result. + int run(int argc, char *argv[]); + +private: + bool runTests(); +}; + int -main(int, char *[]) +TestProgram::run(int, char *[]) { #if ENABLE_DEBUG_SECTION Debug::Levels[ENABLE_DEBUG_SECTION] = 99; #endif + startup(); + const auto result = runTests(); + return result ? 0 : 1; +} + +/// runs all tests registered with CPPUNIT_TEST_SUITE_REGISTRATION() calls +/// \returns whether all tests were successful +bool +TestProgram::runTests() +{ // Create the event manager and test controller CPPUNIT_NS::TestResult controller; @@ -51,7 +80,7 @@ main(int, char *[]) CPPUNIT_NS::CompilerOutputter outputter( &result, std::cerr ); outputter.write(); - return result.wasSuccessful() ? 0 : 1; + return result.wasSuccessful(); } #endif /* SQUID_INCLUDE_UNITTESTMAIN_H */ diff --git a/lib/tests/testRFC1738.cc b/lib/tests/testRFC1738.cc index 93d715783c..ab3e4f3a6c 100644 --- a/lib/tests/testRFC1738.cc +++ b/lib/tests/testRFC1738.cc @@ -173,3 +173,9 @@ void TestRfc1738::PercentZeroNullDecoding() xfree(unescaped_str); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testACLMaxUserIP.cc b/src/tests/testACLMaxUserIP.cc index e2b610968b..8878a9ee0f 100644 --- a/src/tests/testACLMaxUserIP.cc +++ b/src/tests/testACLMaxUserIP.cc @@ -32,9 +32,6 @@ class TestACLMaxUserIP : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testParseLine); CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: void testDefaults(); void testParseLine(); @@ -56,10 +53,17 @@ TestACLMaxUserIP::testDefaults() CPPUNIT_ASSERT_EQUAL(false,anACL.valid()); } +/// customizes our test setup +class MyTestProgram: public TestProgram +{ +public: + /* TestProgram API */ + void startup() override; +}; + void -TestACLMaxUserIP::setUp() +MyTestProgram::startup() { - CPPUNIT_NS::TestFixture::setUp(); Acl::RegisterMaker("max_user_ip", [](Acl::TypeName name)->ACL* { return new ACLMaxUserIP(name); }); } @@ -86,5 +90,11 @@ TestACLMaxUserIP::testParseLine() xfree(line); } +int +main(int argc, char *argv[]) +{ + return MyTestProgram().run(argc, argv); +} + #endif /* USE_AUTH */ diff --git a/src/tests/testAuth.cc b/src/tests/testAuth.cc index a40f69a739..00e89d1dcc 100644 --- a/src/tests/testAuth.cc +++ b/src/tests/testAuth.cc @@ -286,5 +286,12 @@ TestAuthNegotiateUserRequest::username() } #endif /* HAVE_AUTH_MODULE_NEGOTIATE */ + +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + #endif /* USE_AUTH */ diff --git a/src/tests/testBoilerplate.cc b/src/tests/testBoilerplate.cc index 07e23f798f..25449411e4 100644 --- a/src/tests/testBoilerplate.cc +++ b/src/tests/testBoilerplate.cc @@ -20,3 +20,9 @@ TestBoilerplate::testDemonstration() CPPUNIT_ASSERT_EQUAL(0, 0); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testCacheManager.cc b/src/tests/testCacheManager.cc index c921248102..aa2aa7450f 100644 --- a/src/tests/testCacheManager.cc +++ b/src/tests/testCacheManager.cc @@ -27,9 +27,6 @@ class TestCacheManager : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testParseUrl); CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: void testCreate(); void testRegister(); @@ -45,9 +42,16 @@ public: void ParseUrl(const AnyP::Uri &u) { CacheManager::ParseUrl(u); } }; -/* init memory pools */ +/// customizes our test setup +class MyTestProgram: public TestProgram +{ +public: + /* TestProgram API */ + void startup() override; +}; -void TestCacheManager::setUp() +void +MyTestProgram::startup() { Mem::Init(); AnyP::UriScheme::Init(); @@ -238,3 +242,9 @@ TestCacheManager::testParseUrl() } } +int +main(int argc, char *argv[]) +{ + return MyTestProgram().run(argc, argv); +} + diff --git a/src/tests/testCharacterSet.cc b/src/tests/testCharacterSet.cc index faddaabd24..09f2f88b54 100644 --- a/src/tests/testCharacterSet.cc +++ b/src/tests/testCharacterSet.cc @@ -143,3 +143,9 @@ TestCharacterSet::CharacterSetSubtract() CPPUNIT_ASSERT_EQUAL(CharacterSet::HEXDIG, sample - CharacterSet(nullptr, "qz")); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testClpMap.cc b/src/tests/testClpMap.cc index 7e6e9361f8..b15ae2e182 100644 --- a/src/tests/testClpMap.cc +++ b/src/tests/testClpMap.cc @@ -32,9 +32,6 @@ class TestClpMap: public CPPUNIT_NS::TestFixture CPPUNIT_TEST( testRangeLoopTraversal ); CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: using Map = ClpMap; @@ -104,12 +101,6 @@ TestClpMap::addOneEntry(Map &m, const Map::mapped_type value, const Map::Ttl ttl CPPUNIT_ASSERT_EQUAL(value, *m.get(key)); } -void -TestClpMap::setUp() -{ - squid_curtime = time(nullptr); -} - void TestClpMap::testPutGetDelete() { @@ -387,3 +378,17 @@ TestClpMap::testRangeLoopTraversal() CPPUNIT_ASSERT_EQUAL(expectedEntryCount, iterations); } +/// customizes our test setup +class MyTestProgram: public TestProgram +{ +public: + /* TestProgram API */ + void startup() override { squid_curtime = time(nullptr); } +}; + +int +main(int argc, char *argv[]) +{ + return MyTestProgram().run(argc, argv); +} + diff --git a/src/tests/testConfigParser.cc b/src/tests/testConfigParser.cc index 40804c7135..3a8e1a63a6 100644 --- a/src/tests/testConfigParser.cc +++ b/src/tests/testConfigParser.cc @@ -22,9 +22,6 @@ class TestConfigParser : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testParseQuoted); CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: bool doParseQuotedTest(const char *, const char *); void testParseQuoted(); @@ -34,10 +31,6 @@ CPPUNIT_TEST_SUITE_REGISTRATION( TestConfigParser ); int shutting_down = 0; -void TestConfigParser::setUp() -{ -} - bool TestConfigParser::doParseQuotedTest(const char *s, const char *expectInterp) { char cfgline[2048]; @@ -96,3 +89,9 @@ void TestConfigParser::testParseQuoted() CPPUNIT_ASSERT_EQUAL(true, doParseQuotedTest("\"\\\\\"", "\\")); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testDiskIO.cc b/src/tests/testDiskIO.cc index b158e2cc1f..5828b0aad6 100644 --- a/src/tests/testDiskIO.cc +++ b/src/tests/testDiskIO.cc @@ -29,17 +29,22 @@ class TestDiskIO : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testFindDefault); CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: void testFindDefault(); }; CPPUNIT_TEST_SUITE_REGISTRATION( TestDiskIO ); +/// customizes our test setup +class MyTestProgram: public TestProgram +{ +public: + /* TestProgram API */ + void startup() override; +}; + void -TestDiskIO::setUp() +MyTestProgram::startup() { Mem::Init(); DiskIOModule::SetupAllModules(); @@ -58,3 +63,9 @@ TestDiskIO::testFindDefault() #endif } +int +main(int argc, char *argv[]) +{ + return MyTestProgram().run(argc, argv); +} + diff --git a/src/tests/testEnumIterator.cc b/src/tests/testEnumIterator.cc index a36eb82762..6d25a760b7 100644 --- a/src/tests/testEnumIterator.cc +++ b/src/tests/testEnumIterator.cc @@ -162,3 +162,9 @@ TestEnumIterator::testUnsignedEnum() CPPUNIT_ASSERT_EQUAL(5,j); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testEvent.cc b/src/tests/testEvent.cc index 7bf8178ed6..cdacda932d 100644 --- a/src/tests/testEvent.cc +++ b/src/tests/testEvent.cc @@ -28,9 +28,6 @@ class TestEvent : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testCancel); CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: void testCreate(); void testDump(); @@ -42,14 +39,6 @@ protected: CPPUNIT_TEST_SUITE_REGISTRATION( TestEvent ); -/* init legacy static-initialized modules */ - -void -TestEvent::setUp() -{ - Mem::Init(); -} - /* * Test creating a Scheduler */ @@ -180,3 +169,17 @@ TestEvent::testSingleton() CPPUNIT_ASSERT(nullptr != scheduler); } +/// customizes our test setup +class MyTestProgram: public TestProgram +{ +public: + /* TestProgram API */ + void startup() override { Mem::Init(); } +}; + +int +main(int argc, char *argv[]) +{ + return MyTestProgram().run(argc, argv); +} + diff --git a/src/tests/testEventLoop.cc b/src/tests/testEventLoop.cc index 91792a2c14..65ea78f9e9 100644 --- a/src/tests/testEventLoop.cc +++ b/src/tests/testEventLoop.cc @@ -206,3 +206,9 @@ TestEventLoop::testSetPrimaryEngine() CPPUNIT_ASSERT_EQUAL(0, second_engine.lasttimeout); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testHttp1Parser.cc b/src/tests/testHttp1Parser.cc index 1c7331069c..739218b34e 100644 --- a/src/tests/testHttp1Parser.cc +++ b/src/tests/testHttp1Parser.cc @@ -1194,3 +1194,9 @@ TestHttp1Parser::testDripFeed() } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testHttpReply.cc b/src/tests/testHttpReply.cc index 5730b68da8..7cd3d1b022 100644 --- a/src/tests/testHttpReply.cc +++ b/src/tests/testHttpReply.cc @@ -22,9 +22,6 @@ class TestHttpReply : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testSanityCheckFirstLine); CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: void testSanityCheckFirstLine(); }; @@ -44,8 +41,16 @@ MemObject::endOffset() const /* end */ +/// customizes our test setup +class MyTestProgram: public TestProgram +{ +public: + /* TestProgram API */ + void startup() override; +}; + void -TestHttpReply::setUp() +MyTestProgram::startup() { Mem::Init(); httpHeaderInitModule(); @@ -215,3 +220,9 @@ TestHttpReply::testSanityCheckFirstLine() error = Http::scNone; } +int +main(int argc, char *argv[]) +{ + return MyTestProgram().run(argc, argv); +} + diff --git a/src/tests/testHttpRequest.cc b/src/tests/testHttpRequest.cc index c07821e18c..d01383b74d 100644 --- a/src/tests/testHttpRequest.cc +++ b/src/tests/testHttpRequest.cc @@ -24,9 +24,6 @@ class TestHttpRequest : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testSanityCheckStartLine); CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: void testCreateFromUrl(); void testIPv6HostColonBug(); @@ -43,10 +40,16 @@ public: bool doSanityCheckStartLine(const char *b, const size_t h, Http::StatusCode *e) { return sanityCheckStartLine(b,h,e); }; }; -/* init memory pools */ +/// customizes our test setup +class MyTestProgram: public TestProgram +{ +public: + /* TestProgram API */ + void startup() override; +}; void -TestHttpRequest::setUp() +MyTestProgram::startup() { Mem::Init(); AnyP::UriScheme::Init(); @@ -211,3 +214,9 @@ TestHttpRequest::testSanityCheckStartLine() error = Http::scNone; } +int +main(int argc, char *argv[]) +{ + return MyTestProgram().run(argc, argv); +} + diff --git a/src/tests/testHttpRequestMethod.cc b/src/tests/testHttpRequestMethod.cc index 8d36ed9862..bc09abfbab 100644 --- a/src/tests/testHttpRequestMethod.cc +++ b/src/tests/testHttpRequestMethod.cc @@ -194,3 +194,5 @@ TestHttpRequestMethod::testStream() CPPUNIT_ASSERT_EQUAL(String("get"), String(buffer2.str().c_str())); } +// This test uses main() from ./testHttpRequest.cc. + diff --git a/src/tests/testIcmp.cc b/src/tests/testIcmp.cc index d6885af74e..5029cc4cd7 100644 --- a/src/tests/testIcmp.cc +++ b/src/tests/testIcmp.cc @@ -155,3 +155,9 @@ TestIcmp::testHops() #endif } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testIpAddress.cc b/src/tests/testIpAddress.cc index 9b5d5c970d..f9b549a659 100644 --- a/src/tests/testIpAddress.cc +++ b/src/tests/testIpAddress.cc @@ -799,3 +799,9 @@ TestIpAddress::testBugNullingDisplay() } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testLookupTable.cc b/src/tests/testLookupTable.cc index c194954617..7cade48dcc 100644 --- a/src/tests/testLookupTable.cc +++ b/src/tests/testLookupTable.cc @@ -66,3 +66,9 @@ TestLookupTable::testLookupTableLookup() CPPUNIT_ASSERT_EQUAL(lt.lookup(SBuf("eleventy")), ENUM_INVALID); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testMath.cc b/src/tests/testMath.cc index 63746811ed..c52cf8a992 100644 --- a/src/tests/testMath.cc +++ b/src/tests/testMath.cc @@ -265,3 +265,9 @@ TestMath::testNaturalSum() CPPUNIT_ASSERT_EQUAL(expires, result); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testMem.cc b/src/tests/testMem.cc index ba8f5dcfca..e2af4f1168 100644 --- a/src/tests/testMem.cc +++ b/src/tests/testMem.cc @@ -80,3 +80,9 @@ TestMem::testMemProxy() CPPUNIT_ASSERT_EQUAL(otherthing->aValue, 0); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testNetDb.cc b/src/tests/testNetDb.cc index 26373e2efd..7b043c66cf 100644 --- a/src/tests/testNetDb.cc +++ b/src/tests/testNetDb.cc @@ -64,3 +64,9 @@ TestNetDb::testConstruct() } } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testPackableStream.cc b/src/tests/testPackableStream.cc index 8df7758627..d89adb98be 100644 --- a/src/tests/testPackableStream.cc +++ b/src/tests/testPackableStream.cc @@ -22,22 +22,12 @@ class TestPackableStream : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testGetStream); CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: void testGetStream(); }; CPPUNIT_TEST_SUITE_REGISTRATION( TestPackableStream ); -/* init memory pools */ - -void TestPackableStream::setUp() -{ - Mem::Init(); -} - // TODO: test streaming to a MemBuf as well. void @@ -72,3 +62,5 @@ TestPackableStream::testGetStream() Store::FreeMemory(); } +// This test uses main() from ./testStore.cc. + diff --git a/src/tests/testRFC1035.cc b/src/tests/testRFC1035.cc index 0a23323fcb..274ac457a6 100644 --- a/src/tests/testRFC1035.cc +++ b/src/tests/testRFC1035.cc @@ -162,3 +162,9 @@ void TestRfc1035::testBugPacketHeadersOnly() CPPUNIT_ASSERT(msg == nullptr); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testRandomUuid.cc b/src/tests/testRandomUuid.cc index a9ec87335e..ae7991c4a4 100644 --- a/src/tests/testRandomUuid.cc +++ b/src/tests/testRandomUuid.cc @@ -90,3 +90,9 @@ TestRandomUuid::testInvalidIds() } } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testRefCount.cc b/src/tests/testRefCount.cc index f463f1aa4f..8a7cf3b4a2 100644 --- a/src/tests/testRefCount.cc +++ b/src/tests/testRefCount.cc @@ -196,3 +196,9 @@ TestRefCount::testDoubleInheritToSingleInherit() CPPUNIT_ASSERT_EQUAL(1, _ToRefCount::Instances); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testRock.cc b/src/tests/testRock.cc index 69c15875ce..0eace9fd61 100644 --- a/src/tests/testRock.cc +++ b/src/tests/testRock.cc @@ -69,10 +69,6 @@ private: }; CPPUNIT_TEST_SUITE_REGISTRATION(TestRock); -extern REMOVALPOLICYCREATE createRemovalPolicy_lru; - -static char cwd[MAXPATHLEN]; - static void addSwapDir(TestRock::SwapDirPointer aStore) { @@ -89,22 +85,12 @@ TestRock::setUp() if (0 > system ("rm -rf " TESTDIR)) throw std::runtime_error("Failed to clean test work directory"); - Config.memShared.defaultTo(false); - Config.shmLocking.defaultTo(false); - - // use current directory for shared segments (on path-based OSes) - Ipc::Mem::Segment::BasePath = getcwd(cwd,MAXPATHLEN); - if (Ipc::Mem::Segment::BasePath == nullptr) - Ipc::Mem::Segment::BasePath = "."; - Store::Init(); store = new Rock::SwapDir(); addSwapDir(store); - commonInit(); - char *path=xstrdup(TESTDIR); char *config_line=xstrdup("10 max-size=16384"); @@ -147,42 +133,6 @@ TestRock::tearDown() throw std::runtime_error("Failed to clean test work directory"); } -void -TestRock::commonInit() -{ - static bool inited = false; - - if (inited) - return; - - Config.Store.avgObjectSize = 1024; - Config.Store.objectsPerBucket = 20; - Config.Store.maxObjectSize = 2048; - - Config.store_dir_select_algorithm = xstrdup("round-robin"); - - Config.replPolicy = new RemovalPolicySettings; - Config.replPolicy->type = xstrdup("lru"); - Config.replPolicy->args = nullptr; - - /* garh garh */ - storeReplAdd("lru", createRemovalPolicy_lru); - - visible_appname_string = xstrdup(APP_FULLNAME); - - Mem::Init(); - - fde::Init(); - - comm_init(); - - httpHeaderInitModule(); /* must go before any header processing (e.g. the one in errorInitialize) */ - - mem_policy = createRemovalPolicy(Config.replPolicy); - - inited = true; -} - void TestRock::storeInit() { @@ -363,3 +313,53 @@ TestRock::testRockSwapOut() } } +/// customizes our test setup +class MyTestProgram: public TestProgram +{ +public: + /* TestProgram API */ + void startup() override; +}; + +void +MyTestProgram::startup() +{ + Config.memShared.defaultTo(false); + Config.shmLocking.defaultTo(false); + + // use current directory for shared segments (on path-based OSes) + static char cwd[MAXPATHLEN]; + Ipc::Mem::Segment::BasePath = getcwd(cwd, MAXPATHLEN); + if (!Ipc::Mem::Segment::BasePath) + Ipc::Mem::Segment::BasePath = "."; + + Config.Store.avgObjectSize = 1024; + Config.Store.objectsPerBucket = 20; + Config.Store.maxObjectSize = 2048; + + Config.store_dir_select_algorithm = xstrdup("round-robin"); + + Config.replPolicy = new RemovalPolicySettings; + Config.replPolicy->type = xstrdup("lru"); + Config.replPolicy->args = nullptr; + + /* garh garh */ + extern REMOVALPOLICYCREATE createRemovalPolicy_lru; + storeReplAdd("lru", createRemovalPolicy_lru); + + visible_appname_string = xstrdup(APP_FULLNAME); + + Mem::Init(); + fde::Init(); + comm_init(); + httpHeaderInitModule(); /* must go before any header processing (e.g. the one in errorInitialize) */ + + mem_policy = createRemovalPolicy(Config.replPolicy); +} + +int +main(int argc, char *argv[]) +{ + return MyTestProgram().run(argc, argv); +} + diff --git a/src/tests/testSBuf.cc b/src/tests/testSBuf.cc index 75794ae787..e48a32e727 100644 --- a/src/tests/testSBuf.cc +++ b/src/tests/testSBuf.cc @@ -1190,3 +1190,9 @@ TestSBuf::testSBufHash() } } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testSBufList.cc b/src/tests/testSBufList.cc index dc9f38ac68..0620999bad 100644 --- a/src/tests/testSBufList.cc +++ b/src/tests/testSBufList.cc @@ -62,3 +62,9 @@ TestSBufList::testSBufListJoin() } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testStatHist.cc b/src/tests/testStatHist.cc index 0ba18753ff..10a061c454 100644 --- a/src/tests/testStatHist.cc +++ b/src/tests/testStatHist.cc @@ -120,3 +120,9 @@ TestStatHist::testStatHistSum() } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testStore.cc b/src/tests/testStore.cc index 7538f0d8d2..54e1c96ccd 100644 --- a/src/tests/testStore.cc +++ b/src/tests/testStore.cc @@ -203,3 +203,17 @@ TestStore::testSwapMetaTypeClassification() CPPUNIT_ASSERT(Store::HonoredSwapMetaType(Store::RawSwapMetaTypeTop())); } +/// customizes our test setup +class MyTestProgram: public TestProgram +{ +public: + /* TestProgram API */ + void startup() override { Mem::Init(); } +}; + +int +main(int argc, char *argv[]) +{ + return MyTestProgram().run(argc, argv); +} + diff --git a/src/tests/testStoreController.cc b/src/tests/testStoreController.cc index 39596b948d..06e8f8fbb0 100644 --- a/src/tests/testStoreController.cc +++ b/src/tests/testStoreController.cc @@ -199,3 +199,5 @@ TestStoreController::testSearch() Store::FreeMemory(); } +// This test uses main() from ./testStore.cc. + diff --git a/src/tests/testStoreHashIndex.cc b/src/tests/testStoreHashIndex.cc index 2349d4c86e..72813338de 100644 --- a/src/tests/testStoreHashIndex.cc +++ b/src/tests/testStoreHashIndex.cc @@ -199,3 +199,5 @@ TestStoreHashIndex::testSearch() Store::FreeMemory(); } +// This test uses main() from ./testStore.cc. + diff --git a/src/tests/testString.cc b/src/tests/testString.cc index fad4dfff72..7fa246ee8a 100644 --- a/src/tests/testString.cc +++ b/src/tests/testString.cc @@ -26,9 +26,6 @@ class TestString : public CPPUNIT_NS::TestFixture CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: void testCmpDefault(); void testCmpEmptyString(); @@ -37,14 +34,6 @@ protected: }; CPPUNIT_TEST_SUITE_REGISTRATION(TestString); -/* init memory pools */ - -void -TestString::setUp() -{ - Mem::Init(); -} - void TestString::testCmpDefault() { @@ -93,3 +82,17 @@ void TestString::testSubstr() CPPUNIT_ASSERT(check == ref); } +/// customizes our test setup +class MyTestProgram: public TestProgram +{ +public: + /* TestProgram API */ + void startup() override { Mem::Init(); } +}; + +int +main(int argc, char *argv[]) +{ + return MyTestProgram().run(argc, argv); +} + diff --git a/src/tests/testTokenizer.cc b/src/tests/testTokenizer.cc index 6e3d9d499e..e69fec4f95 100644 --- a/src/tests/testTokenizer.cc +++ b/src/tests/testTokenizer.cc @@ -327,3 +327,9 @@ TestTokenizer::testTokenizerInt64() } } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testURL.cc b/src/tests/testURL.cc index 6b5b57f183..2600a72a20 100644 --- a/src/tests/testURL.cc +++ b/src/tests/testURL.cc @@ -27,19 +27,22 @@ class TestUri : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testDefaultConstructor); CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: void testConstructScheme(); void testDefaultConstructor(); }; CPPUNIT_TEST_SUITE_REGISTRATION(TestUri); -/* init memory pools */ +/// customizes our test setup +class MyTestProgram: public TestProgram +{ +public: + /* TestProgram API */ + void startup() override; +}; void -TestUri::setUp() +MyTestProgram::startup() { Mem::Init(); AnyP::UriScheme::Init(); @@ -78,3 +81,9 @@ TestUri::testDefaultConstructor() delete urlPointer; } +int +main(int argc, char *argv[]) +{ + return MyTestProgram().run(argc, argv); +} + diff --git a/src/tests/testUfs.cc b/src/tests/testUfs.cc index 659d224c57..cfdad7498f 100644 --- a/src/tests/testUfs.cc +++ b/src/tests/testUfs.cc @@ -266,3 +266,9 @@ TestUfs::testUfsDefaultEngine() throw std::runtime_error("Failed to clean test work directory"); } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} + diff --git a/src/tests/testUriScheme.cc b/src/tests/testUriScheme.cc index 856fa9688d..2bc3dc0ec9 100644 --- a/src/tests/testUriScheme.cc +++ b/src/tests/testUriScheme.cc @@ -31,9 +31,6 @@ class TestUriScheme : public CPPUNIT_NS::TestFixture CPPUNIT_TEST(testStream); CPPUNIT_TEST_SUITE_END(); -public: - void setUp() override; - protected: void testAssignFromprotocol_t(); void testCastToprotocol_t(); @@ -153,10 +150,5 @@ TestUriScheme::testStream() CPPUNIT_ASSERT_EQUAL(http_str, from_buf); } -void -TestUriScheme::setUp() -{ - Mem::Init(); - AnyP::UriScheme::Init(); -} +// This test uses main() from ./testURL.cc. diff --git a/src/tests/testYesNoNone.cc b/src/tests/testYesNoNone.cc index 1f7b05880a..bf535fa866 100644 --- a/src/tests/testYesNoNone.cc +++ b/src/tests/testYesNoNone.cc @@ -71,3 +71,9 @@ TestYesNoNone::testBasics() } } +int +main(int argc, char *argv[]) +{ + return TestProgram().run(argc, argv); +} +