diff --git a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/GenerateJavaTest.java b/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/GenerateJavaTest.java index f0dab6b248..cbfc8c757f 100644 --- a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/GenerateJavaTest.java +++ b/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/GenerateJavaTest.java @@ -17,32 +17,133 @@ */ package org.hibernate.tool.gradle; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; -import java.io.IOException; import java.nio.file.Files; -import org.gradle.testkit.runner.BuildResult; -import org.hibernate.tool.gradle.test.func.utils.FuncTestConstants; -import org.hibernate.tool.gradle.test.func.utils.FuncTestTemplate; import org.hibernate.tool.it.gradle.TestTemplate; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; class GenerateJavaTest extends TestTemplate { - @Test - public void testPackageName() throws Exception { + @BeforeEach + public void beforeEach() { + setGradleCommandToExecute("generateJava"); setDatabaseCreationScript(new String[] { "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))" }); + } + + @Test + public void testJpaDefault() throws Exception { + createProjectAndExecuteGradleCommand(); + File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources"); + assertTrue(generatedOutputFolder.exists()); + assertTrue(generatedOutputFolder.isDirectory()); + assertEquals(1, generatedOutputFolder.list().length); + File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java"); + assertTrue(generatedPersonJavaFile.exists()); + assertTrue(generatedPersonJavaFile.isFile()); + String generatedPersonJavaFileContents = new String( + Files.readAllBytes(generatedPersonJavaFile.toPath())); + assertTrue(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;")); + assertTrue(generatedPersonJavaFileContents.contains("public class Person ")); + } + + @Test + public void testNoAnnotations() throws Exception { + setHibernateToolsExtensionSection( + "hibernateTools { \n" + + " generateAnnotations=false \n" + + "}" + ); + createProjectAndExecuteGradleCommand(); + File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources"); + assertTrue(generatedOutputFolder.exists()); + assertTrue(generatedOutputFolder.isDirectory()); + assertEquals(1, generatedOutputFolder.list().length); + File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java"); + assertTrue(generatedPersonJavaFile.exists()); + assertTrue(generatedPersonJavaFile.isFile()); + String generatedPersonJavaFileContents = new String( + Files.readAllBytes(generatedPersonJavaFile.toPath())); + assertFalse(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;")); + assertTrue(generatedPersonJavaFileContents.contains("public class Person ")); + } + + @Test + public void testNoGenerics() throws Exception { + setDatabaseCreationScript(new String[] { + "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))", + "create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " + + " primary key (ID), foreign key (OWNER_ID) references PERSON(ID))" + }); + setHibernateToolsExtensionSection( + "hibernateTools { \n" + + " useGenerics=false \n" + + "}" + ); + createProjectAndExecuteGradleCommand(); + executeGradleCommand("generateJava"); + File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources"); + assertTrue(generatedOutputFolder.exists()); + assertTrue(generatedOutputFolder.isDirectory()); + assertEquals(2, generatedOutputFolder.list().length); + File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java"); + assertTrue(generatedPersonJavaFile.exists()); + assertTrue(generatedPersonJavaFile.isFile()); + String generatedPersonJavaFileContents = new String( + Files.readAllBytes(generatedPersonJavaFile.toPath())); + assertTrue(generatedPersonJavaFileContents.contains("public class Person ")); + assertFalse(generatedPersonJavaFileContents.contains("Set")); + File generatedItemJavaFile = new File(generatedOutputFolder, "Item.java"); + assertTrue(generatedItemJavaFile.exists()); + assertTrue(generatedItemJavaFile.isFile()); + String generatedItemJavaFileContents = new String( + Files.readAllBytes(generatedItemJavaFile.toPath())); + assertTrue(generatedItemJavaFileContents.contains("public class Item ")); + } + + @Test + public void testUseGenerics() throws Exception { + setDatabaseCreationScript(new String[] { + "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))", + "create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " + + " primary key (ID), foreign key (OWNER_ID) references PERSON(ID))" + }); + createProjectAndExecuteGradleCommand(); + executeGradleCommand("generateJava"); + File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources"); + assertTrue(generatedOutputFolder.exists()); + assertTrue(generatedOutputFolder.isDirectory()); + assertEquals(2, generatedOutputFolder.list().length); + File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java"); + assertTrue(generatedPersonJavaFile.exists()); + assertTrue(generatedPersonJavaFile.isFile()); + String generatedPersonJavaFileContents = new String( + Files.readAllBytes(generatedPersonJavaFile.toPath())); + assertTrue(generatedPersonJavaFileContents.contains("public class Person ")); + assertTrue(generatedPersonJavaFileContents.contains("Set")); + File generatedItemJavaFile = new File(generatedOutputFolder, "Item.java"); + assertTrue(generatedItemJavaFile.exists()); + assertTrue(generatedItemJavaFile.isFile()); + String generatedItemJavaFileContents = new String( + Files.readAllBytes(generatedItemJavaFile.toPath())); + assertTrue(generatedItemJavaFileContents.contains("public class Item ")); + } + + @Test + public void testPackageName() throws Exception { setHibernateToolsExtensionSection( "hibernateTools { \n" + " packageName = 'foo.model' \n" + "}" ); - createProject(); - executeGradleCommand("generateJava"); + createProjectAndExecuteGradleCommand(); File generatedSourcesFolder = new File(getProjectDir(), "app/generated-sources"); assertTrue(generatedSourcesFolder.exists()); assertTrue(generatedSourcesFolder.isDirectory()); @@ -51,5 +152,4 @@ public void testPackageName() throws Exception { assertTrue(fooFile.isFile()); } - } diff --git a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/tutorial/TutorialTest.java b/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/TutorialTest.java similarity index 84% rename from gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/tutorial/TutorialTest.java rename to gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/TutorialTest.java index ebeb6e3201..669c835566 100644 --- a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/tutorial/TutorialTest.java +++ b/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/TutorialTest.java @@ -1,16 +1,10 @@ -package org.hibernate.tool.gradle.tutorial; +package org.hibernate.tool.gradle; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.File; -import java.nio.file.Files; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.List; import org.gradle.testkit.runner.BuildResult; import org.gradle.testkit.runner.GradleRunner; diff --git a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/JpaDefaultTest.java b/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/JpaDefaultTest.java deleted file mode 100644 index 6e18f44d17..0000000000 --- a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/JpaDefaultTest.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.hibernate.tool.gradle.java; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.File; -import java.nio.file.Files; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.List; - -import org.gradle.testkit.runner.BuildResult; -import org.gradle.testkit.runner.GradleRunner; -import org.junit.jupiter.api.Test; - -import org.hibernate.tool.it.gradle.TestTemplate; - -public class JpaDefaultTest extends TestTemplate { - - @Test - public void testJpaDefault() throws Exception { - setDatabaseCreationScript(new String[] { - "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))", - "insert into PERSON values (1, 'foo')" - }); - createProject(); - executeGradleCommand("generateJava"); - File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources"); - assertTrue(generatedOutputFolder.exists()); - assertTrue(generatedOutputFolder.isDirectory()); - assertEquals(1, generatedOutputFolder.list().length); - File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java"); - assertTrue(generatedPersonJavaFile.exists()); - assertTrue(generatedPersonJavaFile.isFile()); - String generatedPersonJavaFileContents = new String( - Files.readAllBytes(generatedPersonJavaFile.toPath())); - assertTrue(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;")); - assertTrue(generatedPersonJavaFileContents.contains("public class Person ")); - } - -} diff --git a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/NoAnnotationsTest.java b/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/NoAnnotationsTest.java deleted file mode 100644 index de2f449e88..0000000000 --- a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/NoAnnotationsTest.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.hibernate.tool.gradle.java; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.File; -import java.nio.file.Files; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.ResultSet; -import java.sql.Statement; -import java.util.List; - -import org.gradle.testkit.runner.BuildResult; -import org.gradle.testkit.runner.GradleRunner; -import org.junit.jupiter.api.Test; - -import org.hibernate.tool.it.gradle.TestTemplate; - -public class NoAnnotationsTest extends TestTemplate { - - @Test - public void testNoAnnotations() throws Exception { - setDatabaseCreationScript(new String[] { - "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))", - "insert into PERSON values (1, 'foo')" - }); - setHibernateToolsExtensionSection( - "hibernateTools { \n" + - " generateAnnotations=false \n" + - "}" - ); - createProject(); - executeGradleCommand("generateJava"); - File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources"); - assertTrue(generatedOutputFolder.exists()); - assertTrue(generatedOutputFolder.isDirectory()); - assertEquals(1, generatedOutputFolder.list().length); - File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java"); - assertTrue(generatedPersonJavaFile.exists()); - assertTrue(generatedPersonJavaFile.isFile()); - String generatedPersonJavaFileContents = new String( - Files.readAllBytes(generatedPersonJavaFile.toPath())); - assertFalse(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;")); - assertTrue(generatedPersonJavaFileContents.contains("public class Person ")); - } - -} diff --git a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/NoGenerics.java b/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/NoGenerics.java deleted file mode 100644 index e143e0ffcd..0000000000 --- a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/NoGenerics.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.hibernate.tool.gradle.java; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.File; -import java.nio.file.Files; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.Statement; -import java.util.List; - -import org.gradle.testkit.runner.BuildResult; -import org.gradle.testkit.runner.GradleRunner; -import org.junit.jupiter.api.Test; - -import org.hibernate.tool.it.gradle.TestTemplate; - -public class NoGenerics extends TestTemplate { - - @Test - public void testNoGenerics() throws Exception { - setDatabaseCreationScript(new String[] { - "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))", - "create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " + - " primary key (ID), foreign key (OWNER_ID) references PERSON(ID))" - }); - setHibernateToolsExtensionSection( - "hibernateTools { \n" + - " useGenerics=false \n" + - "}" - ); - createProject(); - executeGradleCommand("generateJava"); - File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources"); - assertTrue(generatedOutputFolder.exists()); - assertTrue(generatedOutputFolder.isDirectory()); - assertEquals(2, generatedOutputFolder.list().length); - File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java"); - assertTrue(generatedPersonJavaFile.exists()); - assertTrue(generatedPersonJavaFile.isFile()); - String generatedPersonJavaFileContents = new String( - Files.readAllBytes(generatedPersonJavaFile.toPath())); - assertTrue(generatedPersonJavaFileContents.contains("public class Person ")); - assertFalse(generatedPersonJavaFileContents.contains("Set")); - File generatedItemJavaFile = new File(generatedOutputFolder, "Item.java"); - assertTrue(generatedItemJavaFile.exists()); - assertTrue(generatedItemJavaFile.isFile()); - String generatedItemJavaFileContents = new String( - Files.readAllBytes(generatedItemJavaFile.toPath())); - assertTrue(generatedItemJavaFileContents.contains("public class Item ")); - } - -} diff --git a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/UseGenerics.java b/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/UseGenerics.java deleted file mode 100644 index 6b88e92bff..0000000000 --- a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/java/UseGenerics.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.hibernate.tool.gradle.java; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.File; -import java.nio.file.Files; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.Statement; -import java.util.List; - -import org.gradle.testkit.runner.BuildResult; -import org.gradle.testkit.runner.GradleRunner; -import org.junit.jupiter.api.Test; - -import org.hibernate.tool.it.gradle.TestTemplate; - -public class UseGenerics extends TestTemplate { - - @Test - public void testUseGenerics() throws Exception { - setDatabaseCreationScript(new String[] { - "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))", - "create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " + - " primary key (ID), foreign key (OWNER_ID) references PERSON(ID))" - }); - createProject(); - executeGradleCommand("generateJava"); - File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources"); - assertTrue(generatedOutputFolder.exists()); - assertTrue(generatedOutputFolder.isDirectory()); - assertEquals(2, generatedOutputFolder.list().length); - File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java"); - assertTrue(generatedPersonJavaFile.exists()); - assertTrue(generatedPersonJavaFile.isFile()); - String generatedPersonJavaFileContents = new String( - Files.readAllBytes(generatedPersonJavaFile.toPath())); - assertTrue(generatedPersonJavaFileContents.contains("public class Person ")); - assertTrue(generatedPersonJavaFileContents.contains("Set")); - File generatedItemJavaFile = new File(generatedOutputFolder, "Item.java"); - assertTrue(generatedItemJavaFile.exists()); - assertTrue(generatedItemJavaFile.isFile()); - String generatedItemJavaFileContents = new String( - Files.readAllBytes(generatedItemJavaFile.toPath())); - assertTrue(generatedItemJavaFileContents.contains("public class Item ")); - } - -} diff --git a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/it/gradle/TestTemplate.java b/gradle/plugin/src/functionalTest/java/org/hibernate/tool/it/gradle/TestTemplate.java index e93ec7b7a4..d470e8f6ff 100644 --- a/gradle/plugin/src/functionalTest/java/org/hibernate/tool/it/gradle/TestTemplate.java +++ b/gradle/plugin/src/functionalTest/java/org/hibernate/tool/it/gradle/TestTemplate.java @@ -29,6 +29,7 @@ public class TestTemplate { private String[] databaseCreationScript; private String hibernateToolsExtensionSection; + private String gradleCommandToExecute; protected File getProjectDir() { return projectDir; } protected File getGradlePropertiesFile() { return gradlePropertiesFile; } @@ -41,6 +42,8 @@ public class TestTemplate { protected void setDatabaseCreationScript(String[] script) { databaseCreationScript = script; } protected String getHibernateToolsExtensionSection() { return hibernateToolsExtensionSection; } protected void setHibernateToolsExtensionSection(String s) { hibernateToolsExtensionSection = s; } + protected String getGradleCommandToExecute() { return gradleCommandToExecute; } + protected void setGradleCommandToExecute(String command) { gradleCommandToExecute = command; } protected void executeGradleCommand(String ... gradleCommandLine) { GradleRunner runner = GradleRunner.create(); @@ -60,6 +63,11 @@ protected void createProject() throws Exception { createHibernatePropertiesFile(); } + protected void createProjectAndExecuteGradleCommand() throws Exception { + createProject(); + executeGradleCommand(getGradleCommandToExecute()); + } + protected void initGradleProject() throws Exception { executeGradleCommand(GRADLE_INIT_PROJECT_ARGUMENTS); setGradlePropertiesFile(new File(getProjectDir(), "gradle.properties"));