Create tests for maven, ant and gradle

Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/93da6be1
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/93da6be1
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/93da6be1

Branch: refs/heads/master
Commit: 93da6be17b9b8cd5ad9c4cb5184565b426991393
Parents: d9db6e3
Author: Arseni Bulatski <ancars...@gmail.com>
Authored: Fri Jun 29 13:42:55 2018 +0300
Committer: Arseni Bulatski <ancars...@gmail.com>
Committed: Wed Oct 24 13:44:26 2018 +0300

----------------------------------------------------------------------
 .../cayenne/tools/CgenWithConfigTest.java       | 91 ++++++++++++++++++++
 cayenne-ant/src/test/resources/cgenTest.map.xml | 27 ++++++
 .../cayenne/tools/CgenTaskWithConfigIT.java     | 71 +++++++++++++++
 .../org/apache/cayenne/tools/cgenMap.map.xml    | 27 ++++++
 .../cayenne/tools/cgen_with_config.gradle       | 28 ++++++
 .../cayenne/tools/CayenneGeneratorMojo.java     |  2 +
 .../cayenne/tools/CgenWithConfigMojoTest.java   | 51 +++++++++++
 .../resources/cgen/project-to-test/cgen-pom.xml | 48 +++++++++++
 .../src/test/resources/cgen/testCgenMap.map.xml | 27 ++++++
 9 files changed, 372 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/93da6be1/cayenne-ant/src/test/java/org/apache/cayenne/tools/CgenWithConfigTest.java
----------------------------------------------------------------------
diff --git 
a/cayenne-ant/src/test/java/org/apache/cayenne/tools/CgenWithConfigTest.java 
b/cayenne-ant/src/test/java/org/apache/cayenne/tools/CgenWithConfigTest.java
new file mode 100644
index 0000000..cdccd49
--- /dev/null
+++ b/cayenne-ant/src/test/java/org/apache/cayenne/tools/CgenWithConfigTest.java
@@ -0,0 +1,91 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.tools;
+
+import org.apache.cayenne.test.file.FileUtil;
+import org.apache.cayenne.test.resource.ResourceUtil;
+import org.apache.tools.ant.Location;
+import org.apache.tools.ant.Project;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @since 4.1
+ */
+public class CgenWithConfigTest {
+
+    private static final File baseDir;
+    private static final File map;
+
+    static {
+        baseDir = FileUtil.baseTestDirectory();
+        map = new File(baseDir, "antmap-cgen.xml");
+
+        ResourceUtil.copyResourceToFile("cgenTest.map.xml", map);
+    }
+
+    protected CayenneGeneratorTask task;
+
+    @Before
+    public void setUp() {
+
+        Project project = new Project();
+        project.setBaseDir(baseDir);
+
+        task = new CayenneGeneratorTask();
+        task.setProject(project);
+        task.setTaskName("Test");
+        task.setLocation(Location.UNKNOWN_LOCATION);
+    }
+
+    @Test
+    public void testCgen() throws Exception {
+        File mapDir = new File(baseDir, "cgenConfigTest");
+        assertTrue(mapDir.mkdirs());
+
+        task.setDestDir(mapDir);
+        task.setMap(map);
+        task.setMode("entity");
+
+        // run task
+        task.execute();
+
+        // check results
+        File entity = new File(mapDir, convertPath("ObjEntity1.txt"));
+        assertTrue(entity.isFile());
+
+        File datamap = new File(mapDir, convertPath("TestCgenMap.txt"));
+        assertFalse(datamap.exists());
+
+        File notIncludedEntity = new File(mapDir, "ObjEntity.txt");
+        assertFalse(notIncludedEntity.exists());
+
+        File notIncludeSuperDatamap = new File("_TestCgenMap.txt");
+        assertFalse(notIncludeSuperDatamap.exists());
+    }
+
+    private String convertPath(String unixPath) {
+        return unixPath.replace('/', File.separatorChar);
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/93da6be1/cayenne-ant/src/test/resources/cgenTest.map.xml
----------------------------------------------------------------------
diff --git a/cayenne-ant/src/test/resources/cgenTest.map.xml 
b/cayenne-ant/src/test/resources/cgenTest.map.xml
new file mode 100644
index 0000000..930acbc
--- /dev/null
+++ b/cayenne-ant/src/test/resources/cgenTest.map.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data-map xmlns="http://cayenne.apache.org/schema/10/modelMap";
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+          xsi:schemaLocation="http://cayenne.apache.org/schema/10/modelMap 
http://cayenne.apache.org/schema/10/modelMap.xsd";
+          project-version="10">
+    <embeddable className="Embeddable"/>
+    <obj-entity name="ObjEntity" className="ObjEntity"/>
+    <obj-entity name="ObjEntity1" className="ObjEntity1"/>
+    <cgen xmlns="http://cayenne.apache.org/schema/10/cgen";>
+        <objEntity>
+            <name>ObjEntity1</name>
+        </objEntity>
+        <generationMode>all</generationMode>
+        <dataMapTemplate>templates/v4_1/datamap-subclass.vm</dataMapTemplate>
+        
<dataMapSuperclassTemplate>templates/v4_1/datamap-superclass.vm</dataMapSuperclassTemplate>
+        <subclassTemplate>templates/v4_1/subclass.vm</subclassTemplate>
+        <superclassTemplate>templates/v4_1/superclass.vm</superclassTemplate>
+        
<embeddableTemplate>templates/v4_1/embeddable-subclass.vm</embeddableTemplate>
+        
<embeddableSuperclassTemplate>templates/v4_1/embeddable-superclass.vm</embeddableSuperclassTemplate>
+        <outputPattern>*.txt</outputPattern>
+        <makePairs>false</makePairs>
+        <usePkgPath>true</usePkgPath>
+        <overwriteSubclasses>false</overwriteSubclasses>
+        <createPropertyNames>false</createPropertyNames>
+        <encoding>UTF-8</encoding>
+    </cgen>
+</data-map>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/93da6be1/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/CgenTaskWithConfigIT.java
----------------------------------------------------------------------
diff --git 
a/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/CgenTaskWithConfigIT.java
 
b/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/CgenTaskWithConfigIT.java
new file mode 100644
index 0000000..bf981ec
--- /dev/null
+++ 
b/cayenne-gradle-plugin/src/test/java/org/apache/cayenne/tools/CgenTaskWithConfigIT.java
@@ -0,0 +1,71 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.tools;
+
+import org.gradle.testkit.runner.BuildResult;
+import org.gradle.testkit.runner.GradleRunner;
+import org.gradle.testkit.runner.TaskOutcome;
+import org.junit.Test;
+
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @since 4.1
+ */
+public class CgenTaskWithConfigIT extends BaseTaskIT{
+
+    @Test
+    public void cgenWithConfig() throws Exception {
+        GradleRunner runner = createRunner(
+                "cgen_with_config",
+                "cgen",
+                "-PdataMap=" + 
URLDecoder.decode(getClass().getResource("cgenMap.map.xml").getFile(), "UTF-8")
+        );
+
+        BuildResult result = runner.forwardOutput().build();
+
+        String generatedDirectoryPath = projectDir.getAbsolutePath() + 
"/customDirectory/";
+
+        String generatedClassPath = generatedDirectoryPath + "ObjEntity1.txt";
+        String datamap = generatedDirectoryPath + "TestCgenMap.txt";
+        String notIncludedEntity = generatedDirectoryPath + "ObjEntity.txt";
+        String notIncludedSuperDatamap = generatedDirectoryPath + 
"_TestCgenMap.txt";
+
+        File notIncludeSuperDatamap = new File("_TestCgenMap.txt");
+        assertFalse(notIncludeSuperDatamap.exists());
+
+        File generatedClass = new File(generatedClassPath);
+        File generatedDatamap = new File(datamap);
+        File generatedNotIncludedEntity = new File(notIncludedEntity);
+        File generatedNotIncludedSuperDatamap = new 
File(notIncludedSuperDatamap);
+
+        assertTrue(generatedClass.exists());
+        assertFalse(generatedDatamap.exists());
+        assertFalse(generatedNotIncludedEntity.exists());
+        assertFalse(generatedNotIncludedSuperDatamap.exists());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/93da6be1/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/cgenMap.map.xml
----------------------------------------------------------------------
diff --git 
a/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/cgenMap.map.xml
 
b/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/cgenMap.map.xml
new file mode 100644
index 0000000..930acbc
--- /dev/null
+++ 
b/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/cgenMap.map.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data-map xmlns="http://cayenne.apache.org/schema/10/modelMap";
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+          xsi:schemaLocation="http://cayenne.apache.org/schema/10/modelMap 
http://cayenne.apache.org/schema/10/modelMap.xsd";
+          project-version="10">
+    <embeddable className="Embeddable"/>
+    <obj-entity name="ObjEntity" className="ObjEntity"/>
+    <obj-entity name="ObjEntity1" className="ObjEntity1"/>
+    <cgen xmlns="http://cayenne.apache.org/schema/10/cgen";>
+        <objEntity>
+            <name>ObjEntity1</name>
+        </objEntity>
+        <generationMode>all</generationMode>
+        <dataMapTemplate>templates/v4_1/datamap-subclass.vm</dataMapTemplate>
+        
<dataMapSuperclassTemplate>templates/v4_1/datamap-superclass.vm</dataMapSuperclassTemplate>
+        <subclassTemplate>templates/v4_1/subclass.vm</subclassTemplate>
+        <superclassTemplate>templates/v4_1/superclass.vm</superclassTemplate>
+        
<embeddableTemplate>templates/v4_1/embeddable-subclass.vm</embeddableTemplate>
+        
<embeddableSuperclassTemplate>templates/v4_1/embeddable-superclass.vm</embeddableSuperclassTemplate>
+        <outputPattern>*.txt</outputPattern>
+        <makePairs>false</makePairs>
+        <usePkgPath>true</usePkgPath>
+        <overwriteSubclasses>false</overwriteSubclasses>
+        <createPropertyNames>false</createPropertyNames>
+        <encoding>UTF-8</encoding>
+    </cgen>
+</data-map>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/93da6be1/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/cgen_with_config.gradle
----------------------------------------------------------------------
diff --git 
a/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/cgen_with_config.gradle
 
b/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/cgen_with_config.gradle
new file mode 100644
index 0000000..3cad46e
--- /dev/null
+++ 
b/cayenne-gradle-plugin/src/test/resources/org/apache/cayenne/tools/cgen_with_config.gradle
@@ -0,0 +1,28 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+
+plugins {
+    id 'org.apache.cayenne'
+}
+
+cgen {
+    map dataMap
+    destDir = './customDirectory'
+    mode = 'entity'
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cayenne/blob/93da6be1/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
----------------------------------------------------------------------
diff --git 
a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
 
b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
index e57d306..3bdf08b 100644
--- 
a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
+++ 
b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/CayenneGeneratorMojo.java
@@ -217,6 +217,7 @@ public class CayenneGeneratorMojo extends AbstractMojo {
                // Create the destination directory if necessary.
                // TODO: (KJM 11/2/06) The destDir really should be added as a
                // compilation resource for maven.
+
                if (!destDir.exists()) {
                        destDir.mkdirs();
                }
@@ -238,6 +239,7 @@ public class CayenneGeneratorMojo extends AbstractMojo {
 
                        ClassGenerationAction generator = 
createGenerator(dataMap);
                        generator.setLogger(logger);
+
                        if(force) {
                                // will (re-)generate all files
                                generator.setForce(true);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/93da6be1/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/CgenWithConfigMojoTest.java
----------------------------------------------------------------------
diff --git 
a/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/CgenWithConfigMojoTest.java
 
b/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/CgenWithConfigMojoTest.java
new file mode 100644
index 0000000..2532db5
--- /dev/null
+++ 
b/maven-plugins/cayenne-maven-plugin/src/test/java/org/apache/cayenne/tools/CgenWithConfigMojoTest.java
@@ -0,0 +1,51 @@
+/*****************************************************************
+ *   Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ ****************************************************************/
+package org.apache.cayenne.tools;
+
+import org.apache.maven.plugin.testing.AbstractMojoTestCase;
+
+import java.io.File;
+
+/**
+ * @since 4.1
+ */
+public class CgenWithConfigMojoTest extends AbstractMojoTestCase {
+
+    public void testCgen() throws Exception {
+        File pom = 
getTestFile("src/test/resources/cgen/project-to-test/cgen-pom.xml");
+        assertNotNull(pom);
+        assertTrue(pom.exists());
+
+        CayenneGeneratorMojo myMojo = (CayenneGeneratorMojo) 
lookupMojo("cgen", pom);
+        assertNotNull(myMojo);
+        myMojo.execute();
+
+        File testEntity = new File("target/cgenClasses/ObjEntity1.txt");
+        File notIncludedDataMapEntity = new 
File("target/cgenClasses/TestCgenMap.txt");
+
+        File notIncludedEntity = new File("target/cgenClasses/ObjEntity.txt");
+        File notIncludedSuperDataMap = new 
File("target/cgenClasses/_TestCgenMap.txt");
+
+        assertTrue(testEntity.exists());
+        assertFalse(notIncludedDataMapEntity.exists());
+
+        assertFalse(notIncludedEntity.exists());
+        assertFalse(notIncludedSuperDataMap.exists());
+    }
+}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/93da6be1/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/project-to-test/cgen-pom.xml
----------------------------------------------------------------------
diff --git 
a/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/project-to-test/cgen-pom.xml
 
b/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/project-to-test/cgen-pom.xml
new file mode 100644
index 0000000..eadddc6
--- /dev/null
+++ 
b/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/project-to-test/cgen-pom.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+       http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+
+    <name>Test CayenneCgenMojo</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <artifactId>cayenne-maven-plugin</artifactId>
+                <configuration>
+                    <map>src/test/resources/cgen/testCgenMap.map.xml</map>
+                    <destDir>target/cgenClasses</destDir>
+                    <mode>entity</mode>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

http://git-wip-us.apache.org/repos/asf/cayenne/blob/93da6be1/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/testCgenMap.map.xml
----------------------------------------------------------------------
diff --git 
a/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/testCgenMap.map.xml
 
b/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/testCgenMap.map.xml
new file mode 100644
index 0000000..930acbc
--- /dev/null
+++ 
b/maven-plugins/cayenne-maven-plugin/src/test/resources/cgen/testCgenMap.map.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<data-map xmlns="http://cayenne.apache.org/schema/10/modelMap";
+          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+          xsi:schemaLocation="http://cayenne.apache.org/schema/10/modelMap 
http://cayenne.apache.org/schema/10/modelMap.xsd";
+          project-version="10">
+    <embeddable className="Embeddable"/>
+    <obj-entity name="ObjEntity" className="ObjEntity"/>
+    <obj-entity name="ObjEntity1" className="ObjEntity1"/>
+    <cgen xmlns="http://cayenne.apache.org/schema/10/cgen";>
+        <objEntity>
+            <name>ObjEntity1</name>
+        </objEntity>
+        <generationMode>all</generationMode>
+        <dataMapTemplate>templates/v4_1/datamap-subclass.vm</dataMapTemplate>
+        
<dataMapSuperclassTemplate>templates/v4_1/datamap-superclass.vm</dataMapSuperclassTemplate>
+        <subclassTemplate>templates/v4_1/subclass.vm</subclassTemplate>
+        <superclassTemplate>templates/v4_1/superclass.vm</superclassTemplate>
+        
<embeddableTemplate>templates/v4_1/embeddable-subclass.vm</embeddableTemplate>
+        
<embeddableSuperclassTemplate>templates/v4_1/embeddable-superclass.vm</embeddableSuperclassTemplate>
+        <outputPattern>*.txt</outputPattern>
+        <makePairs>false</makePairs>
+        <usePkgPath>true</usePkgPath>
+        <overwriteSubclasses>false</overwriteSubclasses>
+        <createPropertyNames>false</createPropertyNames>
+        <encoding>UTF-8</encoding>
+    </cgen>
+</data-map>

Reply via email to