Skip to content

Commit e9951b2

Browse files
John Burnswakingrufus
authored andcommitted
make rawBuildScript append instead of replace
this makes it more useful to use in extension functions in downstream projects update to newer nebula plugin plugin
1 parent 8f9bd58 commit e9951b2

File tree

5 files changed

+57
-62
lines changed

5 files changed

+57
-62
lines changed

.github/workflows/nebula.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
restore-keys: |
5454
- ${{ runner.os }}-gradlewrapper-
5555
- name: Gradle build
56-
run: ./gradlew --info --stacktrace build
56+
run: ./gradlew --stacktrace build
5757
env:
5858
JDK_VERSION_FOR_TESTS: ${{ matrix.java }}
5959
validatepluginpublication:

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
1818
* limitations under the License.
1919
*/
2020
plugins {
21-
id("com.netflix.nebula.plugin-plugin") version ("21.3.5")
21+
id("com.netflix.nebula.plugin-plugin") version ("23.1.0")
2222
id("java-library")
2323
`kotlin-dsl`
2424
jacoco

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ public class ProjectBuilder {
2121
private final List<String> dependencies = new ArrayList<>();
2222
@Nullable
2323
private Integer javaToolchain = null;
24-
@Nullable
25-
private String rawBuildScript;
24+
private final List<String> rawBuildScript = new ArrayList<>();
2625
@Nullable
2726
private String group = null;
2827
@Nullable
@@ -54,7 +53,7 @@ public void dependencies(String... dependencies) {
5453
}
5554

5655
public void rawBuildScript(String buildScript) {
57-
rawBuildScript = buildScript;
56+
rawBuildScript.add(buildScript);
5857
}
5958

6059
@NebulaTestKitDsl
@@ -64,6 +63,7 @@ public SourcesBuilder src() {
6463

6564
/**
6665
* Set project group
66+
*
6767
* @param group group name to set on project
6868
*/
6969
@NebulaTestKitDsl
@@ -73,6 +73,7 @@ public void group(String group) {
7373

7474
/**
7575
* Set project version, which is equivalent to passing -Pversion on the command line
76+
*
7677
* @param version group name to set on project
7778
*/
7879
@NebulaTestKitDsl
@@ -100,13 +101,10 @@ void build(BuildscriptLanguage language) {
100101
buildFileText.append(" languageVersion = JavaLanguageVersion.of(").append(javaToolchain).append(")\n");
101102
buildFileText.append(" }\n}\n");
102103
}
103-
if (rawBuildScript != null) {
104-
buildFileText.append(rawBuildScript);
105-
}
104+
buildFileText.append(String.join("\n", rawBuildScript));
106105
final String ext = language == BuildscriptLanguage.GROOVY ? "gradle" : "gradle.kts";
107106
final Path buildFile = projectDir.toPath().resolve("build." + ext);
108107
try {
109-
buildFile.toFile().createNewFile();
110108
Files.write(buildFile, buildFileText.toString().getBytes(StandardCharsets.UTF_8));
111109
} catch (IOException e) {
112110
throw new RuntimeException("Error writing to " + buildFile.toAbsolutePath(), e);

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.12.1"), MAX("9.1.0");
4+
MIN("8.12.1"), MAX("9.2.0");
55
public final String version;
66
SupportedGradleVersion(String version) {
77
this.version = version;

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

Lines changed: 49 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,7 @@ internal class KotlinDslTest {
2121
plugins {
2222
java()
2323
}
24-
src {
25-
main {
26-
java("Main.java") {
27-
// language=java
28-
"""
29-
public class Main {
30-
public static void main(String[] args) {
31-
}
32-
}
33-
"""
34-
}
35-
}
36-
}
24+
mainSource()
3725
}
3826
}
3927

@@ -77,19 +65,7 @@ public class Main {
7765
group("com.example")
7866
version("1.0.0")
7967
dependencies("""implementation("org.jspecify:jspecify:1.0.0")""")
80-
src {
81-
main {
82-
java("Main.java") {
83-
// language=java
84-
"""
85-
public class Main {
86-
public static void main(String[] args) {
87-
}
88-
}
89-
"""
90-
}
91-
}
92-
}
68+
mainSource()
9369
}
9470
}
9571

@@ -134,19 +110,7 @@ public class Main {
134110
plugins {
135111
java()
136112
}
137-
src {
138-
main {
139-
java("Main.java") {
140-
// language=java
141-
"""
142-
public class Main {
143-
public static void main(String[] args) {
144-
}
145-
}
146-
"""
147-
}
148-
}
149-
}
113+
mainSource()
150114
}
151115
}
152116

@@ -230,19 +194,7 @@ public clss Main { // compile error
230194
plugins {
231195
java()
232196
}
233-
src {
234-
main {
235-
java("Main.java") {
236-
// language=java
237-
"""
238-
public class Main {
239-
public static void main(String[] args) {
240-
}
241-
}
242-
"""
243-
}
244-
}
245-
}
197+
mainSource()
246198
}
247199
}
248200

@@ -258,4 +210,49 @@ public class Main {
258210
}
259211
assertThat(result2).task(":compileJava").hasOutcome(TaskOutcome.FROM_CACHE)
260212
}
213+
214+
@ParameterizedTest
215+
@EnumSource(SupportedGradleVersion::class)
216+
fun `test rawBuildScript is additive`(gradleVersion: SupportedGradleVersion) {
217+
val runner = testProject(testProjectDir) {
218+
settings {
219+
name("library")
220+
}
221+
rootProject {
222+
mainSource()
223+
rawBuildScript("plugins { java }")
224+
rawBuildScript("repositories { mavenCentral() }")
225+
rawBuildScript("""group = "com.example"""")
226+
rawBuildScript("""version = "1.0.0"""")
227+
}
228+
}
229+
230+
val result = runner.run("build") {
231+
forwardOutput()
232+
withGradleVersion(gradleVersion.version)
233+
}
234+
235+
assertThat(result)
236+
.hasNoDeprecationWarnings()
237+
.hasNoMutableStateWarnings()
238+
assertThat(result).task(":compileJava").hasOutcome(TaskOutcome.SUCCESS)
239+
assertThat(result).task(":build").hasOutcome(TaskOutcome.SUCCESS)
240+
assertThat(testProjectDir.resolve("build/libs/library-1.0.0.jar")).exists()
241+
}
242+
243+
fun ProjectBuilder.mainSource(){
244+
src {
245+
main {
246+
java("Main.java") {
247+
// language=java
248+
"""
249+
public class Main {
250+
public static void main(String[] args) {
251+
}
252+
}
253+
"""
254+
}
255+
}
256+
}
257+
}
261258
}

0 commit comments

Comments
 (0)