forked from loafle/openapi-generator-original
[java] use javaparser library to detect syntax errors in the tests (#3715)
This commit is contained in:
parent
d09e097e4e
commit
1a808dd644
@ -268,6 +268,12 @@
|
||||
<!-- <version>${testng-version}</version> -->
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.javaparser</groupId>
|
||||
<artifactId>javaparser-core</artifactId>
|
||||
<version>3.14.11</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.reflections</groupId>
|
||||
<artifactId>reflections</artifactId>
|
||||
|
@ -1,8 +1,12 @@
|
||||
package org.openapitools.codegen;
|
||||
|
||||
import static org.testng.Assert.assertFalse;
|
||||
import static org.testng.Assert.fail;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
import static org.testng.Assert.assertFalse;
|
||||
|
||||
import com.github.javaparser.ParseProblemException;
|
||||
import com.github.javaparser.StaticJavaParser;
|
||||
import com.github.javaparser.ast.CompilationUnit;
|
||||
import io.swagger.parser.OpenAPIParser;
|
||||
import io.swagger.v3.oas.models.Components;
|
||||
import io.swagger.v3.oas.models.OpenAPI;
|
||||
@ -66,7 +70,7 @@ public class TestUtils {
|
||||
File file = new File(root, filename);
|
||||
String absoluteFilename = file.getAbsolutePath().replace("\\", "/");
|
||||
if (!generatedFiles.containsKey(absoluteFilename)) {
|
||||
Assert.fail("Could not find '" + absoluteFilename + "' file in list:\n" +
|
||||
fail("Could not find '" + absoluteFilename + "' file in list:\n" +
|
||||
generatedFiles.keySet().stream().sorted().collect(Collectors.joining(",\n")));
|
||||
}
|
||||
assertTrue(generatedFiles.containsKey(absoluteFilename), "File '" + absoluteFilename + "' was not found in the list of generated files");
|
||||
@ -76,9 +80,28 @@ public class TestUtils {
|
||||
File file = new File(root, filename);
|
||||
String absoluteFilename = file.getAbsolutePath().replace("\\", "/");
|
||||
if (generatedFiles.containsKey(absoluteFilename)) {
|
||||
Assert.fail("File '" + absoluteFilename + "' exists in file in list:\n" +
|
||||
fail("File '" + absoluteFilename + "' exists in file in list:\n" +
|
||||
generatedFiles.keySet().stream().sorted().collect(Collectors.joining(",\n")));
|
||||
}
|
||||
assertFalse(generatedFiles.containsKey(absoluteFilename), "File '" + absoluteFilename + "' was found in the list of generated files");
|
||||
}
|
||||
|
||||
public static void validateJavaSourceFiles(Map<String, String> fileMap) {
|
||||
fileMap.forEach( (fileName, fileContents) -> {
|
||||
if (fileName.endsWith(".java")) {
|
||||
assertValidJavaSourceCode(fileContents, fileName);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public static void assertValidJavaSourceCode(String javaSourceCode, String filename) {
|
||||
try {
|
||||
CompilationUnit compilation = StaticJavaParser.parse(javaSourceCode);
|
||||
assertTrue(compilation.getTypes().size() > 0, "File: " + filename);
|
||||
}
|
||||
catch (ParseProblemException ex) {
|
||||
fail("Java parse problem: " + filename, ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@
|
||||
|
||||
package org.openapitools.codegen.java;
|
||||
|
||||
import static org.openapitools.codegen.TestUtils.*;
|
||||
import static org.testng.Assert.assertEquals;
|
||||
import static org.testng.Assert.assertTrue;
|
||||
|
||||
@ -318,6 +319,8 @@ public class JavaClientCodegenTest {
|
||||
TestUtils.ensureContainsFile(generatedFiles, output, "src/main/java/xyz/abcdef/StringUtil.java");
|
||||
TestUtils.ensureContainsFile(generatedFiles, output, "src/test/java/xyz/abcdef/api/DefaultApiTest.java");
|
||||
|
||||
validateJavaSourceFiles(generatedFiles);
|
||||
|
||||
String defaultApiFilename = new File(output, "src/main/java/xyz/abcdef/api/DefaultApi.java").getAbsolutePath().replace("\\", "/");
|
||||
String defaultApiConent = generatedFiles.get(defaultApiFilename);
|
||||
assertTrue(defaultApiConent.contains("public class DefaultApi"));
|
||||
|
Loading…
x
Reference in New Issue
Block a user