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()
+ ));
+ }
+ }
+};