From 8357442ad7164a7fdff4bcb9f13dc44a5cdc1842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sat, 9 Mar 2019 16:32:20 +0100 Subject: [PATCH] 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. --- .../DebugTools/Test/CompareImageTest.cpp | 267 +++++------------- 1 file changed, 71 insertions(+), 196 deletions(-) diff --git a/src/Magnum/DebugTools/Test/CompareImageTest.cpp b/src/Magnum/DebugTools/Test/CompareImageTest.cpp index 5a9e82307..d5d7f5efc 100644 --- a/src/Magnum/DebugTools/Test/CompareImageTest.cpp +++ b/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 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 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 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 manager; - if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound || - manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound) - CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found."); - } + 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 compare{nullptr, 20.0f, 10.0f}; + TestSuite::Comparator 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 manager; - if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound || - manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound) - CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found."); - } + 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 compare{nullptr, 20.0f, 10.0f}; + TestSuite::Comparator 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 manager; - if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound || - manager.loadState("DdsImporter") == PluginManager::LoadState::NotFound) - CORRADE_SKIP("AnyImageImporter or DdsImporter plugins not found."); - } + PluginManager::Manager manager; + 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 compare{nullptr, 20.0f, 10.0f}; + TestSuite::Comparator 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 manager; - if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound || - manager.loadState("DdsImporter") == PluginManager::LoadState::NotFound) - CORRADE_SKIP("AnyImageImporter or DdsImporter plugins not found."); - } + PluginManager::Manager manager; + 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 compare{nullptr, 20.0f, 10.0f}; + TestSuite::Comparator 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 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 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 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 manager; - if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound || - manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound) - CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found."); - } + 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 compare{nullptr, 20.0f, 10.0f}; + TestSuite::Comparator 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 manager; - if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound || - manager.loadState("DdsImporter") == PluginManager::LoadState::NotFound) - CORRADE_SKIP("AnyImageImporter or DdsImporter plugins not found."); - } + PluginManager::Manager manager; + 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 compare{nullptr, 20.0f, 10.0f}; + TestSuite::Comparator 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 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 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 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 manager; - if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound || - manager.loadState("TgaImporter") == PluginManager::LoadState::NotFound) - CORRADE_SKIP("AnyImageImporter or TgaImporter plugins not found."); - } + 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 compare{nullptr, 20.0f, 10.0f}; + TestSuite::Comparator 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 manager; - if(manager.loadState("AnyImageImporter") == PluginManager::LoadState::NotFound || - manager.loadState("DdsImporter") == PluginManager::LoadState::NotFound) - CORRADE_SKIP("AnyImageImporter or DdsImporter plugins not found."); - } + PluginManager::Manager manager; + 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 compare{nullptr, 20.0f, 10.0f}; + TestSuite::Comparator 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");