Fixes test folder cleaning in python-exp only (#12825)

* Adds test folder file removal in python-exp only

* Samples regnerated

* Removes unused code, tweaks unit test sample to test PR change

* Reverts spec change

* FIxes javadoc
This commit is contained in:
Justin Black 2022-07-10 08:45:49 -04:00 committed by GitHub
parent 574f6f3192
commit 84ac06abdc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 15 deletions

View File

@ -53,11 +53,7 @@ if [[ ${#files[@]} -eq 1 && "${files[0]}" != *'*'* ]]; then
java ${JAVA_OPTS} -jar "$executable" generate -c ${files[0]} ${args[@]} java ${JAVA_OPTS} -jar "$executable" generate -c ${files[0]} ${args[@]}
else else
echo "Please press CTRL+C to stop or the script will continue in 5 seconds." echo "Please press CTRL+C to stop or the script will continue in 5 seconds."
sleep 5 sleep 5
# delete the 3_0_3 python-experimental tests because they are autogenerated our tooling needs to see differences
rm -rf "${root}/samples/openapi3/client/3_0_3_unit_test/python-experimental/test"
if [ ${#files[@]} -eq 0 ]; then if [ ${#files[@]} -eq 0 ]; then
files=("${root}"/bin/configs/*.yaml) files=("${root}"/bin/configs/*.yaml)
fi fi

View File

@ -25,6 +25,7 @@ import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.oas.models.servers.Server;
import io.swagger.v3.oas.models.tags.Tag; import io.swagger.v3.oas.models.tags.Tag;
import org.apache.commons.io.FileUtils;
import org.openapitools.codegen.api.TemplatePathLocator; import org.openapitools.codegen.api.TemplatePathLocator;
import org.openapitools.codegen.ignore.CodegenIgnoreProcessor; import org.openapitools.codegen.ignore.CodegenIgnoreProcessor;
import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelMap;
@ -740,6 +741,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
* this means that the generated client does not use these models * this means that the generated client does not use these models
* because they are not used we do not write them * because they are not used we do not write them
* - fix the model imports, go from model name to the full import string with toModelImport + globalImportFixer * - fix the model imports, go from model name to the full import string with toModelImport + globalImportFixer
* Also cleans the test folder if test cases exist and the testFolder is set because the tests are autogenerated
* *
* @param objs a map going from the model name to a object hoding the model info * @param objs a map going from the model name to a object hoding the model info
* @return the updated objs * @return the updated objs
@ -748,6 +750,7 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) { public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
super.postProcessAllModels(objs); super.postProcessAllModels(objs);
boolean anyModelContainsTestCases = false;
Map<String, Schema> allDefinitions = ModelUtils.getSchemas(this.openAPI); Map<String, Schema> allDefinitions = ModelUtils.getSchemas(this.openAPI);
for (String schemaName : allDefinitions.keySet()) { for (String schemaName : allDefinitions.keySet()) {
Schema refSchema = new Schema().$ref("#/components/schemas/" + schemaName); Schema refSchema = new Schema().$ref("#/components/schemas/" + schemaName);
@ -755,20 +758,36 @@ public class PythonExperimentalClientCodegen extends AbstractPythonCodegen {
String modelName = toModelName(schemaName); String modelName = toModelName(schemaName);
if (unaliasedSchema.get$ref() == null) { if (unaliasedSchema.get$ref() == null) {
continue; continue;
} else { }
ModelsMap objModel = objs.get(modelName); ModelsMap objModel = objs.get(modelName);
if (objModel != null) { // to avoid form parameter's models that are not generated (skipFormModel=true) if (objModel == null) {
for (ModelMap model : objModel.getModels()) { // to avoid form parameter's models that are not generated (skipFormModel=true)
CodegenModel cm = model.getModel(); continue;
String[] importModelNames = cm.imports.toArray(new String[0]); }
cm.imports.clear(); for (ModelMap model : objModel.getModels()) {
for (String importModelName : importModelNames) { CodegenModel cm = model.getModel();
cm.imports.add(toModelImport(importModelName)); if (cm.testCases != null && !cm.testCases.isEmpty()) {
} anyModelContainsTestCases = true;
} }
String[] importModelNames = cm.imports.toArray(new String[0]);
cm.imports.clear();
for (String importModelName : importModelNames) {
cm.imports.add(toModelImport(importModelName));
} }
} }
} }
boolean testFolderSet = testFolder != null;
if (testFolderSet && anyModelContainsTestCases) {
// delete the test folder because tests there will be autogenerated
String modelTestFolder = modelTestFileFolder();
File testDirectory = new File(modelTestFolder);
try {
FileUtils.cleanDirectory(testDirectory);
} catch (IOException e) {
LOGGER.info("Unable to delete the test folder because of exception=" + e.toString());
}
}
return objs; return objs;
} }