Skip to content

Commit 6faea4c

Browse files
authored
Improve entry checks (#1342)
* Add `containsFileEntriesOnly` * Optimize `containsEntries` * Optimize `doesNotContainEntries` * Rename assertions to match the ones in AssertK * Replace `containsNone` checks * Tweak autoRelocation * Cleanups * Revert changes for `preserveLastModifiedCorrectly`
1 parent 84acecd commit 6faea4c

17 files changed

+210
-261
lines changed

src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/ApplicationPluginTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import com.github.jengelman.gradle.plugins.shadow.internal.classPathAttributeKey
1212
import com.github.jengelman.gradle.plugins.shadow.internal.mainClassAttributeKey
1313
import com.github.jengelman.gradle.plugins.shadow.util.Issue
1414
import com.github.jengelman.gradle.plugins.shadow.util.JarPath
15-
import com.github.jengelman.gradle.plugins.shadow.util.containsEntries
15+
import com.github.jengelman.gradle.plugins.shadow.util.containsAtLeast
1616
import com.github.jengelman.gradle.plugins.shadow.util.getContent
1717
import com.github.jengelman.gradle.plugins.shadow.util.getMainAttr
1818
import com.github.jengelman.gradle.plugins.shadow.util.isWindows
@@ -251,7 +251,7 @@ class ApplicationPluginTest : BasePluginTest() {
251251
classPathAttr: String? = null,
252252
) {
253253
assertThat(jarPath).useAll {
254-
containsEntries(*entriesContained)
254+
containsAtLeast(*entriesContained)
255255
getMainAttr(mainClassAttributeKey).isEqualTo(mainClassAttr)
256256
getMainAttr(classPathAttributeKey).isEqualTo(classPathAttr)
257257
}

src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/BasePluginTest.kt

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -386,6 +386,7 @@ abstract class BasePluginTest {
386386
}
387387
}
388388

389+
@Suppress("ConstPropertyName")
389390
companion object {
390391
val testKitDir: Path = run {
391392
var gradleUserHome = System.getenv("GRADLE_USER_HOME")
@@ -398,14 +399,15 @@ abstract class BasePluginTest {
398399
val junitJar: Path = requireResourceAsPath("junit-3.8.2.jar")
399400
val junitRawEntries: List<JarEntry> = JarPath(junitJar)
400401
.use { it.entries().toList() }
401-
.filterNot { it.name == "junit3.8.2/" || it.name.startsWith("META-INF/") }
402+
.filterNot {
403+
// This entry is not present in the jar file.
404+
it.name == "junit3.8.2/"
405+
}
402406
val junitEntries: Array<String> = junitRawEntries.map { it.name }.toTypedArray()
407+
const val manifestEntry = "META-INF/MANIFEST.MF"
403408

404-
val shadowJar: String = """
405-
tasks.named('$SHADOW_JAR_TASK_NAME', ${ShadowJar::class.java.name})
406-
""".trimIndent()
407-
408-
val runShadow = "tasks.named('$SHADOW_RUN_TASK_NAME', JavaExec)".trim()
409+
val shadowJar: String = "tasks.named('$SHADOW_JAR_TASK_NAME', ${ShadowJar::class.java.name})"
410+
const val runShadow = "tasks.named('$SHADOW_RUN_TASK_NAME', JavaExec)"
409411

410412
val commonArguments = listOf(
411413
"--warning-mode=fail",

src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/FilteringTest.kt

Lines changed: 17 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package com.github.jengelman.gradle.plugins.shadow
22

33
import assertk.assertThat
4-
import com.github.jengelman.gradle.plugins.shadow.util.containsEntries
5-
import com.github.jengelman.gradle.plugins.shadow.util.doesNotContainEntries
4+
import com.github.jengelman.gradle.plugins.shadow.util.containsAtLeast
5+
import com.github.jengelman.gradle.plugins.shadow.util.containsNone
6+
import com.github.jengelman.gradle.plugins.shadow.util.containsOnly
67
import kotlin.io.path.appendText
78
import kotlin.io.path.writeText
89
import org.junit.jupiter.api.BeforeAll
@@ -35,7 +36,7 @@ class FilteringTest : BasePluginTest() {
3536
fun includeAllDependencies() {
3637
run(shadowJarTask)
3738
assertThat(outputShadowJar).useAll {
38-
containsEntries(*entriesInAB)
39+
containsAtLeast(*entriesInAB)
3940
}
4041
}
4142

@@ -52,12 +53,10 @@ class FilteringTest : BasePluginTest() {
5253
run(shadowJarTask)
5354

5455
assertThat(outputShadowJar).useAll {
55-
containsEntries(
56+
containsOnly(
5657
"a.properties",
5758
"b.properties",
58-
)
59-
doesNotContainEntries(
60-
"a2.properties",
59+
manifestEntry,
6160
)
6261
}
6362
}
@@ -116,13 +115,10 @@ class FilteringTest : BasePluginTest() {
116115
run(shadowJarTask)
117116

118117
assertThat(outputShadowJar).useAll {
119-
containsEntries(
118+
containsOnly(
120119
"d.properties",
121120
"my/Passed.class",
122-
)
123-
doesNotContainEntries(
124-
*entriesInAB,
125-
"c.properties",
121+
manifestEntry,
126122
)
127123
}
128124
}
@@ -142,11 +138,11 @@ class FilteringTest : BasePluginTest() {
142138
run(serverShadowJarTask)
143139

144140
assertThat(outputServerShadowJar).useAll {
145-
containsEntries(
141+
containsAtLeast(
146142
"server/Server.class",
147143
*junitEntries,
148144
)
149-
doesNotContainEntries(
145+
containsNone(
150146
"client/Client.class",
151147
)
152148
}
@@ -165,12 +161,10 @@ class FilteringTest : BasePluginTest() {
165161
run(serverShadowJarTask)
166162

167163
assertThat(outputServerShadowJar).useAll {
168-
containsEntries(
164+
containsOnly(
169165
"client/Client.class",
170166
"server/Server.class",
171-
)
172-
doesNotContainEntries(
173-
*junitEntries,
167+
manifestEntry,
174168
)
175169
}
176170
}
@@ -190,12 +184,10 @@ class FilteringTest : BasePluginTest() {
190184
run(shadowJarTask)
191185

192186
assertThat(outputShadowJar).useAll {
193-
containsEntries(
187+
containsOnly(
194188
"a.properties",
195189
"b.properties",
196-
)
197-
doesNotContainEntries(
198-
"a2.properties",
190+
manifestEntry,
199191
)
200192
}
201193
}
@@ -237,12 +229,10 @@ class FilteringTest : BasePluginTest() {
237229

238230
private fun commonAssertions() {
239231
assertThat(outputShadowJar).useAll {
240-
containsEntries(
241-
*entriesInAB,
232+
containsOnly(
242233
"c.properties",
243-
)
244-
doesNotContainEntries(
245-
"d.properties",
234+
*entriesInAB,
235+
manifestEntry,
246236
)
247237
}
248238
}

src/functionalTest/kotlin/com/github/jengelman/gradle/plugins/shadow/GroovyPluginTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.github.jengelman.gradle.plugins.shadow
22

33
import assertk.assertThat
44
import com.github.jengelman.gradle.plugins.shadow.util.JvmLang
5-
import com.github.jengelman.gradle.plugins.shadow.util.containsEntries
5+
import com.github.jengelman.gradle.plugins.shadow.util.containsAtLeast
66
import kotlin.io.path.appendText
77
import kotlin.io.path.writeText
88
import org.junit.jupiter.api.BeforeEach
@@ -35,7 +35,7 @@ class GroovyPluginTest : BasePluginTest() {
3535
run(shadowJarTask)
3636

3737
assertThat(outputShadowJar).useAll {
38-
containsEntries(
38+
containsAtLeast(
3939
mainClassEntry,
4040
*junitEntries,
4141
)

0 commit comments

Comments
 (0)