@@ -12,6 +12,7 @@ import com.github.jengelman.gradle.plugins.shadow.internal.requireResourceAsPath
12
12
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
13
13
import com.github.jengelman.gradle.plugins.shadow.transformers.ResourceTransformer
14
14
import com.github.jengelman.gradle.plugins.shadow.util.AppendableMavenRepository
15
+ import com.github.jengelman.gradle.plugins.shadow.util.JarBuilder
15
16
import com.github.jengelman.gradle.plugins.shadow.util.JarPath
16
17
import java.io.Closeable
17
18
import java.nio.file.Path
@@ -32,6 +33,7 @@ import kotlin.io.path.writeText
32
33
import org.gradle.testkit.runner.BuildResult
33
34
import org.gradle.testkit.runner.GradleRunner
34
35
import org.gradle.testkit.runner.TaskOutcome
36
+ import org.junit.jupiter.api.AfterAll
35
37
import org.junit.jupiter.api.AfterEach
36
38
import org.junit.jupiter.api.BeforeAll
37
39
import org.junit.jupiter.api.BeforeEach
@@ -50,6 +52,16 @@ abstract class BasePluginTest {
50
52
lateinit var entriesInB: Array <String >
51
53
lateinit var entriesInAB: Array <String >
52
54
55
+ val shadowJarTask = " :$SHADOW_JAR_TASK_NAME "
56
+ val serverShadowJarTask = " :server:$SHADOW_JAR_TASK_NAME "
57
+ val runShadowTask = " :$SHADOW_RUN_TASK_NAME "
58
+ val shadowDistZipTask = " :shadowDistZip"
59
+
60
+ val projectScriptPath: Path get() = path(" build.gradle" )
61
+ val settingsScriptPath: Path get() = path(" settings.gradle" )
62
+ open val outputShadowJar: JarPath get() = jarPath(" build/libs/my-1.0-all.jar" )
63
+ val outputServerShadowJar: JarPath get() = jarPath(" server/build/libs/server-1.0-all.jar" )
64
+
53
65
@BeforeAll
54
66
open fun doFirst () {
55
67
localRepo = AppendableMavenRepository (
@@ -87,21 +99,12 @@ abstract class BasePluginTest {
87
99
println (projectScriptPath.readText())
88
100
}
89
101
90
- @OptIn( ExperimentalPathApi :: class )
102
+ @AfterAll
91
103
fun doLast () {
104
+ @OptIn(ExperimentalPathApi ::class )
92
105
localRepo.root.deleteRecursively()
93
106
}
94
107
95
- val shadowJarTask = " :$SHADOW_JAR_TASK_NAME "
96
- val serverShadowJarTask = " :server:$SHADOW_JAR_TASK_NAME "
97
- val runShadowTask = " :$SHADOW_RUN_TASK_NAME "
98
- val shadowDistZipTask = " :shadowDistZip"
99
-
100
- val projectScriptPath: Path get() = path(" build.gradle" )
101
- val settingsScriptPath: Path get() = path(" settings.gradle" )
102
- open val outputShadowJar: JarPath get() = jarPath(" build/libs/my-1.0-all.jar" )
103
- val outputServerShadowJar: JarPath get() = jarPath(" server/build/libs/server-1.0-all.jar" )
104
-
105
108
fun getDefaultProjectBuildScript (
106
109
plugin : String = "java",
107
110
withGroup : Boolean = false,
@@ -159,14 +162,18 @@ abstract class BasePluginTest {
159
162
}
160
163
}
161
164
162
- inline fun run (
165
+ fun buildJar (relative : String , builder : JarBuilder .() -> Unit ): Path {
166
+ return JarBuilder (path(" temp/$relative " )).apply (builder).write()
167
+ }
168
+
169
+ fun run (
163
170
vararg tasks : String ,
164
171
runnerBlock : (GradleRunner ) -> GradleRunner = { it },
165
172
): BuildResult {
166
173
return runnerBlock(runner(tasks.toList())).build().assertNoDeprecationWarnings()
167
174
}
168
175
169
- inline fun runWithFailure (
176
+ fun runWithFailure (
170
177
vararg tasks : String ,
171
178
runnerBlock : (GradleRunner ) -> GradleRunner = { it },
172
179
): BuildResult {
@@ -189,17 +196,16 @@ abstract class BasePluginTest {
189
196
}.publish()
190
197
}
191
198
192
- fun writeMainClass (
199
+ fun writeClass (
193
200
sourceSet : String = "main",
194
201
packageName : String = "my",
195
202
withImports : Boolean = false,
196
203
className : String = "Main ",
197
204
isJava : Boolean = true,
198
- ): String {
199
- if (isJava) {
200
- val imports = if (withImports) " import junit.framework.Test;" else " "
201
- val classRef = if (withImports) " \" Refs: \" + Test.class.getName()" else " \" Refs: null\" "
202
- path(" src/$sourceSet /java/$packageName /$className .java" ).writeText(
205
+ classContent : () -> String = {
206
+ if (isJava) {
207
+ val imports = if (withImports) "import junit.framework.Test ;" else ""
208
+ val classRef = if (withImports) "\"Refs : \" + Test .class.getName()" else "\"Refs : null\""
203
209
"""
204
210
package $packageName;
205
211
$imports
@@ -211,12 +217,10 @@ abstract class BasePluginTest {
211
217
System .out .println($classRef);
212
218
}
213
219
}
214
- """ .trimIndent(),
215
- )
216
- } else {
217
- val imports = if (withImports) " import junit.framework.Test;" else " "
218
- val classRef = if (withImports) " \" Refs: \" + Test.class.getName()" else " \" Refs: null\" "
219
- path(" src/$sourceSet /kotlin/$packageName /$className .kt" ).writeText(
220
+ """.trimIndent()
221
+ } else {
222
+ val imports = if (withImports) "import junit.framework.Test ;" else ""
223
+ val classRef = if (withImports) "\"Refs : \" + Test .class.getName()" else "\"Refs : null\""
220
224
"""
221
225
package $packageName
222
226
$imports
@@ -226,8 +230,14 @@ abstract class BasePluginTest {
226
230
println(content)
227
231
println($classRef)
228
232
}
229
- """ .trimIndent(),
230
- )
233
+ """.trimIndent()
234
+ }
235
+ },
236
+ ): String {
237
+ if (isJava) {
238
+ path(" src/$sourceSet /java/$packageName /$className .java" ).writeText(classContent())
239
+ } else {
240
+ path(" src/$sourceSet /kotlin/$packageName /$className .kt" ).writeText(classContent())
231
241
}
232
242
val baseClassPath = packageName.replace(' .' , ' /' ) + " /$className "
233
243
return if (isJava) " $baseClassPath .class" else " ${baseClassPath} Kt.class"
0 commit comments