From 719591a2479a3b0fb0005b5cca0f4b8f4e2a8420 Mon Sep 17 00:00:00 2001 From: Malte Langkabel Date: Mon, 20 Jan 2020 11:47:26 +0100 Subject: [PATCH] test: added test for fetching dependencies from gradle config (#897) --- src/lib_java/utility/utilityGradle.cpp | 6 +- src/test/CMakeLists.txt | 2 +- src/test/UtilityGradleTestSuite.cpp | 128 ++++++++++++++++++------- 3 files changed, 97 insertions(+), 39 deletions(-) diff --git a/src/lib_java/utility/utilityGradle.cpp b/src/lib_java/utility/utilityGradle.cpp index e3906458..bc7f5c40 100644 --- a/src/lib_java/utility/utilityGradle.cpp +++ b/src/lib_java/utility/utilityGradle.cpp @@ -74,8 +74,10 @@ std::vector gradleGetAllSourceDirectories( L"The following error occurred while executing a Gradle command:\n\n" + utility::decodeFromUtf8(utility::replace(output, "\r\n", "\n")); MessageStatus(dialogMessage, true, false).dispatch(); - Application::getInstance()->handleDialog(dialogMessage); - + if (Application::getInstance()) + { + Application::getInstance()->handleDialog(dialogMessage); + } return std::vector(); } diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index f35cd0f9..d2b42f9b 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -37,7 +37,7 @@ add_files( StorageTestSuite.cpp TaskSchedulerTestSuite.cpp TextAccessTestSuite.cpp -# UtilityGradleTestSuite.cpp + UtilityGradleTestSuite.cpp UtilityMavenTestSuite.cpp UtilityStringTestSuite.cpp UtilityTestSuite.cpp diff --git a/src/test/UtilityGradleTestSuite.cpp b/src/test/UtilityGradleTestSuite.cpp index b99966da..5964acb7 100644 --- a/src/test/UtilityGradleTestSuite.cpp +++ b/src/test/UtilityGradleTestSuite.cpp @@ -3,39 +3,95 @@ #include "language_packages.h" #if BUILD_JAVA_LANGUAGE_PACKAGE -//# ifdef WIN32 -// -//# include "FilePath.h" -//# include "utility.h" -//# include "utilityGradle.h" -// -// TEST_CASE("gradle wrapper detects source directories of simple projects") -//{ -// std::vector result = utility::gradleGetAllSourceDirectories( -// FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project"), false); -// -// REQUIRE(utility::containsElement( -// result, -// FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project/src/main/java").makeAbsolute())); -// -// REQUIRE(!utility::containsElement( -// result, -// FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project/src/test/java").makeAbsolute())); -//} -// -// TEST_CASE("gradle wrapper detects source and test directories of simple projects") -//{ -// std::vector result = utility::gradleGetAllSourceDirectories( -// FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project"), true); -// -// REQUIRE(utility::containsElement( -// result, -// FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project/src/main/java").makeAbsolute())); -// -// REQUIRE(utility::containsElement( -// result, -// FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project/src/test/java").makeAbsolute())); -//} -// -//# endif // WIN32 -#endif // BUILD_JAVA_LANGUAGE_PACKAGE +# ifdef WIN32 + +# include "FilePath.h" +# include "FileSystem.h" +# include "utility.h" +# include "utilityGradle.h" + +FilePath tmpFolder = FilePath(L"data/UtilityGradleTestSuite/tmp"); + +void cleanup() +{ + if (tmpFolder.recheckExists()) + { + for (const FilePath& path: FileSystem::getFilePathsFromDirectory(tmpFolder)) + { + FileSystem::remove(path); + } + FileSystem::remove(tmpFolder); + } +} + +TEST_CASE("gradle wrapper detects source directories of simple projects") +{ + std::vector result = utility::gradleGetAllSourceDirectories( + FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project"), false); + + REQUIRE(utility::containsElement( + result, + FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project/src/main/java").makeAbsolute())); + + REQUIRE(!utility::containsElement( + result, + FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project/src/test/java").makeAbsolute())); +} + +TEST_CASE("gradle wrapper detects source and test directories of simple projects") +{ + std::vector result = utility::gradleGetAllSourceDirectories( + FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project"), true); + + REQUIRE(utility::containsElement( + result, + FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project/src/main/java").makeAbsolute())); + + REQUIRE(utility::containsElement( + result, + FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project/src/test/java").makeAbsolute())); +} + +TEST_CASE("gradle wrapper detects source dependencies of simple projects") +{ + std::vector requiredDependencies = {L"joda-time-2.2.jar"}; + + cleanup(); + REQUIRE(utility::gradleCopyDependencies( + FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project"), + tmpFolder.makeAbsolute(), + false)); + + const std::vector copiedDependencies = FileSystem::getFilePathsFromDirectory(tmpFolder); + + for (const std::wstring requiredDependency: requiredDependencies) + { + REQUIRE(utility::containsElement( + copiedDependencies, tmpFolder.getConcatenated(requiredDependency))); + } + cleanup(); +} + +TEST_CASE("gradle wrapper detects source and test dependencies of simple projects") +{ + std::vector requiredDependencies = { + L"joda-time-2.2.jar", L"hamcrest-core-1.3.jar", L"junit-4.12.jar"}; + + cleanup(); + REQUIRE(utility::gradleCopyDependencies( + FilePath(L"data/UtilityGradleTestSuite/simple_gradle_project"), + tmpFolder.makeAbsolute(), + true)); + + const std::vector copiedDependencies = FileSystem::getFilePathsFromDirectory(tmpFolder); + + for (const std::wstring requiredDependency: requiredDependencies) + { + REQUIRE(utility::containsElement( + copiedDependencies, tmpFolder.getConcatenated(requiredDependency))); + } + cleanup(); +} + +# endif // WIN32 +#endif // BUILD_JAVA_LANGUAGE_PACKAGE