diff --git a/ant/pom.xml b/ant/pom.xml
index 1876630fbb..ebee82a56a 100644
--- a/ant/pom.xml
+++ b/ant/pom.xml
@@ -58,6 +58,12 @@
h2
test
+
+ org.apache.ivy
+ ivy
+ 2.5.2
+ test
+
@@ -115,6 +121,9 @@
docs/examples
+
+ **/README.md
+
diff --git a/ant/src/it/java/org/hibernate/tool/ant/ExamplesTestIT.java b/ant/src/it/java/org/hibernate/tool/ant/ExamplesTestIT.java
index 2e304bc24e..8c832d3126 100644
--- a/ant/src/it/java/org/hibernate/tool/ant/ExamplesTestIT.java
+++ b/ant/src/it/java/org/hibernate/tool/ant/ExamplesTestIT.java
@@ -1,17 +1,111 @@
package org.hibernate.tool.ant;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
+import org.apache.tools.ant.DefaultLogger;
+import org.apache.tools.ant.MagicNames;
+import org.apache.tools.ant.Project;
+import org.apache.tools.ant.ProjectHelper;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+import java.io.File;
+import java.net.URISyntaxException;
import java.net.URL;
+import java.nio.file.Files;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.Statement;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertFalse;
public class ExamplesTestIT {
+ private static File baseFolder;
+
+ @BeforeAll
+ public static void beforeAll() throws Exception {
+ baseFolder = determineBaseFolder();
+ editIncludedXml();
+ overwriteHibernateProperties();
+ createDatabase();
+ }
+
@Test
- public void testSomethin() {
- URL url = getClass().getClassLoader().getResource("5-minute-tutorial/build.xml");
- System.out.println(url);
+ public void test5MinuteTutorial() throws Exception {
+ File buildFile = new File(baseFolder, "5-minute-tutorial/build.xml");
+ Project project = createProject(buildFile);
+ assertNotNull(project);
+ File personFile = new File(baseFolder, "5-minute-tutorial/generated/Person.java");
+ assertFalse(personFile.exists());
+ project.executeTarget("reveng");
+ assertTrue(personFile.exists());
+ }
+
+ private Project createProject(File buildXmlFile) throws Exception {
+ Project result = new Project();
+ ProjectHelper projectHelper = ProjectHelper.getProjectHelper();
+ result.addReference(MagicNames.REFID_PROJECT_HELPER, projectHelper);
+ result.setBaseDir(buildXmlFile.getParentFile());
+ result.addBuildListener(createConsoleLogger());
+ projectHelper.parse(result, buildXmlFile);
+ return result;
+ }
+
+ private DefaultLogger createConsoleLogger() {
+ DefaultLogger consoleLogger = new DefaultLogger();
+ consoleLogger.setErrorPrintStream(System.err);
+ consoleLogger.setOutputPrintStream(System.out);
+ consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
+ return consoleLogger;
+ }
+
+ private static void editIncludedXml() throws Exception {
+ File xmlFile = new File(baseFolder, "common/included.xml");
+ StringBuffer xmlFileContents = new StringBuffer(
+ new String(Files.readAllBytes(xmlFile.toPath())));
+ int start = xmlFileContents.indexOf("");
+ end = xmlFileContents.indexOf("