Skip to content

Commit 33c9b73

Browse files
committed
HBX-3080: Refactor the Gradle integration tests to factor out common code
Signed-off-by: Koen Aers <[email protected]>
1 parent 4b94157 commit 33c9b73

File tree

16 files changed

+482
-1167
lines changed

16 files changed

+482
-1167
lines changed

gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/GenerateCfgTest.java

Lines changed: 23 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -20,36 +20,32 @@
2020
import static org.junit.jupiter.api.Assertions.assertTrue;
2121

2222
import java.io.File;
23-
import java.io.IOException;
2423
import java.nio.file.Files;
2524

26-
import org.gradle.testkit.runner.BuildResult;
27-
import org.hibernate.tool.gradle.test.func.utils.FuncTestConstants;
28-
import org.hibernate.tool.gradle.test.func.utils.FuncTestTemplate;
25+
import org.hibernate.tool.it.gradle.TestTemplate;
26+
import org.junit.jupiter.api.BeforeEach;
2927
import org.junit.jupiter.api.Test;
3028

31-
class GenerateCfgTest extends FuncTestTemplate implements FuncTestConstants {
29+
class GenerateCfgTest extends TestTemplate {
3230

33-
@Test
34-
void testGenerateCfg() throws IOException {
35-
performTask("generateCfg", true);
36-
}
37-
38-
@Override
39-
public void verifyBuild(BuildResult buildResult) {
40-
try {
41-
File generatedSourcesFolder = new File(projectDir, "generated-sources");
42-
assertTrue(buildResult.getOutput().contains("Starting CFG export to directory: " + generatedSourcesFolder.getCanonicalPath()));
43-
assertTrue(generatedSourcesFolder.exists());
44-
assertTrue(generatedSourcesFolder.isDirectory());
45-
File cfgFile = new File(generatedSourcesFolder, "hibernate.cfg.xml");
46-
assertTrue(cfgFile.exists());
47-
assertTrue(cfgFile.isFile());
48-
String cfgContents = Files.readString(cfgFile.toPath());
49-
assertTrue(cfgContents.contains("<mapping resource=\"Foo.hbm.xml\"/>"));
50-
} catch (Exception e) {
51-
throw new RuntimeException(e);
52-
}
53-
}
31+
@BeforeEach
32+
public void beforeEach() {
33+
setGradleTaskToPerform("generateCfg");
34+
setDatabaseCreationScript(new String[] {
35+
"create table FOO (ID int not null, BAR varchar(20), primary key (ID))"
36+
});
37+
}
5438

55-
}
39+
@Test
40+
void testGenerateCfg() throws Exception {
41+
createProjectAndExecuteGradleCommand();
42+
File generatedSourcesFolder = new File(getProjectDir(), "app/generated-sources");
43+
assertTrue(getBuildResult().getOutput().contains("Starting CFG export to directory: "));
44+
File cfgFile = new File(generatedSourcesFolder, "hibernate.cfg.xml");
45+
assertTrue(cfgFile.exists());
46+
assertTrue(cfgFile.isFile());
47+
String cfgContents = Files.readString(cfgFile.toPath());
48+
assertTrue(cfgContents.contains("<mapping resource=\"Foo.hbm.xml\"/>"));
49+
}
50+
51+
}

gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/GenerateDaoTest.java

Lines changed: 26 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,44 +20,36 @@
2020
import static org.junit.jupiter.api.Assertions.assertTrue;
2121

2222
import java.io.File;
23-
import java.io.IOException;
2423

25-
import org.gradle.testkit.runner.BuildResult;
26-
import org.hibernate.tool.gradle.test.func.utils.FuncTestConstants;
27-
import org.hibernate.tool.gradle.test.func.utils.FuncTestTemplate;
24+
import org.hibernate.tool.it.gradle.TestTemplate;
25+
import org.junit.jupiter.api.BeforeEach;
2826
import org.junit.jupiter.api.Test;
2927

30-
class GenerateDaoTest extends FuncTestTemplate implements FuncTestConstants {
28+
class GenerateDaoTest extends TestTemplate {
3129

32-
private static final String BUILD_FILE_HIBERNATE_TOOLS_SECTION =
33-
"hibernateTools {\n" +
34-
" packageName = 'foo.model'\n" +
35-
"}\n";
30+
@BeforeEach
31+
public void beforeEach() {
32+
setGradleTaskToPerform("generateDao");
33+
setDatabaseCreationScript(new String[] {
34+
"create table FOO (ID int not null, BAR varchar(20), primary key (ID))"
35+
});
36+
}
3637

37-
@Override
38-
public String getBuildFileHibernateToolsSection() {
39-
return BUILD_FILE_HIBERNATE_TOOLS_SECTION;
38+
@Test
39+
void testGenerateDao() throws Exception {
40+
setHibernateToolsExtensionSection(
41+
"hibernateTools { \n" +
42+
" packageName = 'foo.model'\n" +
43+
"}"
44+
);
45+
createProjectAndExecuteGradleCommand();
46+
File generatedSourcesFolder = new File(getProjectDir(), "app/generated-sources");
47+
assertTrue(getBuildResult().getOutput().contains("Starting DAO export to directory: "));
48+
assertTrue(generatedSourcesFolder.exists());
49+
assertTrue(generatedSourcesFolder.isDirectory());
50+
File fooFile = new File(generatedSourcesFolder, "foo/model/FooHome.java");
51+
assertTrue(fooFile.exists());
52+
assertTrue(fooFile.isFile());
4053
}
4154

42-
@Test
43-
void testGenerateJava() throws IOException {
44-
performTask("generateDao", true);
45-
}
46-
47-
@Override
48-
protected void verifyBuild(BuildResult buildResult) {
49-
try {
50-
File generatedSourcesFolder = new File(projectDir, "generated-sources");
51-
assertTrue(buildResult.getOutput().contains(
52-
"Starting DAO export to directory: " + generatedSourcesFolder.getCanonicalPath()));
53-
assertTrue(generatedSourcesFolder.exists());
54-
assertTrue(generatedSourcesFolder.isDirectory());
55-
File fooFile = new File(generatedSourcesFolder, "foo/model/FooHome.java");
56-
assertTrue(fooFile.exists());
57-
assertTrue(fooFile.isFile());
58-
} catch (Exception e) {
59-
throw new RuntimeException(e);
60-
}
61-
}
62-
63-
}
55+
}

gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/GenerateHbmTest.java

Lines changed: 24 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,44 +20,36 @@
2020
import static org.junit.jupiter.api.Assertions.assertTrue;
2121

2222
import java.io.File;
23-
import java.io.IOException;
2423

25-
import org.gradle.testkit.runner.BuildResult;
26-
import org.hibernate.tool.gradle.test.func.utils.FuncTestConstants;
27-
import org.hibernate.tool.gradle.test.func.utils.FuncTestTemplate;
24+
import org.hibernate.tool.it.gradle.TestTemplate;
25+
import org.junit.jupiter.api.BeforeEach;
2826
import org.junit.jupiter.api.Test;
2927

30-
class GenerateHbmTest extends FuncTestTemplate implements FuncTestConstants {
28+
class GenerateHbmTest extends TestTemplate {
3129

32-
private static final String BUILD_FILE_HIBERNATE_TOOLS_SECTION =
33-
"hibernateTools {\n" +
34-
" packageName = 'foo.model'\n" +
35-
"}\n";
36-
37-
@Override
38-
public String getBuildFileHibernateToolsSection() {
39-
return BUILD_FILE_HIBERNATE_TOOLS_SECTION;
30+
@BeforeEach
31+
public void beforeEach() {
32+
setGradleTaskToPerform("generateHbm");
33+
setDatabaseCreationScript(new String[] {
34+
"create table FOO (ID int not null, BAR varchar(20), primary key (ID))"
35+
});
4036
}
4137

42-
@Test
43-
void testGenerateHbm() throws IOException {
44-
performTask("generateHbm", true);
45-
}
46-
47-
@Override
48-
protected void verifyBuild(BuildResult buildResult) {
49-
try {
50-
File generatedSourcesFolder = new File(projectDir, "generated-sources");
51-
assertTrue(buildResult.getOutput().contains(
52-
"Starting HBM export to directory: " + generatedSourcesFolder.getCanonicalPath()));
53-
assertTrue(generatedSourcesFolder.exists());
54-
assertTrue(generatedSourcesFolder.isDirectory());
55-
File fooFile = new File(generatedSourcesFolder, "foo/model/Foo.hbm.xml");
56-
assertTrue(fooFile.exists());
57-
assertTrue(fooFile.isFile());
58-
} catch (Exception e) {
59-
throw new RuntimeException(e);
60-
}
38+
@Test
39+
void testGenerateHbm() throws Exception {
40+
setHibernateToolsExtensionSection(
41+
"hibernateTools { \n" +
42+
" packageName = 'foo.model'\n" +
43+
"}"
44+
);
45+
createProjectAndExecuteGradleCommand();
46+
File generatedSourcesFolder = new File(getProjectDir(), "app/generated-sources");
47+
assertTrue(getBuildResult().getOutput().contains("Starting HBM export to directory: "));
48+
assertTrue(generatedSourcesFolder.exists());
49+
assertTrue(generatedSourcesFolder.isDirectory());
50+
File fooFile = new File(generatedSourcesFolder, "foo/model/Foo.hbm.xml");
51+
assertTrue(fooFile.exists());
52+
assertTrue(fooFile.isFile());
6153
}
6254

6355
}

gradle/plugin/src/functionalTest/java/org/hibernate/tool/gradle/GenerateJavaTest.java

Lines changed: 126 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -17,47 +17,139 @@
1717
*/
1818
package org.hibernate.tool.gradle;
1919

20+
import static org.junit.jupiter.api.Assertions.assertEquals;
21+
import static org.junit.jupiter.api.Assertions.assertFalse;
2022
import static org.junit.jupiter.api.Assertions.assertTrue;
2123

2224
import java.io.File;
23-
import java.io.IOException;
25+
import java.nio.file.Files;
2426

25-
import org.gradle.testkit.runner.BuildResult;
26-
import org.hibernate.tool.gradle.test.func.utils.FuncTestConstants;
27-
import org.hibernate.tool.gradle.test.func.utils.FuncTestTemplate;
27+
import org.hibernate.tool.it.gradle.TestTemplate;
28+
import org.junit.jupiter.api.BeforeEach;
2829
import org.junit.jupiter.api.Test;
2930

30-
class GenerateJavaTest extends FuncTestTemplate implements FuncTestConstants {
31+
class GenerateJavaTest extends TestTemplate {
3132

32-
private static final String BUILD_FILE_HIBERNATE_TOOLS_SECTION =
33-
"hibernateTools {\n" +
34-
" packageName = 'foo.model'\n" +
35-
"}\n";
33+
@BeforeEach
34+
public void beforeEach() {
35+
setGradleTaskToPerform("generateJava");
36+
setDatabaseCreationScript(new String[] {
37+
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))"
38+
});
39+
}
40+
41+
@Test
42+
public void testJpaDefault() throws Exception {
43+
createProjectAndExecuteGradleCommand();
44+
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
45+
assertTrue(generatedOutputFolder.exists());
46+
assertTrue(generatedOutputFolder.isDirectory());
47+
assertEquals(1, generatedOutputFolder.list().length);
48+
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
49+
assertTrue(generatedPersonJavaFile.exists());
50+
assertTrue(generatedPersonJavaFile.isFile());
51+
String generatedPersonJavaFileContents = new String(
52+
Files.readAllBytes(generatedPersonJavaFile.toPath()));
53+
assertTrue(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;"));
54+
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
55+
}
56+
57+
@Test
58+
public void testNoAnnotations() throws Exception {
59+
setHibernateToolsExtensionSection(
60+
"hibernateTools { \n" +
61+
" generateAnnotations=false \n" +
62+
"}"
63+
);
64+
createProjectAndExecuteGradleCommand();
65+
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
66+
assertTrue(generatedOutputFolder.exists());
67+
assertTrue(generatedOutputFolder.isDirectory());
68+
assertEquals(1, generatedOutputFolder.list().length);
69+
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
70+
assertTrue(generatedPersonJavaFile.exists());
71+
assertTrue(generatedPersonJavaFile.isFile());
72+
String generatedPersonJavaFileContents = new String(
73+
Files.readAllBytes(generatedPersonJavaFile.toPath()));
74+
assertFalse(generatedPersonJavaFileContents.contains("import jakarta.persistence.Entity;"));
75+
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
76+
}
77+
78+
@Test
79+
public void testNoGenerics() throws Exception {
80+
setDatabaseCreationScript(new String[] {
81+
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))",
82+
"create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " +
83+
" primary key (ID), foreign key (OWNER_ID) references PERSON(ID))"
84+
});
85+
setHibernateToolsExtensionSection(
86+
"hibernateTools { \n" +
87+
" useGenerics=false \n" +
88+
"}"
89+
);
90+
createProjectAndExecuteGradleCommand();
91+
executeGradleCommand("generateJava");
92+
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
93+
assertTrue(generatedOutputFolder.exists());
94+
assertTrue(generatedOutputFolder.isDirectory());
95+
assertEquals(2, generatedOutputFolder.list().length);
96+
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
97+
assertTrue(generatedPersonJavaFile.exists());
98+
assertTrue(generatedPersonJavaFile.isFile());
99+
String generatedPersonJavaFileContents = new String(
100+
Files.readAllBytes(generatedPersonJavaFile.toPath()));
101+
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
102+
assertFalse(generatedPersonJavaFileContents.contains("Set<Item>"));
103+
File generatedItemJavaFile = new File(generatedOutputFolder, "Item.java");
104+
assertTrue(generatedItemJavaFile.exists());
105+
assertTrue(generatedItemJavaFile.isFile());
106+
String generatedItemJavaFileContents = new String(
107+
Files.readAllBytes(generatedItemJavaFile.toPath()));
108+
assertTrue(generatedItemJavaFileContents.contains("public class Item "));
109+
}
110+
111+
@Test
112+
public void testUseGenerics() throws Exception {
113+
setDatabaseCreationScript(new String[] {
114+
"create table PERSON (ID int not null, NAME varchar(20), primary key (ID))",
115+
"create table ITEM (ID int not null, NAME varchar(20), OWNER_ID int not null, " +
116+
" primary key (ID), foreign key (OWNER_ID) references PERSON(ID))"
117+
});
118+
createProjectAndExecuteGradleCommand();
119+
executeGradleCommand("generateJava");
120+
File generatedOutputFolder = new File(getProjectDir(), "app/generated-sources");
121+
assertTrue(generatedOutputFolder.exists());
122+
assertTrue(generatedOutputFolder.isDirectory());
123+
assertEquals(2, generatedOutputFolder.list().length);
124+
File generatedPersonJavaFile = new File(generatedOutputFolder, "Person.java");
125+
assertTrue(generatedPersonJavaFile.exists());
126+
assertTrue(generatedPersonJavaFile.isFile());
127+
String generatedPersonJavaFileContents = new String(
128+
Files.readAllBytes(generatedPersonJavaFile.toPath()));
129+
assertTrue(generatedPersonJavaFileContents.contains("public class Person "));
130+
assertTrue(generatedPersonJavaFileContents.contains("Set<Item>"));
131+
File generatedItemJavaFile = new File(generatedOutputFolder, "Item.java");
132+
assertTrue(generatedItemJavaFile.exists());
133+
assertTrue(generatedItemJavaFile.isFile());
134+
String generatedItemJavaFileContents = new String(
135+
Files.readAllBytes(generatedItemJavaFile.toPath()));
136+
assertTrue(generatedItemJavaFileContents.contains("public class Item "));
137+
}
36138

37-
@Override
38-
public String getBuildFileHibernateToolsSection() {
39-
return BUILD_FILE_HIBERNATE_TOOLS_SECTION;
139+
@Test
140+
public void testPackageName() throws Exception {
141+
setHibernateToolsExtensionSection(
142+
"hibernateTools { \n" +
143+
" packageName = 'foo.model' \n" +
144+
"}"
145+
);
146+
createProjectAndExecuteGradleCommand();
147+
File generatedSourcesFolder = new File(getProjectDir(), "app/generated-sources");
148+
assertTrue(generatedSourcesFolder.exists());
149+
assertTrue(generatedSourcesFolder.isDirectory());
150+
File fooFile = new File(generatedSourcesFolder, "foo/model/Person.java");
151+
assertTrue(fooFile.exists());
152+
assertTrue(fooFile.isFile());
40153
}
41154

42-
@Test
43-
void testGenerateJava() throws IOException {
44-
performTask("generateJava", true);
45-
}
46-
47-
@Override
48-
protected void verifyBuild(BuildResult buildResult) {
49-
try {
50-
File generatedSourcesFolder = new File(projectDir, "generated-sources");
51-
assertTrue(buildResult.getOutput().contains(
52-
"Starting Java export to directory: " + generatedSourcesFolder.getCanonicalPath()));
53-
assertTrue(generatedSourcesFolder.exists());
54-
assertTrue(generatedSourcesFolder.isDirectory());
55-
File fooFile = new File(generatedSourcesFolder, "foo/model/Foo.java");
56-
assertTrue(fooFile.exists());
57-
assertTrue(fooFile.isFile());
58-
} catch (Exception e) {
59-
throw new RuntimeException(e);
60-
}
61-
}
62-
63-
}
155+
}

0 commit comments

Comments
 (0)