From 5cc140d60cd8c798b344dc64b923b6047b53ccb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Wed, 7 Nov 2018 19:10:26 +0100 Subject: [PATCH] TextureTools: make the test files properly accessible on an iOS device. Testing exclusively on the iOS Simulator isn't a good thing after all. --- src/Magnum/TextureTools/Test/CMakeLists.txt | 9 +++++++- .../TextureTools/Test/DistanceFieldGLTest.cpp | 21 ++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/Magnum/TextureTools/Test/CMakeLists.txt b/src/Magnum/TextureTools/Test/CMakeLists.txt index 3aabdefb3..4c4328279 100644 --- a/src/Magnum/TextureTools/Test/CMakeLists.txt +++ b/src/Magnum/TextureTools/Test/CMakeLists.txt @@ -59,7 +59,14 @@ if(BUILD_GL_TESTS) ${CMAKE_CURRENT_BINARY_DIR}/configure.h) endif() - corrade_add_test(TextureToolsDistanceFieldGLTest DistanceFieldGLTest.cpp + set(TextureToolsDistanceFieldGLTest_SRCS DistanceFieldGLTest.cpp) + if(CORRADE_TARGET_IOS) + # TODO: do this in a generic way in corrade_add_test() + set_source_files_properties(DistanceFieldGLTestFiles PROPERTIES + MACOSX_PACKAGE_LOCATION Resources) + list(APPEND TextureToolsDistanceFieldGLTest_SRCS DistanceFieldGLTestFiles) + endif() + corrade_add_test(TextureToolsDistanceFieldGLTest ${TextureToolsDistanceFieldGLTest_SRCS} LIBRARIES MagnumTextureTools MagnumGL MagnumTrade MagnumDebugTools MagnumOpenGLTester FILES DistanceFieldGLTestFiles/input.tga diff --git a/src/Magnum/TextureTools/Test/DistanceFieldGLTest.cpp b/src/Magnum/TextureTools/Test/DistanceFieldGLTest.cpp index aa3e945c1..0dac20b3a 100644 --- a/src/Magnum/TextureTools/Test/DistanceFieldGLTest.cpp +++ b/src/Magnum/TextureTools/Test/DistanceFieldGLTest.cpp @@ -58,6 +58,7 @@ struct DistanceFieldGLTest: GL::OpenGLTester { private: PluginManager::Manager _manager; + std::string _testDir; }; DistanceFieldGLTest::DistanceFieldGLTest() { @@ -73,6 +74,20 @@ DistanceFieldGLTest::DistanceFieldGLTest() { CORRADE_INTERNAL_ASSERT(_manager.load(ANYIMAGEIMPORTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); CORRADE_INTERNAL_ASSERT(_manager.load(TGAIMPORTER_PLUGIN_FILENAME) & PluginManager::LoadState::Loaded); #endif + + #ifdef CORRADE_TARGET_APPLE + if(Utility::Directory::isSandboxed() + #if defined(CORRADE_TARGET_IOS) && defined(CORRADE_TESTSUITE_TARGET_XCTEST) + /** @todo Fix this once I persuade CMake to run XCTest tests properly */ + && std::getenv("SIMULATOR_UDID") + #endif + ) { + _testDir = Utility::Directory::join(Utility::Directory::path(Utility::Directory::executableLocation()), "DistanceFieldGLTestFiles"); + } else + #endif + { + _testDir = DISTANCEFIELDGLTEST_FILES_DIR; + } } void DistanceFieldGLTest::test() { @@ -80,7 +95,7 @@ void DistanceFieldGLTest::test() { if(!(importer = _manager.loadAndInstantiate("TgaImporter"))) CORRADE_SKIP("TgaImporter plugin not found."); - CORRADE_VERIFY(importer->openFile(Utility::Directory::join(DISTANCEFIELDGLTEST_FILES_DIR, "input.tga"))); + CORRADE_VERIFY(importer->openFile(Utility::Directory::join(_testDir, "input.tga"))); CORRADE_COMPARE(importer->image2DCount(), 1); Containers::Optional inputImage = importer->image2D(0); CORRADE_VERIFY(inputImage); @@ -182,7 +197,7 @@ void DistanceFieldGLTest::test() { #endif CORRADE_COMPARE_WITH(*actualOutputImage, - Utility::Directory::join(DISTANCEFIELDGLTEST_FILES_DIR, "output.tga"), + Utility::Directory::join(_testDir, "output.tga"), DebugTools::CompareImageToFile{_manager}); } @@ -192,7 +207,7 @@ void DistanceFieldGLTest::benchmark() { if(!(importer = _manager.loadAndInstantiate("TgaImporter"))) CORRADE_SKIP("TgaImporter plugin not found."); - CORRADE_VERIFY(importer->openFile(Utility::Directory::join(DISTANCEFIELDGLTEST_FILES_DIR, "input.tga"))); + CORRADE_VERIFY(importer->openFile(Utility::Directory::join(_testDir, "input.tga"))); CORRADE_COMPARE(importer->image2DCount(), 1); Containers::Optional inputImage = importer->image2D(0); CORRADE_VERIFY(inputImage);