Browse Source

DebugTools: don't try to use system plugin dirs in CompareImage test.

Due to that, all the tests got skipped on the CI and moreover when ABI
was broken, tests were failing hard due to ABI mismatches with system
installed plugins. No good.

Some variants still need to access the system plugin dir (such as checks
for compressed data), but those are minimal. Sanitized them nevertheless
so a broken system-installed plugin doesn't break the test.
audio-import
Vladimír Vondruš 7 years ago
parent
commit
8357442ad7
  1. 251
      src/Magnum/DebugTools/Test/CompareImageTest.cpp

251
src/Magnum/DebugTools/Test/CompareImageTest.cpp

@ -77,8 +77,6 @@ struct CompareImageTest: TestSuite::Tester {
void imageError();
void imageFile();
void imageFileError();
void imageFileExternalPluginManager();
void imageFileExternalPluginManagerError();
void imageFilePluginLoadFailed();
void imageFileActualLoadFailed();
void imageFileExpectedLoadFailed();
@ -86,15 +84,11 @@ struct CompareImageTest: TestSuite::Tester {
void imageFileExpectedIsCompressed();
void imageToFile();
void imageToFileError();
void imageToFileExternalPluginManager();
void imageToFileExternalPluginManagerError();
void imageToFilePluginLoadFailed();
void imageToFileExpectedLoadFailed();
void imageToFileExpectedIsCompressed();
void fileToImage();
void fileToImageError();
void fileToImageExternalPluginManager();
void fileToImageExternalPluginManagerError();
void fileToImagePluginLoadFailed();
void fileToImageActualLoadFailed();
void fileToImageActualIsCompressed();
@ -129,42 +123,48 @@ CompareImageTest::CompareImageTest() {
&CompareImageTest::compareAboveMeanThreshold,
&CompareImageTest::image,
&CompareImageTest::imageError,
&CompareImageTest::imageFile,
&CompareImageTest::imageFileError});
&CompareImageTest::imageError});
addTests({&CompareImageTest::imageFileExternalPluginManager,
&CompareImageTest::imageFileExternalPluginManagerError},
addTests({&CompareImageTest::imageFile,
&CompareImageTest::imageFileError},
&CompareImageTest::setupExternalPluginManager,
&CompareImageTest::teardownExternalPluginManager);
addTests({&CompareImageTest::imageFilePluginLoadFailed,
&CompareImageTest::imageFileActualLoadFailed,
&CompareImageTest::imageFileExpectedLoadFailed,
&CompareImageTest::imageFileActualIsCompressed,
&CompareImageTest::imageFileExpectedIsCompressed,
&CompareImageTest::imageToFile,
&CompareImageTest::imageToFileError});
addTests({&CompareImageTest::imageFilePluginLoadFailed});
addTests({&CompareImageTest::imageToFileExternalPluginManager,
&CompareImageTest::imageToFileExternalPluginManagerError},
addTests({&CompareImageTest::imageFileActualLoadFailed,
&CompareImageTest::imageFileExpectedLoadFailed},
&CompareImageTest::setupExternalPluginManager,
&CompareImageTest::teardownExternalPluginManager);
addTests({&CompareImageTest::imageToFilePluginLoadFailed,
&CompareImageTest::imageToFileExpectedLoadFailed,
&CompareImageTest::imageToFileExpectedIsCompressed,
&CompareImageTest::fileToImage,
&CompareImageTest::fileToImageError});
addTests({&CompareImageTest::imageFileActualIsCompressed,
&CompareImageTest::imageFileExpectedIsCompressed});
addTests({&CompareImageTest::fileToImageExternalPluginManager,
&CompareImageTest::fileToImageExternalPluginManagerError},
addTests({&CompareImageTest::imageToFile,
&CompareImageTest::imageToFileError},
&CompareImageTest::setupExternalPluginManager,
&CompareImageTest::teardownExternalPluginManager);
addTests({&CompareImageTest::fileToImagePluginLoadFailed,
&CompareImageTest::fileToImageActualLoadFailed,
&CompareImageTest::fileToImageActualIsCompressed});
addTests({&CompareImageTest::imageToFilePluginLoadFailed});
addTests({&CompareImageTest::imageToFileExpectedLoadFailed},
&CompareImageTest::setupExternalPluginManager,
&CompareImageTest::teardownExternalPluginManager);
addTests({&CompareImageTest::imageToFileExpectedIsCompressed});
addTests({&CompareImageTest::fileToImage,
&CompareImageTest::fileToImageError},
&CompareImageTest::setupExternalPluginManager,
&CompareImageTest::teardownExternalPluginManager);
addTests({&CompareImageTest::fileToImagePluginLoadFailed});
addTests({&CompareImageTest::fileToImageActualLoadFailed},
&CompareImageTest::setupExternalPluginManager,
&CompareImageTest::teardownExternalPluginManager);
addTests({&CompareImageTest::fileToImageActualIsCompressed});
}
const Float ActualRedData[] = {
@ -474,7 +474,7 @@ void CompareImageTest::compareAboveMeanThreshold() {
}
void CompareImageTest::setupExternalPluginManager() {
_manager.emplace();
_manager.emplace("nonexistent");
/* Load the plugin directly from the build tree. Otherwise it's either
static and already loaded or not present in the build tree */
#if defined(ANYIMAGEIMPORTER_PLUGIN_FILENAME) && defined(TGAIMPORTER_PLUGIN_FILENAME)
@ -513,42 +513,6 @@ void CompareImageTest::imageError() {
}
void CompareImageTest::imageFile() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
}
CORRADE_COMPARE_WITH(
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageActual.tga"),
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageExpected.tga"),
(CompareImageFile{40.0f, 20.0f}));
}
void CompareImageTest::imageFileError() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
}
std::stringstream out;
{
TestSuite::Comparator<CompareImageFile> compare{nullptr, 20.0f, 10.0f};
CORRADE_VERIFY(!compare(
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageActual.tga"),
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageExpected.tga")));
Debug d{&out, Debug::Flag::DisableColors};
compare.printErrorMessage(d, "a", "b");
}
CORRADE_COMPARE(out.str(), ImageCompareError);
}
void CompareImageTest::imageFileExternalPluginManager() {
if(_manager->loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
_manager->loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
@ -559,7 +523,7 @@ void CompareImageTest::imageFileExternalPluginManager() {
(CompareImageFile{*_manager, 40.0f, 20.0f}));
}
void CompareImageTest::imageFileExternalPluginManagerError() {
void CompareImageTest::imageFileError() {
if(_manager->loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
_manager->loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
@ -598,17 +562,14 @@ void CompareImageTest::imageFilePluginLoadFailed() {
}
void CompareImageTest::imageFileActualLoadFailed() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound)
if(_manager->loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
_manager->loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
}
std::stringstream out;
{
TestSuite::Comparator<CompareImageFile> compare{nullptr, 20.0f, 10.0f};
TestSuite::Comparator<CompareImageFile> compare{&*_manager, 20.0f, 10.0f};
CORRADE_VERIFY(!compare("nonexistent.tga",
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageExpected.tga")));
Debug d{&out, Debug::Flag::DisableColors};
@ -619,17 +580,14 @@ void CompareImageTest::imageFileActualLoadFailed() {
}
void CompareImageTest::imageFileExpectedLoadFailed() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound)
if(_manager->loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
_manager->loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
}
std::stringstream out;
{
TestSuite::Comparator<CompareImageFile> compare{nullptr, 20.0f, 10.0f};
TestSuite::Comparator<CompareImageFile> compare{&*_manager, 20.0f, 10.0f};
CORRADE_VERIFY(!compare(
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageActual.tga"),
"nonexistent.tga"));
@ -641,17 +599,15 @@ void CompareImageTest::imageFileExpectedLoadFailed() {
}
void CompareImageTest::imageFileActualIsCompressed() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("DdsImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or DdsImporter plugins not found.");
}
if(manager.load("AnyImageImporter") < PluginManager::LoadState::Loaded ||
manager.load("DdsImporter") < PluginManager::LoadState::Loaded)
CORRADE_SKIP("AnyImageImporter or DdsImporter plugins can't be loaded.");
std::stringstream out;
{
TestSuite::Comparator<CompareImageFile> compare{nullptr, 20.0f, 10.0f};
TestSuite::Comparator<CompareImageFile> compare{&manager, 20.0f, 10.0f};
CORRADE_VERIFY(!compare(
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageCompressed.dds"),
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageExpected.tga")));
@ -663,17 +619,15 @@ void CompareImageTest::imageFileActualIsCompressed() {
}
void CompareImageTest::imageFileExpectedIsCompressed() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("DdsImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or DdsImporter plugins not found.");
}
if(manager.load("AnyImageImporter") < PluginManager::LoadState::Loaded ||
manager.load("DdsImporter") < PluginManager::LoadState::Loaded)
CORRADE_SKIP("AnyImageImporter or DdsImporter plugins can't be loaded.");
std::stringstream out;
{
TestSuite::Comparator<CompareImageFile> compare{nullptr, 20.0f, 10.0f};
TestSuite::Comparator<CompareImageFile> compare{&manager, 20.0f, 10.0f};
CORRADE_VERIFY(!compare(
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageActual.tga"),
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageCompressed.dds")));
@ -686,50 +640,17 @@ void CompareImageTest::imageFileExpectedIsCompressed() {
}
void CompareImageTest::imageToFile() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
}
CORRADE_COMPARE_WITH(ActualRgb,
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageExpected.tga"),
(CompareImageToFile{40.0f, 20.0f}));
}
void CompareImageTest::imageToFileError() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
}
std::stringstream out;
{
TestSuite::Comparator<CompareImageToFile> compare{nullptr, 20.0f, 10.0f};
CORRADE_VERIFY(!compare(ActualRgb,
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageExpected.tga")));
Debug d{&out, Debug::Flag::DisableColors};
compare.printErrorMessage(d, "a", "b");
}
CORRADE_COMPARE(out.str(), ImageCompareError);
}
void CompareImageTest::imageToFileExternalPluginManager() {
if(_manager->loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
_manager->loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
CORRADE_COMPARE_WITH(ActualRgb,
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageExpected.tga"),
(CompareImageToFile{*_manager, 40.0f, 20.0f}));
}
void CompareImageTest::imageToFileExternalPluginManagerError() {
void CompareImageTest::imageToFileError() {
if(_manager->loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
_manager->loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
@ -766,17 +687,14 @@ void CompareImageTest::imageToFilePluginLoadFailed() {
}
void CompareImageTest::imageToFileExpectedLoadFailed() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound)
if(_manager->loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
_manager->loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
}
std::stringstream out;
{
TestSuite::Comparator<CompareImageToFile> compare{nullptr, 20.0f, 10.0f};
TestSuite::Comparator<CompareImageToFile> compare{&*_manager, 20.0f, 10.0f};
CORRADE_VERIFY(!compare(ActualRgb, "nonexistent.tga"));
Debug d{&out, Debug::Flag::DisableColors};
compare.printErrorMessage(d, "a", "b");
@ -786,17 +704,15 @@ void CompareImageTest::imageToFileExpectedLoadFailed() {
}
void CompareImageTest::imageToFileExpectedIsCompressed() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("DdsImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or DdsImporter plugins not found.");
}
if(manager.load("AnyImageImporter") < PluginManager::LoadState::Loaded ||
manager.load("DdsImporter") < PluginManager::LoadState::Loaded)
CORRADE_SKIP("AnyImageImporter or DdsImporter plugins can't be loaded.");
std::stringstream out;
{
TestSuite::Comparator<CompareImageToFile> compare{nullptr, 20.0f, 10.0f};
TestSuite::Comparator<CompareImageToFile> compare{&manager, 20.0f, 10.0f};
CORRADE_VERIFY(!compare(ActualRgb, Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageCompressed.dds")));
Debug d{&out, Debug::Flag::DisableColors};
compare.printErrorMessage(d, "a", "b");
@ -807,42 +723,6 @@ void CompareImageTest::imageToFileExpectedIsCompressed() {
}
void CompareImageTest::fileToImage() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
}
CORRADE_COMPARE_WITH(
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageActual.tga"),
ExpectedRgb,
(CompareFileToImage{40.0f, 20.0f}));
}
void CompareImageTest::fileToImageError() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
}
std::stringstream out;
{
TestSuite::Comparator<CompareFileToImage> compare{nullptr, 20.0f, 10.0f};
CORRADE_VERIFY(!compare(
Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageActual.tga"),
ExpectedRgb));
Debug d{&out, Debug::Flag::DisableColors};
compare.printErrorMessage(d, "a", "b");
}
CORRADE_COMPARE(out.str(), ImageCompareError);
}
void CompareImageTest::fileToImageExternalPluginManager() {
if(_manager->loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
_manager->loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
@ -853,7 +733,7 @@ void CompareImageTest::fileToImageExternalPluginManager() {
(CompareFileToImage{*_manager, 40.0f, 20.0f}));
}
void CompareImageTest::fileToImageExternalPluginManagerError() {
void CompareImageTest::fileToImageError() {
if(_manager->loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
_manager->loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
@ -892,17 +772,14 @@ void CompareImageTest::fileToImagePluginLoadFailed() {
}
void CompareImageTest::fileToImageActualLoadFailed() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound)
if(_manager->loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
_manager->loadState("TgaImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found.");
}
std::stringstream out;
{
TestSuite::Comparator<CompareFileToImage> compare{nullptr, 20.0f, 10.0f};
TestSuite::Comparator<CompareFileToImage> compare{&*_manager, 20.0f, 10.0f};
CORRADE_VERIFY(!compare("nonexistent.tga", ExpectedRgb));
Debug d{&out, Debug::Flag::DisableColors};
compare.printErrorMessage(d, "a", "b");
@ -912,17 +789,15 @@ void CompareImageTest::fileToImageActualLoadFailed() {
}
void CompareImageTest::fileToImageActualIsCompressed() {
{
PluginManager::Manager<Trade::AbstractImporter> manager;
if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound ||
manager.loadState("DdsImporter") == PluginManager::LoadState::NotFound)
CORRADE_SKIP("AnyImageImporter or DdsImporter plugins not found.");
}
if(manager.load("AnyImageImporter") < PluginManager::LoadState::Loaded ||
manager.load("DdsImporter") < PluginManager::LoadState::Loaded)
CORRADE_SKIP("AnyImageImporter or DdsImporter plugins can't be loaded.");
std::stringstream out;
{
TestSuite::Comparator<CompareFileToImage> compare{nullptr, 20.0f, 10.0f};
TestSuite::Comparator<CompareFileToImage> compare{&manager, 20.0f, 10.0f};
CORRADE_VERIFY(!compare(Utility::Directory::join(DEBUGTOOLS_TEST_DIR, "CompareImageCompressed.dds"), ExpectedRgb));
Debug d{&out, Debug::Flag::DisableColors};
compare.printErrorMessage(d, "a", "b");

Loading…
Cancel
Save