Skip to content

Commit db16d66

Browse files
John Burnswakingrufus
authored andcommitted
support project group and version in testKit DSL
fixup some javadocs
1 parent dc264b0 commit db16d66

File tree

8 files changed

+65
-2
lines changed

8 files changed

+65
-2
lines changed

src/main/java/nebula/test/dsl/BuildTaskAssert.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public static BuildTaskAssert assertThat(BuildTask actual) {
3333

3434
/**
3535
* Assert that the task was run and resulted in the expected outcome
36+
* @param outcome the expected outcome
3637
*/
3738
@Contract("_ -> this")
3839
public BuildTaskAssert hasOutcome(TaskOutcome outcome) {
@@ -46,6 +47,7 @@ public BuildTaskAssert hasOutcome(TaskOutcome outcome) {
4647

4748
/**
4849
* Assert that the task was run and resulted in any of the expected outcomes
50+
* @param outcomes the expected possible outcomes
4951
*/
5052
@Contract("_ -> this")
5153
public BuildTaskAssert hasOutcome(TaskOutcome... outcomes) {

src/main/java/nebula/test/dsl/PluginManagementBuilder.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,15 @@ public class PluginManagementBuilder {
99

1010
/**
1111
* Apply settings plugins
12+
* @return plugins DSL builder
1213
*/
1314
public PluginsBuilder plugins() {
1415
return plugins;
1516
}
1617

1718
/**
1819
* Configure project plugin management
20+
* @return repositories DSL builder
1921
*/
2022
public RepositoriesBuilder repositories() {
2123
return repositoriesBuilder;

src/main/java/nebula/test/dsl/ProjectBuilder.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ public class ProjectBuilder {
2323
private Integer javaToolchain = null;
2424
@Nullable
2525
private String rawBuildScript;
26+
@Nullable
27+
private String group = null;
28+
@Nullable
29+
private String version = null;
2630

2731
ProjectBuilder(File projectDir) {
2832
this.projectDir = projectDir;
@@ -58,9 +62,33 @@ public SourcesBuilder src() {
5862
return sources;
5963
}
6064

65+
/**
66+
* Set project group
67+
* @param group group name to set on project
68+
*/
69+
@NebulaTestKitDsl
70+
public void group(String group) {
71+
this.group = group;
72+
}
73+
74+
/**
75+
* Set project version, which is equivalent to passing -Pversion on the command line
76+
* @param version group name to set on project
77+
*/
78+
@NebulaTestKitDsl
79+
public void version(String version) {
80+
this.version = version;
81+
}
82+
6183
void build(BuildscriptLanguage language) {
6284
StringBuilder buildFileText = new StringBuilder();
6385
buildFileText.append(plugins.build(language, 0));
86+
if (group != null) {
87+
buildFileText.append("group = \"").append(group).append("\"\n");
88+
}
89+
if (version != null) {
90+
buildFileText.append("version = \"").append(version).append("\"\n");
91+
}
6492
buildFileText.append(repositoriesBuilder.build(language, 0));
6593
if (!dependencies.isEmpty()) {
6694
buildFileText.append("dependencies {\n");

src/main/java/nebula/test/dsl/SettingsBuilder.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public class SettingsBuilder {
2424
this.projectDir = projectDir;
2525
}
2626

27+
@NebulaTestKitDsl
2728
public void name(String name) {
2829
this.name = name;
2930
}

src/test/groovy/nebula/test/dsl/GroovyDslSpockTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public class Main {
4343
}
4444

4545
when:
46-
final var result = runner.run(["build"]) {
46+
final var result = runner.run(["build", "--stacktrace"]) {
4747
withGradleVersion(gradle.version)
4848
forwardOutput()
4949
}

src/test/java/nebula/test/SupportedGradleVersion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package nebula.test;
22

33
public enum SupportedGradleVersion {
4-
MIN("8.11.1"), MAX("9.1.0");
4+
MIN("8.12.1"), MAX("9.1.0");
55
public final String version;
66
SupportedGradleVersion(String version) {
77
this.version = version;

src/test/java/nebula/test/dsl/ProjectBuilderTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,30 @@ class Test {
6262

6363
assertThat(testProjectDir.toPath().resolve("src/integTest/java/netflix/Test.java")).exists();
6464
}
65+
66+
@Test
67+
public void testGroup(@TempDir File testProjectDir) {
68+
final var instance = new ProjectBuilder(testProjectDir);
69+
instance.group("sample.group");
70+
instance.build(BuildscriptLanguage.KOTLIN);
71+
assertThat(testProjectDir.toPath().resolve("build.gradle.kts"))
72+
.exists()
73+
.content()
74+
.contains("""
75+
group = "sample.group"
76+
""");
77+
}
78+
79+
@Test
80+
public void testVersion(@TempDir File testProjectDir) {
81+
final var instance = new ProjectBuilder(testProjectDir);
82+
instance.version("1.0.0");
83+
instance.build(BuildscriptLanguage.KOTLIN);
84+
assertThat(testProjectDir.toPath().resolve("build.gradle.kts"))
85+
.exists()
86+
.content()
87+
.contains("""
88+
version = "1.0.0"
89+
""");
90+
}
6591
}

src/test/kotlin/nebula/test/dsl/KotlinDslTest.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public class Main {
6565

6666
}
6767
}
68+
name("library")
6869
}
6970
rootProject {
7071
plugins {
@@ -73,6 +74,8 @@ public class Main {
7374
repositories {
7475
mavenCentral()
7576
}
77+
group("com.example")
78+
version("1.0.0")
7679
dependencies("""implementation("org.jspecify:jspecify:1.0.0")""")
7780
src {
7881
main {
@@ -100,6 +103,7 @@ public class Main {
100103
.hasNoMutableStateWarnings()
101104
assertThat(result).task(":compileJava").hasOutcome(TaskOutcome.SUCCESS)
102105
assertThat(result).task(":build").hasOutcome(TaskOutcome.SUCCESS)
106+
assertThat(testProjectDir.resolve("build/libs/library-1.0.0.jar")).exists()
103107
}
104108

105109

0 commit comments

Comments
 (0)