This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 8dd1c31e1fe6a7768bde636bb016c47de8949652 Author: Nikita Timofeev <[email protected]> AuthorDate: Fri Sep 18 15:30:45 2020 +0300 Cgen tests validating actual generation results --- ...nTest.java => BaseTemplatesGenerationTest.java} | 122 ++++++++++----------- .../test/resources/templateTest/DataMapTest.java | 18 --- .../test/resources/templateTest/EntityTest.java | 10 -- .../src/test/resources/templateTest/ObjEntity.java | 10 ++ .../test/resources/templateTest/SelectQuery.java | 18 +++ .../auto/{_EntityTest.java => _ObjEntity.java} | 4 +- .../auto/{_DataMapTest.java => _SelectQuery.java} | 2 +- 7 files changed, 86 insertions(+), 98 deletions(-) diff --git a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenTest.java b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java similarity index 59% rename from cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenTest.java rename to cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java index eb4bf65..14e9b20 100644 --- a/cayenne-cgen/src/test/java/org/apache/cayenne/gen/CgenTest.java +++ b/cayenne-cgen/src/test/java/org/apache/cayenne/gen/BaseTemplatesGenerationTest.java @@ -2,42 +2,53 @@ package org.apache.cayenne.gen; import org.apache.cayenne.exp.Expression; import org.apache.cayenne.exp.ExpressionFactory; -import org.apache.cayenne.map.*; -import org.junit.After; +import org.apache.cayenne.map.DataMap; +import org.apache.cayenne.map.DbEntity; +import org.apache.cayenne.map.ObjAttribute; +import org.apache.cayenne.map.ObjEntity; +import org.apache.cayenne.map.QueryDescriptor; +import org.apache.cayenne.map.SQLTemplateDescriptor; +import org.apache.cayenne.map.SelectQueryDescriptor; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; - -import java.io.*; +import org.junit.rules.TemporaryFolder; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import static org.junit.Assert.assertEquals; -public class CgenTest { +public class BaseTemplatesGenerationTest { - protected ClassGenerationAction action; - protected CgenConfiguration cgenConfiguration; + @Rule + public TemporaryFolder folder= new TemporaryFolder(); + protected CgenConfiguration cgenConfiguration; + protected ClassGenerationAction action; protected DataMap dataMap; protected ObjEntity objEntity; @Before - public void setUp() throws Exception { + public void setUp() { cgenConfiguration = new CgenConfiguration(false); action = new ClassGenerationAction(cgenConfiguration); - dataMap = new DataMap(); + dataMap.setDefaultPackage("test"); objEntity = new ObjEntity(); } - @After - public void tearDown() throws Exception { - dataMap = null; - objEntity = null; - } - @Test public void testSelectQuery() throws Exception { + dataMap.setName("SelectQuery"); String param = "param"; String qualifierString = "name = $" + param; @@ -56,18 +67,17 @@ public class CgenTest { selectQueryDescriptor.setName("select"); selectQueryDescriptor.setRoot(objEntity); - dataMap.setName("DataMapTest"); - dataMap.setDefaultPackage("test"); - Collection<QueryDescriptor> descriptors = new ArrayList<>(); descriptors.add(selectQueryDescriptor); DataMapArtifact dataMapArtifact = new DataMapArtifact(dataMap, descriptors); - execute(dataMapArtifact); } + execute(dataMapArtifact); + } @Test public void testSQLTemplate() throws Exception { + dataMap.setName("SQLTemplate"); DbEntity dbEntity = new DbEntity(); objEntity.setDbEntity(dbEntity); @@ -79,9 +89,6 @@ public class CgenTest { sqlTemplateDescriptor.setName("select"); sqlTemplateDescriptor.setRoot(objEntity); - dataMap.setName("SQLTemplate"); - dataMap.setDefaultPackage("test"); - Collection<QueryDescriptor> descriptors = new ArrayList<>(); descriptors.add(sqlTemplateDescriptor); @@ -92,13 +99,12 @@ public class CgenTest { @Test public void testGenClass() throws Exception { - - dataMap.setName("EntityTest"); + dataMap.setName("ObjEntity"); DbEntity dbEntity = new DbEntity(); dbEntity.setName("EntityTest"); objEntity.setDbEntity(dbEntity); - objEntity.setClassName("test.EntityTest"); + objEntity.setClassName("test.ObjEntity"); objEntity.setDataMap(dataMap); EntityArtifact entityArtifact = new EntityArtifact(objEntity); @@ -109,62 +115,44 @@ public class CgenTest { public void execute(Artifact artifact) throws Exception{ cgenConfiguration.addArtifact(artifact); - cgenConfiguration.setRelPath("src/test/resources"); + cgenConfiguration.setRootPath(folder.getRoot().toPath()); + cgenConfiguration.setRelPath(Paths.get(".")); cgenConfiguration.loadEntity(objEntity); cgenConfiguration.setDataMap(dataMap); action.setUtilsFactory(new DefaultToolsUtilsFactory()); action.execute(); - fileComparison(dataMap.getName()); + String targetName = dataMap.getName(); - fileComparison("auto/_" + dataMap.getName()); - - rmdir(new File(cgenConfiguration.getRelPath() + "/test")); + fileComparison(targetName); + fileComparison("auto/_" + targetName); } - public void fileComparison(String fileName) { - - try { - FileReader fileReader1 = new FileReader(new File("src/test/resources/templateTest/" + fileName + ".java")); - BufferedReader reader1 = new BufferedReader(fileReader1); - String lineFile1; - String string1 = ""; - - FileReader fileReader2 = new FileReader(new File("src/test/resources/test/" + fileName + ".java")); - BufferedReader reader2 = new BufferedReader(fileReader2); - String lineFile2; - String string2 = ""; + private void fileComparison(String fileName) throws IOException { + String expected = readResource(fileName); - while ((lineFile1 = reader1.readLine()) != null - && (lineFile2 = reader2.readLine()) != null) { - string1 += lineFile1; - string2 += lineFile2; - } - - assertEquals(string1, string2); + StringBuilder generated = new StringBuilder(); + Files.readAllLines(new File(folder.getRoot() + "/test/" + fileName + ".java").toPath()) + .forEach(generated::append); - reader1.close(); - reader2.close(); - fileReader1.close(); - fileReader2.close(); - - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } + assertEquals(expected, generated.toString()); } - public void rmdir(File file) { - if (!file.exists()) - return; - - if (file.isDirectory()) { - for (File f : file.listFiles()) { - rmdir(f); + private String readResource(String name) throws IOException { + String resourceName = "templateTest/" + name + ".java"; + InputStream stream = getClass().getClassLoader().getResourceAsStream(resourceName); + if(stream == null) { + throw new FileNotFoundException("Resource not found: " + resourceName); + } + StringBuilder expected = new StringBuilder(); + try(BufferedReader resource = new BufferedReader(new InputStreamReader(stream))) { + String line; + while ((line = resource.readLine()) != null) { + expected.append(line); } } - file.delete(); + + return expected.toString(); } } diff --git a/cayenne-cgen/src/test/resources/templateTest/DataMapTest.java b/cayenne-cgen/src/test/resources/templateTest/DataMapTest.java deleted file mode 100644 index b3bb67d..0000000 --- a/cayenne-cgen/src/test/resources/templateTest/DataMapTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package test; - -import test.auto._DataMapTest; - -public class DataMapTest extends _DataMapTest { - - private static DataMapTest instance; - - private DataMapTest() {} - - public static DataMapTest getInstance() { - if(instance == null) { - instance = new DataMapTest(); - } - - return instance; - } -} diff --git a/cayenne-cgen/src/test/resources/templateTest/EntityTest.java b/cayenne-cgen/src/test/resources/templateTest/EntityTest.java deleted file mode 100644 index 6cbda4e..0000000 --- a/cayenne-cgen/src/test/resources/templateTest/EntityTest.java +++ /dev/null @@ -1,10 +0,0 @@ -package test; - -import test.auto._EntityTest; - -public class EntityTest extends _EntityTest { - - private static final long serialVersionUID = 1L; - -} - diff --git a/cayenne-cgen/src/test/resources/templateTest/ObjEntity.java b/cayenne-cgen/src/test/resources/templateTest/ObjEntity.java new file mode 100644 index 0000000..1a036c0 --- /dev/null +++ b/cayenne-cgen/src/test/resources/templateTest/ObjEntity.java @@ -0,0 +1,10 @@ +package test; + +import test.auto._ObjEntity; + +public class ObjEntity extends _ObjEntity { + + private static final long serialVersionUID = 1L; + +} + diff --git a/cayenne-cgen/src/test/resources/templateTest/SelectQuery.java b/cayenne-cgen/src/test/resources/templateTest/SelectQuery.java new file mode 100644 index 0000000..49144de --- /dev/null +++ b/cayenne-cgen/src/test/resources/templateTest/SelectQuery.java @@ -0,0 +1,18 @@ +package test; + +import test.auto._SelectQuery; + +public class SelectQuery extends _SelectQuery { + + private static SelectQuery instance; + + private SelectQuery() {} + + public static SelectQuery getInstance() { + if(instance == null) { + instance = new SelectQuery(); + } + + return instance; + } +} diff --git a/cayenne-cgen/src/test/resources/templateTest/auto/_EntityTest.java b/cayenne-cgen/src/test/resources/templateTest/auto/_ObjEntity.java similarity index 93% rename from cayenne-cgen/src/test/resources/templateTest/auto/_EntityTest.java rename to cayenne-cgen/src/test/resources/templateTest/auto/_ObjEntity.java index da83fb7..83d68ff 100644 --- a/cayenne-cgen/src/test/resources/templateTest/auto/_EntityTest.java +++ b/cayenne-cgen/src/test/resources/templateTest/auto/_ObjEntity.java @@ -7,12 +7,12 @@ import java.io.ObjectOutputStream; import org.apache.cayenne.BaseDataObject; /** - * Class _EntityTest was generated by Cayenne. + * Class _ObjEntity was generated by Cayenne. * It is probably a good idea to avoid changing this class manually, * since it may be overwritten next time code is regenerated. * If you need to make any customizations, please use subclass. */ -public abstract class _EntityTest extends BaseDataObject { +public abstract class _ObjEntity extends BaseDataObject { private static final long serialVersionUID = 1L; diff --git a/cayenne-cgen/src/test/resources/templateTest/auto/_DataMapTest.java b/cayenne-cgen/src/test/resources/templateTest/auto/_SelectQuery.java similarity index 95% rename from cayenne-cgen/src/test/resources/templateTest/auto/_DataMapTest.java rename to cayenne-cgen/src/test/resources/templateTest/auto/_SelectQuery.java index f4d05c0..7b99f0e 100644 --- a/cayenne-cgen/src/test/resources/templateTest/auto/_DataMapTest.java +++ b/cayenne-cgen/src/test/resources/templateTest/auto/_SelectQuery.java @@ -11,7 +11,7 @@ import org.apache.cayenne.query.MappedSelect; * since it may be overwritten next time code is regenerated. * If you need to make any customizations, please use subclass. */ -public class _DataMapTest { +public class _SelectQuery { public static final String SELECT_QUERYNAME = "select";
