From 978cf4f4eda601dcdd797054b455eda5330e34ba Mon Sep 17 00:00:00 2001 From: mlangkabel Date: Mon, 8 Jan 2018 16:38:31 +0100 Subject: [PATCH] logic: fixed Maven setup not working for project without sub-modules --- .../nested_maven_project/module_1/pom.xml | 25 ++++ .../src/main/java/com/mycompany/app/App.java | 13 ++ .../test/java/com/mycompany/app/AppTest.java | 38 ++++++ .../nested_maven_project/module_2/pom.xml | 25 ++++ .../src/main/java/com/mycompany/app/App.java | 13 ++ .../test/java/com/mycompany/app/AppTest.java | 38 ++++++ .../nested_maven_project/pom.xml | 15 +++ .../simple_maven_project/pom.xml | 18 +++ .../src/main/java/com/mycompany/app/App.java | 13 ++ .../test/java/com/mycompany/app/AppTest.java | 38 ++++++ bin/test/data/log/test_log.txt | 76 ++++++++++++ src/lib_java/utility/utilityMaven.cpp | 2 +- src/test/CMakeLists.txt | 1 + src/test/UtilityMavenTestSuite.h | 115 ++++++++++++++++++ 14 files changed, 429 insertions(+), 1 deletion(-) create mode 100644 bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/pom.xml create mode 100644 bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/src/main/java/com/mycompany/app/App.java create mode 100644 bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/src/test/java/com/mycompany/app/AppTest.java create mode 100644 bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/pom.xml create mode 100644 bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/src/main/java/com/mycompany/app/App.java create mode 100644 bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/src/test/java/com/mycompany/app/AppTest.java create mode 100644 bin/test/data/UtilityMavenTestSuite/nested_maven_project/pom.xml create mode 100644 bin/test/data/UtilityMavenTestSuite/simple_maven_project/pom.xml create mode 100644 bin/test/data/UtilityMavenTestSuite/simple_maven_project/src/main/java/com/mycompany/app/App.java create mode 100644 bin/test/data/UtilityMavenTestSuite/simple_maven_project/src/test/java/com/mycompany/app/AppTest.java create mode 100644 src/test/UtilityMavenTestSuite.h diff --git a/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/pom.xml b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/pom.xml new file mode 100644 index 00000000..9866749d --- /dev/null +++ b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/pom.xml @@ -0,0 +1,25 @@ + + 4.0.0 + + + nested_maven_project + com.mycompany.app + 1.0-SNAPSHOT + + + com.mycompany.app + module_1 + jar + 1.0-SNAPSHOT + module_1 + http://maven.apache.org + + + junit + junit + 3.8.1 + test + + + diff --git a/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/src/main/java/com/mycompany/app/App.java b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/src/main/java/com/mycompany/app/App.java new file mode 100644 index 00000000..77cf3e05 --- /dev/null +++ b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/src/main/java/com/mycompany/app/App.java @@ -0,0 +1,13 @@ +package com.mycompany.app; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/src/test/java/com/mycompany/app/AppTest.java b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/src/test/java/com/mycompany/app/AppTest.java new file mode 100644 index 00000000..33559900 --- /dev/null +++ b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/src/test/java/com/mycompany/app/AppTest.java @@ -0,0 +1,38 @@ +package com.mycompany.app; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/pom.xml b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/pom.xml new file mode 100644 index 00000000..98fc188a --- /dev/null +++ b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/pom.xml @@ -0,0 +1,25 @@ + + 4.0.0 + + + nested_maven_project + com.mycompany.app + 1.0-SNAPSHOT + + + com.mycompany.app + module_2 + jar + 1.0-SNAPSHOT + module_1 + http://maven.apache.org + + + junit + junit + 3.8.1 + test + + + diff --git a/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/src/main/java/com/mycompany/app/App.java b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/src/main/java/com/mycompany/app/App.java new file mode 100644 index 00000000..77cf3e05 --- /dev/null +++ b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/src/main/java/com/mycompany/app/App.java @@ -0,0 +1,13 @@ +package com.mycompany.app; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/src/test/java/com/mycompany/app/AppTest.java b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/src/test/java/com/mycompany/app/AppTest.java new file mode 100644 index 00000000..33559900 --- /dev/null +++ b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/src/test/java/com/mycompany/app/AppTest.java @@ -0,0 +1,38 @@ +package com.mycompany.app; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/bin/test/data/UtilityMavenTestSuite/nested_maven_project/pom.xml b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/pom.xml new file mode 100644 index 00000000..e7e672a8 --- /dev/null +++ b/bin/test/data/UtilityMavenTestSuite/nested_maven_project/pom.xml @@ -0,0 +1,15 @@ + + 4.0.0 + + module_1 + module_2 + + + com.mycompany.app + nested_maven_project + pom + 1.0-SNAPSHOT + nested_maven_project + http://maven.apache.org + diff --git a/bin/test/data/UtilityMavenTestSuite/simple_maven_project/pom.xml b/bin/test/data/UtilityMavenTestSuite/simple_maven_project/pom.xml new file mode 100644 index 00000000..88b3fe28 --- /dev/null +++ b/bin/test/data/UtilityMavenTestSuite/simple_maven_project/pom.xml @@ -0,0 +1,18 @@ + + 4.0.0 + com.mycompany.app + my-app + jar + 1.0-SNAPSHOT + my-app + http://maven.apache.org + + + junit + junit + 3.8.1 + test + + + diff --git a/bin/test/data/UtilityMavenTestSuite/simple_maven_project/src/main/java/com/mycompany/app/App.java b/bin/test/data/UtilityMavenTestSuite/simple_maven_project/src/main/java/com/mycompany/app/App.java new file mode 100644 index 00000000..77cf3e05 --- /dev/null +++ b/bin/test/data/UtilityMavenTestSuite/simple_maven_project/src/main/java/com/mycompany/app/App.java @@ -0,0 +1,13 @@ +package com.mycompany.app; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/bin/test/data/UtilityMavenTestSuite/simple_maven_project/src/test/java/com/mycompany/app/AppTest.java b/bin/test/data/UtilityMavenTestSuite/simple_maven_project/src/test/java/com/mycompany/app/AppTest.java new file mode 100644 index 00000000..33559900 --- /dev/null +++ b/bin/test/data/UtilityMavenTestSuite/simple_maven_project/src/test/java/com/mycompany/app/AppTest.java @@ -0,0 +1,38 @@ +package com.mycompany.app; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/bin/test/data/log/test_log.txt b/bin/test/data/log/test_log.txt index 9ddd61bb..ba04cdc2 100644 --- a/bin/test/data/log/test_log.txt +++ b/bin/test/data/log/test_log.txt @@ -29,6 +29,82 @@ TextAccess.cpp WARNING: Tried to access index 10. Maximum index is 8 TextAccess.cpp WARNING: Tried to access index 10. Maximum index is 8 TextAccess.cpp WARNING: Line numbers start with one, is 0 TextAccess.cpp WARNING: Line numbers start with one, is 0 +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> sourceDirectory". +utilityMaven.cpp INFO: Found 1 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/simple_maven_project/src/main/java". +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> sourceDirectory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> directory". +utilityMaven.cpp INFO: Found 1 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/simple_maven_project/target/generated-sources". +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> directory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Found 1 of 2 directories on system. +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> sourceDirectory". +utilityMaven.cpp INFO: Found 1 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/simple_maven_project/src/main/java". +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> sourceDirectory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> directory". +utilityMaven.cpp INFO: Found 1 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/simple_maven_project/target/generated-sources". +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> directory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> testSourceDirectory". +utilityMaven.cpp INFO: Found 1 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/simple_maven_project/src/test/java". +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> testSourceDirectory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> directory". +utilityMaven.cpp INFO: Found 1 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/simple_maven_project/target/generated-test-sources". +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> directory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Found 2 of 4 directories on system. +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> sourceDirectory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> sourceDirectory". +utilityMaven.cpp INFO: Found 3 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/src/main/java". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/src/main/java". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/src/main/java". +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> directory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> directory". +utilityMaven.cpp INFO: Found 3 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/target/generated-sources". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/target/generated-sources". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/target/generated-sources". +utilityMaven.cpp INFO: Found 2 of 6 directories on system. +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> sourceDirectory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> sourceDirectory". +utilityMaven.cpp INFO: Found 3 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/src/main/java". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/src/main/java". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/src/main/java". +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> directory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> directory". +utilityMaven.cpp INFO: Found 3 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/target/generated-sources". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/target/generated-sources". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/target/generated-sources". +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> testSourceDirectory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> testSourceDirectory". +utilityMaven.cpp INFO: Found 3 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/src/test/java". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/src/test/java". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/src/test/java". +utilityMaven.cpp INFO: Fetching source directories in "project -> build -> directory". +utilityMaven.cpp INFO: Found 0 source directories. +utilityMaven.cpp INFO: Fetching source directories in "projects -> project -> build -> directory". +utilityMaven.cpp INFO: Found 3 source directories. +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_2/target/generated-test-sources". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/module_1/target/generated-test-sources". +utilityMaven.cpp INFO: Found directory "C:/sourcetrail/sourcetrail/bin/test/data/UtilityMavenTestSuite/nested_maven_project/target/generated-test-sources". +utilityMaven.cpp INFO: Found 4 of 12 directories on system. INFO: Indexer - indexing source file: input.cc INFO: Indexer - using language standard 1.8 INFO: Indexer - indexing source file: input.cc diff --git a/src/lib_java/utility/utilityMaven.cpp b/src/lib_java/utility/utilityMaven.cpp index ef8c23a4..e85cb442 100644 --- a/src/lib_java/utility/utilityMaven.cpp +++ b/src/lib_java/utility/utilityMaven.cpp @@ -127,7 +127,7 @@ namespace utility size_t startLine = 0; for (size_t i = 1; i <= outputAccess->getLineCount(); i++) { - if (utility::isPrefix("getLine(i)))) + if (utility::isPrefix("<", utility::trim(outputAccess->getLine(i)))) { startLine = i; break; diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index 83617a5d..f97b5562 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -33,6 +33,7 @@ add_files( StorageTestSuite.h TaskSchedulerTestSuite.h TextAccessTestSuite.h + UtilityMavenTestSuite.h UtilityStringTestSuite.h Vector2TestSuite.h diff --git a/src/test/UtilityMavenTestSuite.h b/src/test/UtilityMavenTestSuite.h new file mode 100644 index 00000000..c42b8427 --- /dev/null +++ b/src/test/UtilityMavenTestSuite.h @@ -0,0 +1,115 @@ +#include "cxxtest/TestSuite.h" + +#include "utility/file/FilePath.h" +#include "utility/utilityMaven.h" +#include "utility/utilityPathDetection.h" + +class UtilityMavenTestSuite : public CxxTest::TestSuite +{ +public: + void test_maven_path_detector_is_working() + { + std::shared_ptr mavenPathDetector = utility::getMavenExecutablePathDetector(); + TS_ASSERT(mavenPathDetector->isWorking()); + } + + void test_maven_wrapper_detects_source_directories_of_simple_projects() + { + std::shared_ptr mavenPathDetector = utility::getMavenExecutablePathDetector(); + TS_ASSERT(!mavenPathDetector->getPaths().empty()); + + if (!mavenPathDetector->getPaths().empty()) + { + std::vector result = utility::mavenGetAllDirectoriesFromEffectivePom( + mavenPathDetector->getPaths().front(), FilePath("data/UtilityMavenTestSuite/simple_maven_project"), false + ); + + TS_ASSERT(utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/simple_maven_project/src/main/java").makeAbsolute() + )); + + TS_ASSERT(!utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/simple_maven_project/src/test/java").makeAbsolute() + )); + } + } + + void test_maven_wrapper_detects_source_and_test_directories_of_simple_projects() + { + std::shared_ptr mavenPathDetector = utility::getMavenExecutablePathDetector(); + TS_ASSERT(!mavenPathDetector->getPaths().empty()); + + if (!mavenPathDetector->getPaths().empty()) + { + std::vector result = utility::mavenGetAllDirectoriesFromEffectivePom( + mavenPathDetector->getPaths().front(), FilePath("data/UtilityMavenTestSuite/simple_maven_project"), true + ); + + TS_ASSERT(utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/simple_maven_project/src/main/java").makeAbsolute() + )); + + TS_ASSERT(utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/simple_maven_project/src/test/java").makeAbsolute() + )); + } + } + + void test_maven_wrapper_detects_source_directories_of_nested_modules() + { + std::shared_ptr mavenPathDetector = utility::getMavenExecutablePathDetector(); + TS_ASSERT(!mavenPathDetector->getPaths().empty()); + + if (!mavenPathDetector->getPaths().empty()) + { + std::vector result = utility::mavenGetAllDirectoriesFromEffectivePom( + mavenPathDetector->getPaths().front(), FilePath("data/UtilityMavenTestSuite/nested_maven_project"), false + ); + + TS_ASSERT(utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/nested_maven_project/module_1/src/main/java").makeAbsolute() + )); + + TS_ASSERT(utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/nested_maven_project/module_2/src/main/java").makeAbsolute() + )); + + TS_ASSERT(!utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/nested_maven_project/module_1/src/test/java").makeAbsolute() + )); + + TS_ASSERT(!utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/nested_maven_project/module_2/src/test/java").makeAbsolute() + )); + } + } + + void test_maven_wrapper_detects_source_and_test_directories_of_nested_modules() + { + std::shared_ptr mavenPathDetector = utility::getMavenExecutablePathDetector(); + TS_ASSERT(!mavenPathDetector->getPaths().empty()); + + if (!mavenPathDetector->getPaths().empty()) + { + std::vector result = utility::mavenGetAllDirectoriesFromEffectivePom( + mavenPathDetector->getPaths().front(), FilePath("data/UtilityMavenTestSuite/nested_maven_project"), true + ); + + TS_ASSERT(utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/nested_maven_project/module_1/src/main/java").makeAbsolute() + )); + + TS_ASSERT(utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/nested_maven_project/module_2/src/main/java").makeAbsolute() + )); + + TS_ASSERT(utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/nested_maven_project/module_1/src/test/java").makeAbsolute() + )); + + TS_ASSERT(utility::containsElement( + result, FilePath("data/UtilityMavenTestSuite/nested_maven_project/module_2/src/test/java").makeAbsolute() + )); + } + } +};