mirror of
https://github.com/Icinga/icinga2.git
synced 2025-08-20 17:18:18 +02:00
This adds a global fixture that can parse an additional argument to the test executables (`--generate_ctest_config`). When run by CMake during build, this generates a CTest script containing all the tests and their properties. An additional decorator, that defines CTest properties for a test case or suite that will be added to the tests during config generation. This version needs no hacks, no huge CMake scripts, just a bit of additional C++ code that iterates over all test-cases and collects the information CTest needs. One caveat is still that this does not work with cross-compilation, which probably isn't an issue to begin with, but there are also ways to fix that if necessary.
43 lines
1.4 KiB
C++
43 lines
1.4 KiB
C++
/* Icinga 2 | (c) 2025 Icinga GmbH | GPLv2+ */
|
|
|
|
#include "remote-certificate-fixture.hpp"
|
|
#include "test/test-ctest.hpp"
|
|
|
|
using namespace icinga;
|
|
|
|
const boost::filesystem::path CertificateFixture::m_PersistentCertsDir =
|
|
boost::filesystem::current_path() / "persistent" / "certs";
|
|
|
|
BOOST_AUTO_TEST_SUITE(remote_certs_fixture)
|
|
|
|
/**
|
|
* Recursively removes the directory that contains the test certificates.
|
|
*
|
|
* This needs to be done once initially to prepare the directory, in case there are any
|
|
* left-overs from previous test runs, and once after all tests using the certificates
|
|
* have been completed.
|
|
*
|
|
* This dependency is expressed as a CTest fixture and not a boost-test one, because that
|
|
* is the only way to have persistency between individual test-cases with CTest.
|
|
*/
|
|
static void cleanupPersistentCertificateDir()
|
|
{
|
|
if (boost::filesystem::exists(CertificateFixture::m_PersistentCertsDir)) {
|
|
boost::filesystem::remove_all(CertificateFixture::m_PersistentCertsDir);
|
|
}
|
|
}
|
|
|
|
BOOST_FIXTURE_TEST_CASE(prepare_directory, ConfigurationDataDirFixture, *CTestProperties("FIXTURES_SETUP ssl_certs"))
|
|
{
|
|
// Remove any existing left-overs of the persistent certificate directory from a previous
|
|
// test run.
|
|
cleanupPersistentCertificateDir();
|
|
}
|
|
|
|
BOOST_FIXTURE_TEST_CASE(cleanup_certs, ConfigurationDataDirFixture, *CTestProperties("FIXTURES_CLEANUP ssl_certs"))
|
|
{
|
|
cleanupPersistentCertificateDir();
|
|
}
|
|
|
|
BOOST_AUTO_TEST_SUITE_END()
|