Skip to content

Commit aa25c93

Browse files
mgmt, truncate test file name, if path too long (#2851)
1 parent 9ebf87f commit aa25c93

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

fluentgen/src/main/java/com/azure/autorest/fluent/model/javamodel/FluentJavaPackage.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.azure.autorest.fluent.template.ResourceManagerUtilsTemplate;
3030
import com.azure.autorest.model.javamodel.JavaFile;
3131
import com.azure.autorest.model.javamodel.JavaPackage;
32+
import com.azure.autorest.util.ClassNameUtil;
3233
import com.azure.autorest.util.CodeNamer;
3334

3435
import java.util.List;
@@ -111,11 +112,22 @@ public final JavaFile addSample(FluentExample example) {
111112
}
112113

113114
public void addOperationUnitTest(FluentMethodMockUnitTest unitTest) {
114-
115+
final String packageName = JavaSettings.getInstance().getPackage("generated");
115116
String className = unitTest.getResourceCollection().getInterfaceType().getName()
116-
+ CodeNamer.toPascalCase(unitTest.getCollectionMethod().getMethodName())
117-
+ "MockTests";
118-
JavaFile javaFile = getJavaFileFactory().createTestFile(JavaSettings.getInstance().getPackage("generated"), className);
117+
+ CodeNamer.toPascalCase(unitTest.getCollectionMethod().getMethodName());
118+
119+
final String classNameSuffix = "MockTests";
120+
121+
className = ClassNameUtil.truncateClassName(
122+
JavaSettings.getInstance().getPackage(),
123+
"src/tests/java"
124+
// a hack to count "MockTests" suffix into the length of the full path
125+
+ classNameSuffix,
126+
packageName, className);
127+
128+
className += classNameSuffix;
129+
130+
JavaFile javaFile = getJavaFileFactory().createTestFile(packageName, className);
119131
FluentMethodMockTestTemplate.ClientMethodInfo info = new FluentMethodMockTestTemplate.ClientMethodInfo(
120132
className, unitTest);
121133
FluentMethodMockTestTemplate.getInstance().write(info, javaFile);

javagen/src/main/java/com/azure/autorest/util/ClassNameUtil.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,19 @@
33

44
package com.azure.autorest.util;
55

6-
public class ClassNameUtil {
7-
6+
public final class ClassNameUtil {
7+
8+
/**
9+
* Truncate class name to avoid path too long.
10+
*
11+
* It contains some heuristic logic, and the result may not be exactly correct.
12+
*
13+
* @param namespace the namespace of the package, used to deduce the artifact id and group id
14+
* @param directory the part of directory from maven project
15+
* @param packageName the namespace/package of the class
16+
* @param className the name of the class
17+
* @return the truncated class name
18+
*/
819
public static String truncateClassName(
920
String namespace, String directory,
1021
String packageName, String className) {

0 commit comments

Comments
 (0)