net.twisterrob.gradle icon indicating copy to clipboard operation
net.twisterrob.gradle copied to clipboard

Configuration resolution tests?

Open TWiStErRob opened this issue 3 years ago • 1 comments
trafficstars

https://youtrack.jetbrains.com/issue/KT-25749

TWiStErRob avatar Aug 07 '22 08:08 TWiStErRob

Tried, but this only works once Kotlin 1.6.0+ is used in all tests; or if conditionally applied.

Index: test/src/main/resources/net/twisterrob/gradle/test/init.gradle.kts
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/test/src/main/resources/net/twisterrob/gradle/test/init.gradle.kts b/test/src/main/resources/net/twisterrob/gradle/test/init.gradle.kts
--- a/test/src/main/resources/net/twisterrob/gradle/test/init.gradle.kts	(revision 5986638441cb200f618e93009eedf043d7a935e9)
+++ b/test/src/main/resources/net/twisterrob/gradle/test/init.gradle.kts	(revision 4ebe2561f64f0b3f23e434a6c7a4264ce41a8835)
@@ -47,6 +47,25 @@
 	extensions.extraProperties.set("doNotNagAboutPattern", ::doNotNagAboutPattern)
 }
 
+//region: Prevent resolving configurations during CONFIGURATION phase
+// Based on https://youtrack.jetbrains.com/issue/KT-25749.
+var configured = false
+gradle.taskGraph.whenReady {
+	configured = true
+}
+gradle.beforeProject {
+	val project = this
+	project.configurations.configureEach {
+		val configuration = this
+		configuration.incoming.beforeResolve {
+			if (!configured) {
+				error("Configuration $configuration in $project is being resolved at configuration time.")
+			}
+		}
+	}
+}
+//endregion
+
 /**
  * Surgically ignoring messages like this will prevent actual executions from triggering
  * stack traces and warnings, which means that even with some warnings,

TWiStErRob avatar Aug 21 '22 19:08 TWiStErRob