I am having a rather strange issue. I have a standalone gradle plugin which is essentially a wrapper around maven publication and I want to unit test that publication is created. The publication is created after evaluation as in real build but in unit test the afterEvaluate closure does not get triggered.
Code:
class ArtifactoryPluginTest {
@get:Rule
val testProjectDir = TemporaryFolder()
private lateinit var project: Project
private lateinit var artifactoryExtension: ArtifactoryExtension
private lateinit var publishingExtension: PublishingExtension
@Before
fun setUp() {
project = ProjectBuilder.builder()
.withName("test-project")
.build()
project.plugins.apply(ArtifactoryPlugin::class.java)
artifactoryExtension = project.getExtension()
publishingExtension = project.getExtension()
}
@After
fun tearDown() {
}
@Test
fun verifyExtensionExists() {
assertThat(artifactoryExtension).isNotNull()
}
@Test
fun verifyPublishingExtensionExists() {
assertThat(publishingExtension).isNotNull()
}
@Test
fun verifyExtensionProperties() {
artifactoryExtension.artifactId("test-project")
artifactoryExtension.artifactName("Test Project")
artifactoryExtension.artifactDescription("Test Project Description")
artifactoryExtension.artifactVersion("1.0.0")
artifactoryExtension.pom(Action { pom: PomConfig ->
pom.gitUrl("https://www.example.com")
pom.scmUrl("https://www.example.com")
})
project.afterEvaluate {
val publication: MavenPublication =
publishingExtension.publications.getByName("TEST") as MavenPublication
println("NEVER PRINTS")
assertThat(publication).isNotNull()
}
}
}
I never saw this line in logger: NEVER PRINTS. Any reason why this is not getting triggered?