From 433b2471d33efad77ce3b8088862bb12b0c77f1f Mon Sep 17 00:00:00 2001 From: Koen Aers Date: Fri, 1 Aug 2025 11:57:13 +0300 Subject: [PATCH] HBX-3068: Refactor the Ant integration tests to factor out common code - Add method 'createProjectAndBuild()' to TestTemplate to factor out creation of build.xml, database and hibernate.properties and run the ant build. - Collapse the respective 'verifyResult()' methods straight into the test - Create 'assertFolderExists(...)' and 'assertFileExists(...)' methods in TestTemplate to factor out some common verifications Signed-off-by: Koen Aers --- .../tool/ant/hbm2java/JpaDefaultTestIT.java | 25 +++---------- .../ant/hbm2java/NoAnnotationsTestIT.java | 25 +++---------- .../tool/ant/hbm2java/NoGenericsTestIT.java | 5 +-- .../tool/ant/hbm2java/UseGenericsTestIT.java | 5 +-- .../tool/ant/tutorial/TutorialTestIT.java | 5 +-- .../hibernate/tool/it/ant/TestTemplate.java | 37 ++++++++++++++++--- 6 files changed, 47 insertions(+), 55 deletions(-) diff --git a/ant/src/it/java/org/hibernate/tool/ant/hbm2java/JpaDefaultTestIT.java b/ant/src/it/java/org/hibernate/tool/ant/hbm2java/JpaDefaultTestIT.java index 3ff8cce710..b29b298cd1 100644 --- a/ant/src/it/java/org/hibernate/tool/ant/hbm2java/JpaDefaultTestIT.java +++ b/ant/src/it/java/org/hibernate/tool/ant/hbm2java/JpaDefaultTestIT.java @@ -22,25 +22,12 @@ public void testJpaDefault() throws Exception { setDatabaseCreationScript(new String[] { "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))" }); - createBuildXmlFile(); - createDatabase(); - createHibernatePropertiesFile(); - runAntBuild(); - verifyResult(); - } - - private void verifyResult() throws Exception { - File generatedOutputFolder = new File(getProjectDir(), "generated"); - 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())); + createProjectAndBuild(); + assertFolderExists("generated", 1); + assertFileExists("generated/Person.java"); + String generatedPersonJavaFileContents = getFileContents("generated/Person.java"); assertTrue(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;")); assertTrue(generatedPersonJavaFileContents.contains("public class Person ")); - } - + } + } diff --git a/ant/src/it/java/org/hibernate/tool/ant/hbm2java/NoAnnotationsTestIT.java b/ant/src/it/java/org/hibernate/tool/ant/hbm2java/NoAnnotationsTestIT.java index 9596f71ac1..61197ec829 100644 --- a/ant/src/it/java/org/hibernate/tool/ant/hbm2java/NoAnnotationsTestIT.java +++ b/ant/src/it/java/org/hibernate/tool/ant/hbm2java/NoAnnotationsTestIT.java @@ -23,25 +23,12 @@ public void testNoAnnotations() throws Exception { setDatabaseCreationScript(new String[] { "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))" }); - createBuildXmlFile(); - createDatabase(); - createHibernatePropertiesFile(); - runAntBuild(); - verifyResult(); - } - - private void verifyResult() throws Exception { - File generatedOutputFolder = new File(getProjectDir(), "generated"); - 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())); + createProjectAndBuild(); + assertFolderExists("generated", 1); + assertFileExists("generated/Person.java"); + String generatedPersonJavaFileContents = getFileContents("generated/Person.java"); assertFalse(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;")); assertTrue(generatedPersonJavaFileContents.contains("public class Person ")); - } - + } + } diff --git a/ant/src/it/java/org/hibernate/tool/ant/hbm2java/NoGenericsTestIT.java b/ant/src/it/java/org/hibernate/tool/ant/hbm2java/NoGenericsTestIT.java index 8113b65856..b0e66f57eb 100644 --- a/ant/src/it/java/org/hibernate/tool/ant/hbm2java/NoGenericsTestIT.java +++ b/ant/src/it/java/org/hibernate/tool/ant/hbm2java/NoGenericsTestIT.java @@ -26,10 +26,7 @@ public void testUseGenerics() throws Exception { "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))" }); - createBuildXmlFile(); - createDatabase(); - createHibernatePropertiesFile(); - runAntBuild(); + createProjectAndBuild(); verifyResult(); } diff --git a/ant/src/it/java/org/hibernate/tool/ant/hbm2java/UseGenericsTestIT.java b/ant/src/it/java/org/hibernate/tool/ant/hbm2java/UseGenericsTestIT.java index c8297e1742..6a390334f1 100644 --- a/ant/src/it/java/org/hibernate/tool/ant/hbm2java/UseGenericsTestIT.java +++ b/ant/src/it/java/org/hibernate/tool/ant/hbm2java/UseGenericsTestIT.java @@ -25,10 +25,7 @@ public void testUseGenerics() throws Exception { "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))" }); - createBuildXmlFile(); - createDatabase(); - createHibernatePropertiesFile(); - runAntBuild(); + createProjectAndBuild(); verifyResult(); } diff --git a/ant/src/it/java/org/hibernate/tool/ant/tutorial/TutorialTestIT.java b/ant/src/it/java/org/hibernate/tool/ant/tutorial/TutorialTestIT.java index e9a271907d..d8ef3c134c 100644 --- a/ant/src/it/java/org/hibernate/tool/ant/tutorial/TutorialTestIT.java +++ b/ant/src/it/java/org/hibernate/tool/ant/tutorial/TutorialTestIT.java @@ -22,10 +22,7 @@ public void testTutorial() throws Exception { setDatabaseCreationScript(new String[] { "create table PERSON (ID int not null, NAME varchar(20), primary key (ID))" }); - createBuildXmlFile(); - createDatabase(); - createHibernatePropertiesFile(); - runAntBuild(); + createProjectAndBuild(); verifyResult(); } diff --git a/ant/src/it/java/org/hibernate/tool/it/ant/TestTemplate.java b/ant/src/it/java/org/hibernate/tool/it/ant/TestTemplate.java index ddc8654389..d0d111a020 100644 --- a/ant/src/it/java/org/hibernate/tool/it/ant/TestTemplate.java +++ b/ant/src/it/java/org/hibernate/tool/it/ant/TestTemplate.java @@ -10,6 +10,7 @@ import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; +import java.util.Objects; import static org.junit.jupiter.api.Assertions.*; @@ -38,7 +39,33 @@ protected String constructBuildXmlFileContents() { return buildXmlFileContents.replace("@hibernateToolTaskXml@", hibernateToolTaskXml); } - protected void runAntBuild() { + protected String getFileContents(String path) throws Exception { + return new String( + Files.readAllBytes( + new File(getProjectDir(), path).toPath())); + } + + protected void createProjectAndBuild() throws Exception { + createBuildXmlFile(); + createDatabase(); + createHibernatePropertiesFile(); + runAntBuild(); + } + + protected void assertFolderExists(String path, int amountOfChildren) { + File generatedOutputFolder = new File(getProjectDir(), path); + assertTrue(generatedOutputFolder.exists()); + assertTrue(generatedOutputFolder.isDirectory()); + assertEquals(amountOfChildren, Objects.requireNonNull(generatedOutputFolder.list()).length); + } + + protected void assertFileExists(String path) { + File generatedPersonJavaFile = new File(getProjectDir(), path); + assertTrue(generatedPersonJavaFile.exists()); + assertTrue(generatedPersonJavaFile.isFile()); + } + + private void runAntBuild() { File buildXmlFile = new File(getProjectDir(), "build.xml"); Project project = new Project(); project.setBaseDir(getProjectDir()); @@ -47,18 +74,18 @@ protected void runAntBuild() { project.executeTarget(project.getDefaultTarget()); } - protected void createBuildXmlFile() throws Exception { + private void createBuildXmlFile() throws Exception { File buildXmlFile = new File(getProjectDir(), "build.xml"); assertFalse(buildXmlFile.exists()); Files.writeString(buildXmlFile.toPath(), constructBuildXmlFileContents()); assertTrue(buildXmlFile.exists()); } - protected String constructJdbcConnectionString() { + private String constructJdbcConnectionString() { return "jdbc:h2:" + getProjectDir().getAbsolutePath() + "/database/test;AUTO_SERVER=TRUE"; } - protected void createDatabase() throws Exception { + private void createDatabase() throws Exception { File databaseFile = new File(getProjectDir(), "database/test.mv.db"); assertFalse(databaseFile.exists()); assertFalse(databaseFile.isFile()); @@ -73,7 +100,7 @@ protected void createDatabase() throws Exception { assertTrue(databaseFile.isFile()); } - protected void createHibernatePropertiesFile() throws Exception { + private void createHibernatePropertiesFile() throws Exception { File hibernatePropertiesFile = new File(getProjectDir(), "hibernate.properties"); String hibernatePropertiesFileContents = "hibernate.connection.driver_class=org.h2.Driver\n" +