You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2020/09/18 13:05:02 UTC
[cayenne] 01/03: Cgen tests validating actual generation results
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 <st...@gmail.com>
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";