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>