Skip to content

Commit bc0dc81

Browse files
authored
Merge pull request #31 from nebula-plugins/multiproject-test
add test to verify multiproject behavior
2 parents 629ec22 + ad53d8b commit bc0dc81

File tree

2 files changed

+60
-8
lines changed

2 files changed

+60
-8
lines changed

.github/workflows/nebula.yml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,8 @@ on:
99
pull_request:
1010

1111
jobs:
12-
validation:
13-
name: "Gradle Wrapper Validation"
14-
runs-on: ubuntu-latest
15-
steps:
16-
- uses: actions/checkout@v4
17-
- uses: gradle/wrapper-validation-action@v1
1812
buildmultijdk:
1913
if: (!startsWith(github.ref, 'refs/tags/v'))
20-
needs: validation
2114
runs-on: ubuntu-latest
2215
strategy:
2316
matrix:
@@ -48,7 +41,6 @@ jobs:
4841
JDK_VERSION_FOR_TESTS: ${{ matrix.java }}
4942
validatepluginpublication:
5043
if: startsWith(github.ref, 'refs/tags/v')
51-
needs: validation
5244
runs-on: ubuntu-latest
5345
name: Gradle Plugin Publication Validation
5446
env:

src/test/java/nebula/plugin/contacts/ContactsPluginTest.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,66 @@ void test_kotlin(SupportedGradleVersion gradleVersion) {
4242
.hasNoMutableStateWarnings();
4343
}
4444

45+
@ParameterizedTest
46+
@EnumSource(SupportedGradleVersion.class)
47+
void test_multiproject(SupportedGradleVersion gradleVersion) {
48+
final TestProjectBuilder builder = TestProjectBuilder.testProject(projectDir);
49+
builder.rootProject().plugins().id("com.netflix.nebula.contacts");
50+
builder.rootProject()
51+
.rawBuildScript(
52+
//language=kotlin
53+
"""
54+
contacts {
55+
addPerson("example@example.com") {
56+
moniker = "Nebula-Plugins maintainers"
57+
github = "nebula-plugins"
58+
role("owner")
59+
}
60+
}
61+
""");
62+
final var subProject1 = builder.subProject("sub1");
63+
subProject1.plugins().id("com.netflix.nebula.contacts");
64+
subProject1.rawBuildScript(
65+
//language=kotlin
66+
"""
67+
afterEvaluate {
68+
plugins.withType<nebula.plugin.contacts.BaseContactsPlugin>() {
69+
println("sub1 contacts: " + getAllContacts().size)
70+
}
71+
}
72+
""");
73+
74+
final var subProject2 = builder.subProject("sub2");
75+
subProject2.plugins().id("com.netflix.nebula.contacts");
76+
subProject2.rawBuildScript(
77+
//language=kotlin
78+
"""
79+
contacts {
80+
addPerson("example2@example.com") {
81+
moniker = "Nebula-Plugins maintainers"
82+
github = "nebula-plugins"
83+
role("owner")
84+
}
85+
}
86+
afterEvaluate {
87+
plugins.withType<nebula.plugin.contacts.BaseContactsPlugin>() {
88+
println("sub2 contacts: " + getAllContacts().size)
89+
}
90+
}
91+
""");
92+
final var runner = builder.build(BuildscriptLanguage.KOTLIN);
93+
94+
BuildResult result = runner.run(
95+
GradleRunner.create().forwardOutput().withGradleVersion(gradleVersion.version),
96+
"build");
97+
assertThat(result)
98+
.hasNoDeprecationWarnings()
99+
.hasNoMutableStateWarnings();
100+
assertThat(result.getOutput())
101+
.contains("sub1 contacts: 1")
102+
.contains("sub2 contacts: 2");
103+
}
104+
45105
@ParameterizedTest
46106
@EnumSource(SupportedGradleVersion.class)
47107
void test_groovy(SupportedGradleVersion gradleVersion) {

0 commit comments

Comments
 (0)