Skip to content

Commit 8ad1652

Browse files
LarsEckartJayBazuziisidore
committed
! F allow configuration of project base directory
Co-authored-by: Jay Bazuzi <[email protected]> Co-authored-by: Llewellyn Falco <[email protected]>
1 parent 870a0f2 commit 8ad1652

File tree

6 files changed

+31
-7
lines changed

6 files changed

+31
-7
lines changed

approvaltests-tests/src/test/java/org/approvaltests/CheckedExceptionsTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.approvaltests;
22

3+
import com.spun.util.ClassUtils;
34
import org.junit.jupiter.api.Test;
45
import org.lambda.query.Query;
56
import org.lambda.query.Queryable;
@@ -27,7 +28,7 @@ private List<Method> getMethodsWithCheckedExceptions(Class<?> aClass)
2728
}
2829
private Queryable<Class<?>> getAllClasses()
2930
{
30-
return getClasses("..", p -> p.contains("main"),
31+
return getClasses(ClassUtils.getProjectRootPath() + "/..", p -> p.contains("main"),
3132
p1 -> p1.contains(".approvaltests.src.") || p1.contains(".approvaltests-util."));
3233
}
3334
}

approvaltests-tests/src/test/java/org/approvaltests/ParserUtilities.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.github.javaparser.ast.type.Type;
1010
import com.github.javaparser.ast.type.TypeParameter;
1111
import com.github.javaparser.utils.SourceRoot;
12+
import com.spun.util.ClassUtils;
1213
import com.spun.util.FormattedException;
1314
import org.lambda.query.Query;
1415

@@ -22,8 +23,8 @@ public class ParserUtilities
2223
public static final List<String> SOURCE_PATHS = new ArrayList<>();
2324
static
2425
{
25-
SOURCE_PATHS.add("src/main/java");
26-
SOURCE_PATHS.add("src/test/java");
26+
SOURCE_PATHS.add(ClassUtils.getProjectRootPath() + "/src/main/java");
27+
SOURCE_PATHS.add(ClassUtils.getProjectRootPath() + "/src/test/java");
2728
}
2829
public static Range getLineNumbersForMethod(Method method)
2930
{
@@ -71,6 +72,7 @@ public static CompilationUnit getCompilationUnit(Method method)
7172
ParseProblemException parseException = null;
7273
for (String sourceRootPath : SOURCE_PATHS)
7374
{
75+
System.out.println("Trying to parse from: " + sourceRootPath);
7476
SourceRoot sourceRoot = new SourceRoot(Paths.get(sourceRootPath));
7577
try
7678
{

approvaltests-tests/src/test/java/org/approvaltests/ParsingFilesTest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.approvaltests;
22

33
import com.github.javaparser.Range;
4+
import com.spun.util.ClassUtils;
45
import org.approvaltests.core.Options;
56
import org.junit.jupiter.api.Test;
67

@@ -10,7 +11,7 @@ public class ParsingFilesTest
1011
{
1112
public static void addApprovalTestPath()
1213
{
13-
ParserUtilities.SOURCE_PATHS.add("../approvaltests/src/main/java");
14+
ParserUtilities.SOURCE_PATHS.add(ClassUtils.getProjectRootPath() + "/../approvaltests/src/main/java");
1415
}
1516
@Test
1617
public void getLineNumberOfThisMethod() throws Exception
@@ -23,4 +24,4 @@ public void getLineNumberOfThisMethod() throws Exception
2324
Range r = ParserUtilities.getLineNumbersForMethod(method);
2425
Approvals.verify(r, new Options().inline(expected));
2526
}
26-
}
27+
}

approvaltests-tests/src/test/java/org/approvaltests/namer/NamerSamplesTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.approvaltests.namer;
22

3+
import com.spun.util.ClassUtils;
34
import com.spun.util.tests.TestUtils;
45
import com.spun.util.tests.TestUtils.SourceDirectoryRestorer;
56
import org.approvaltests.Approvals;
@@ -19,7 +20,8 @@ void useAlternativeSourceFileFinder()
1920
@Override
2021
public File call(Class clazz, String fileName)
2122
{
22-
return new File("src/test/java/" + clazz.getPackage().getName().replaceAll("\\.", "/"));
23+
return new File(ClassUtils.getProjectRootPath() + "/src/test/java/"
24+
+ clazz.getPackage().getName().replaceAll("\\.", "/"));
2325
}
2426
};
2527
// end-snippet

approvaltests-util/src/main/java/com/spun/util/ClassUtils.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
public class ClassUtils
1919
{
20+
public static final String APPROVALTESTS_PROJECT_DIRECTORY = "APPROVALTESTS_PROJECT_DIRECTORY";
2021
public static String getClassName(Class<?> clazz)
2122
{
2223
String name = clazz.getName();
@@ -98,11 +99,23 @@ public static File getSourceDirectory(Class<?> clazz, Function1<String, String>
9899
final String name = clazz.getName();
99100
String[] split = name.split("\\.");
100101
split[split.length - 1] = createLastFileName.call(split[split.length - 1]);
101-
File found = find(new File("."), Arrays.asList(split));
102+
String baseSourcePath = getProjectRootPath();
103+
File found = find(new File(baseSourcePath), Arrays.asList(split));
102104
if (found == null)
103105
{ throw new FormattedException("Didn't find %s under %s", name, FileUtils.getCurrentDirectory()); }
104106
return found.getParentFile();
105107
}
108+
/**
109+
* This returns the {@link com.spun.util.ClassUtils#APPROVALTESTS_PROJECT_DIRECTORY APPROVALTESTS_PROJECT_DIRECTORY} system property if it is set, otherwise it returns the working directory.
110+
*/
111+
public static String getProjectRootPath()
112+
{
113+
if (System.getProperties().containsKey(APPROVALTESTS_PROJECT_DIRECTORY))
114+
{ return System.getProperty(APPROVALTESTS_PROJECT_DIRECTORY); }
115+
if (System.getenv().containsKey(APPROVALTESTS_PROJECT_DIRECTORY))
116+
{ return System.getenv(APPROVALTESTS_PROJECT_DIRECTORY); }
117+
return ".";
118+
}
106119
public static File getSourceDirectory(Class<?> clazz, final String fileName)
107120
{
108121
return getSourceDirectory(clazz, __ -> fileName);

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,11 @@
103103
<version>3.5.2</version>
104104
<configuration>
105105
<argLine>-Duser.language=en -Duser.region=US</argLine>
106+
<parallel>methods</parallel>
107+
<workingDirectory>target/fork_dir_${surefire.forkNumber}</workingDirectory>
108+
<systemPropertyVariables>
109+
<APPROVALTESTS_PROJECT_DIRECTORY>${project.basedir}</APPROVALTESTS_PROJECT_DIRECTORY>
110+
</systemPropertyVariables>
106111
</configuration>
107112
</plugin>
108113
<plugin>

0 commit comments

Comments
 (0)