From ec282f3dda74eca8e6af25e0c562096faa1b1720 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 08:19:19 +0800 Subject: [PATCH 01/29] Intro assertk and lints --- build.gradle.kts | 2 ++ gradle/libs.versions.toml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index 990ad1a41..f1b1a40c2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -71,11 +71,13 @@ dependencies { } testImplementation(platform(libs.junit.bom)) testImplementation(libs.junit.jupiter) + testImplementation(libs.assertk) testImplementation(libs.xmlunit) testImplementation(libs.apache.commonsLang) testRuntimeOnly(libs.junit.platformLauncher) lintChecks(libs.androidx.gradlePluginLints) + lintChecks(libs.assertk.lint) } val integrationTest by tasks.registering(Test::class) { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7d3d1d228..406bfe1d4 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,6 +11,7 @@ plexus-xml = "org.codehaus.plexus:plexus-xml:4.0.4" xmlunit = "org.xmlunit:xmlunit-legacy:2.10.0" androidx-gradlePluginLints = "androidx.lint:lint-gradle:1.0.0-alpha02" +assertk-lint = "com.jzbrooks:assertk-lint:1.3.0" # Dummy to get renovate updates, the version is used in rootProject build.gradle with spotless. ktlint = "com.pinterest.ktlint:ktlint-cli:1.4.1" @@ -18,6 +19,7 @@ spock = "org.spockframework:spock-core:2.3-groovy-3.0" junit-bom = "org.junit:junit-bom:5.11.3" junit-jupiter = { module = "org.junit.jupiter:junit-jupiter" } junit-platformLauncher = { module = "org.junit.platform:junit-platform-launcher" } +assertk = "com.willowtreeapps.assertk:assertk:0.28.1" [plugins] kotlin = "org.jetbrains.kotlin.jvm:2.1.0" From 88974947e3204fa172b689b9218ce29a99a93c05 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 08:41:16 +0800 Subject: [PATCH 02/29] integrationTestImplementation main sourceSet --- build.gradle.kts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index f1b1a40c2..c5e81dc5d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -76,6 +76,9 @@ dependencies { testImplementation(libs.apache.commonsLang) testRuntimeOnly(libs.junit.platformLauncher) + // TODO: this will be removed once we split unit tests from integration tests. + integrationTestImplementation(sourceSets.main.get().output) + lintChecks(libs.androidx.gradlePluginLints) lintChecks(libs.assertk.lint) } From a8bd26cf5f9612677fcf2789658911c73f0d412f Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 08:45:42 +0800 Subject: [PATCH 03/29] Migrate SimpleRelocatorParameterTest --- .../unit/SimpleRelocatorParameterTest.kt | 30 +++++++++++ .../SimpleRelocatorParameterTest.groovy | 53 ------------------- 2 files changed, 30 insertions(+), 53 deletions(-) create mode 100644 src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/SimpleRelocatorParameterTest.kt delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy diff --git a/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/SimpleRelocatorParameterTest.kt b/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/SimpleRelocatorParameterTest.kt new file mode 100644 index 000000000..1cadef2ae --- /dev/null +++ b/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/SimpleRelocatorParameterTest.kt @@ -0,0 +1,30 @@ +package com.github.jengelman.gradle.plugins.shadow.unit + +import assertk.fail +import com.github.jengelman.gradle.plugins.shadow.relocation.SimpleRelocator +import org.junit.jupiter.api.Test + +/** + * Modified from [org.apache.maven.plugins.shade.relocation.SimpleRelocatorParameterTest.java](https://github.com/apache/maven-shade-plugin/blob/master/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorParameterTest.java). + * + * @author John Engelman + */ +class SimpleRelocatorParameterTest { + @Test + fun testThatNullPatternInConstructorShouldNotThrowNullPointerException() { + constructThenFailOnNullPointerException(null, "") + } + + @Test + fun testThatNullShadedPatternInConstructorShouldNotThrowNullPointerException() { + constructThenFailOnNullPointerException("", null) + } + + private fun constructThenFailOnNullPointerException(pattern: String?, shadedPattern: String?) { + try { + SimpleRelocator(pattern, shadedPattern) + } catch (e: NullPointerException) { + fail("Constructor should not throw null pointer exceptions") + } + } +} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy deleted file mode 100644 index 9e47404ca..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License") you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.github.jengelman.gradle.plugins.shadow.relocation - -import org.junit.jupiter.api.Test - -import static org.junit.jupiter.api.Assertions.fail - - -/** - * Modified from org.apache.maven.plugins.shade.relocation.SimpleRelocatorParameterTest.java - * - * Modifications - * @author John Engelman - */ -class SimpleRelocatorParameterTest { - - @Test - void testThatNullPatternInConstructorShouldNotThrowNullPointerException() { - constructThenFailOnNullPointerException(null, "") - } - - @Test - void testThatNullShadedPatternInConstructorShouldNotThrowNullPointerException() { - constructThenFailOnNullPointerException("", null) - } - - private static void constructThenFailOnNullPointerException(String pattern, String shadedPattern) { - try { - new SimpleRelocator(pattern, shadedPattern) - } - catch (NullPointerException ignored) { - fail("Constructor should not throw null pointer exceptions") - } - } -} From f68b9457d22e9894ddd39221a21426558b071db5 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 08:58:46 +0800 Subject: [PATCH 04/29] Migrate SimpleRelocatorTest --- .../SimpleRelocatorParameterTest.kt | 2 +- .../unit/relocation/SimpleRelocatorTest.kt | 199 ++++++++++++++++ .../relocation/SimpleRelocatorTest.groovy | 224 ------------------ 3 files changed, 200 insertions(+), 225 deletions(-) rename src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/{ => relocation}/SimpleRelocatorParameterTest.kt (93%) create mode 100644 src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy diff --git a/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/SimpleRelocatorParameterTest.kt b/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorParameterTest.kt similarity index 93% rename from src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/SimpleRelocatorParameterTest.kt rename to src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorParameterTest.kt index 1cadef2ae..b246c9d33 100644 --- a/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/SimpleRelocatorParameterTest.kt +++ b/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorParameterTest.kt @@ -1,4 +1,4 @@ -package com.github.jengelman.gradle.plugins.shadow.unit +package com.github.jengelman.gradle.plugins.shadow.unit.relocation import assertk.fail import com.github.jengelman.gradle.plugins.shadow.relocation.SimpleRelocator diff --git a/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt b/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt new file mode 100644 index 000000000..b39cbeb36 --- /dev/null +++ b/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt @@ -0,0 +1,199 @@ +package com.github.jengelman.gradle.plugins.shadow.unit.relocation + +import assertk.assertThat +import assertk.assertions.isEqualTo +import assertk.assertions.isFalse +import assertk.assertions.isTrue +import com.github.jengelman.gradle.plugins.shadow.ShadowStats +import com.github.jengelman.gradle.plugins.shadow.relocation.RelocateClassContext +import com.github.jengelman.gradle.plugins.shadow.relocation.RelocatePathContext +import com.github.jengelman.gradle.plugins.shadow.relocation.SimpleRelocator +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +/** + * Modified from [org.apache.maven.plugins.shade.relocation.SimpleRelocatorTest.java](https://github.com/apache/maven-shade-plugin/blob/master/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java). + * + * @author John Engelman + */ +class SimpleRelocatorTest { + private lateinit var stats: ShadowStats + + @BeforeEach + fun setUp() { + stats = ShadowStats() + } + + @Test + fun testCanRelocatePath() { + var relocator = SimpleRelocator("org.foo", null) + assertThat(relocator.canRelocatePath("org/foo/Class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/Class.class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/bar/Class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/bar/Class.class")).isTrue() + assertThat(relocator.canRelocatePath("com/foo/bar/Class")).isFalse() + assertThat(relocator.canRelocatePath("com/foo/bar/Class.class")).isFalse() + assertThat(relocator.canRelocatePath("org/Foo/Class")).isFalse() + assertThat(relocator.canRelocatePath("org/Foo/Class.class")).isFalse() + assertThat(relocator.canRelocatePath("/org/Foo/Class")).isFalse() + assertThat(relocator.canRelocatePath("/org/Foo/Class.class")).isFalse() + + relocator = SimpleRelocator( + "org.foo", + null, + null, + listOf("org.foo.Excluded", "org.foo.public.*", "org.foo.recurse.**", "org.foo.Public*Stuff"), + ) + assertThat(relocator.canRelocatePath("org/foo/Class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/Class.class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/excluded")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/Excluded")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/Excluded.class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/public")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/public/Class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/public/Class.class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/public/sub")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/public/sub/Class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/publicRELOC/Class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/PrivateStuff")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/PrivateStuff.class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/PublicStuff")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/PublicStuff.class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/PublicUtilStuff")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/PublicUtilStuff.class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/recurse")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/recurse/Class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/recurse/Class.class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/recurse/sub")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/recurse/sub/Class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/recurse/sub/Class.class")).isFalse() + + relocator = SimpleRelocator("org.f", null) + assertThat(relocator.canRelocatePath("")).isFalse() + assertThat(relocator.canRelocatePath(".class")).isFalse() + assertThat(relocator.canRelocatePath("te")).isFalse() + assertThat(relocator.canRelocatePath("test")).isFalse() + assertThat(relocator.canRelocatePath("org/f")).isTrue() + assertThat(relocator.canRelocatePath("/org/f")).isTrue() + } + + @Test + fun testCanRelocatePathWithRegex() { + var relocator = SimpleRelocator("org.foo", null, listOf("%regex[org/foo/R(\\\$.*)?\$]"), null) + assertThat(relocator.canRelocatePath("org/foo/R.class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/R\$string.class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/R\$layout.class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/Recording/R.class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/Recording.class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/bar/R\$string.class")).isFalse() + assertThat(relocator.canRelocatePath("org/R.class")).isFalse() + assertThat(relocator.canRelocatePath("org/R\$string.class")).isFalse() + + relocator = SimpleRelocator("org.foo", null) + relocator.exclude("%regex[org/foo/.*Factory[0-9].*]") + assertThat(relocator.canRelocatePath("org/foo/Factory.class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/FooFactoryMain.class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/BarFactory.class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/Factory0.class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/FooFactory1Main.class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/BarFactory2.class")).isFalse() + + relocator = SimpleRelocator( + "org.foo", + null, + listOf("%regex[org/foo/.*Factory[0-9].*]", "org.foo.public.*"), + ) + assertThat(relocator.canRelocatePath("org/foo/Factory1.class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/public/Bar.class")).isTrue() + assertThat(relocator.canRelocatePath("org/foo/Factory.class")).isFalse() + assertThat(relocator.canRelocatePath("org/foo/R.class")).isFalse() + } + + @Test + fun testCanRelocateClass() { + var relocator = SimpleRelocator("org.foo", null) + assertThat(relocator.canRelocateClass("org.foo.Class")).isTrue() + assertThat(relocator.canRelocateClass("org.foo.bar.Class")).isTrue() + assertThat(relocator.canRelocateClass("com.foo.bar.Class")).isFalse() + assertThat(relocator.canRelocateClass("org.Foo.Class")).isFalse() + + relocator = SimpleRelocator( + "org.foo", + null, + null, + listOf("org.foo.Excluded", "org.foo.public.*", "org.foo.recurse.**", "org.foo.Public*Stuff"), + ) + assertThat(relocator.canRelocateClass("org.foo.Class")).isTrue() + assertThat(relocator.canRelocateClass("org.foo.excluded")).isTrue() + assertThat(relocator.canRelocateClass("org.foo.Excluded")).isFalse() + assertThat(relocator.canRelocateClass("org.foo.public")).isFalse() + assertThat(relocator.canRelocateClass("org.foo.public.Class")).isFalse() + assertThat(relocator.canRelocateClass("org.foo.public.sub")).isFalse() + assertThat(relocator.canRelocateClass("org.foo.public.sub.Class")).isTrue() + assertThat(relocator.canRelocateClass("org.foo.publicRELOC.Class")).isTrue() + assertThat(relocator.canRelocateClass("org.foo.PrivateStuff")).isTrue() + assertThat(relocator.canRelocateClass("org.foo.PublicStuff")).isFalse() + assertThat(relocator.canRelocateClass("org.foo.PublicUtilStuff")).isFalse() + assertThat(relocator.canRelocateClass("org.foo.recurse")).isFalse() + assertThat(relocator.canRelocateClass("org.foo.recurse.Class")).isFalse() + assertThat(relocator.canRelocateClass("org.foo.recurse.sub")).isFalse() + assertThat(relocator.canRelocateClass("org.foo.recurse.sub.Class")).isFalse() + } + + @Test + fun testCanRelocateRawString() { + var relocator = SimpleRelocator("org/foo", null, null, null, true) + assertThat(relocator.canRelocatePath("(I)org/foo/bar/Class")).isTrue() + + relocator = SimpleRelocator("^META-INF/org.foo.xml\$", null, null, null, true) + assertThat(relocator.canRelocatePath("META-INF/org.foo.xml")).isTrue() + } + + @Test + fun testCanRelocateAbsClassPath() { + val relocator = SimpleRelocator("org.apache.velocity", "org.apache.momentum") + assertThat(relocator.relocatePath(pathContext("/org/apache/velocity/mass.properties"))) + .isEqualTo("/org/apache/momentum/mass.properties") + } + + @Test + fun testRelocatePath() { + var relocator = SimpleRelocator("org.foo", null) + assertThat(relocator.relocatePath(pathContext("org/foo/bar/Class.class"))) + .isEqualTo("hidden/org/foo/bar/Class.class") + + relocator = SimpleRelocator("org.foo", "private.stuff") + assertThat(relocator.relocatePath(pathContext("org/foo/bar/Class.class"))) + .isEqualTo("private/stuff/bar/Class.class") + } + + @Test + fun testRelocateClass() { + var relocator = SimpleRelocator("org.foo", null) + assertThat(relocator.relocateClass(classContext())) + .isEqualTo("hidden.org.foo.bar.Class") + + relocator = SimpleRelocator("org.foo", "private.stuff") + assertThat(relocator.relocateClass(classContext())) + .isEqualTo("private.stuff.bar.Class") + } + + @Test + fun testRelocateRawString() { + var relocator = SimpleRelocator("Lorg/foo", "Lhidden/org/foo", null, null, true) + assertThat(relocator.relocatePath(pathContext("(I)Lorg/foo/bar/Class"))) + .isEqualTo("(I)Lhidden/org/foo/bar/Class") + + relocator = SimpleRelocator("^META-INF/org.foo.xml\$", "META-INF/hidden.org.foo.xml", null, null, true) + assertThat(relocator.relocatePath(pathContext("META-INF/org.foo.xml"))) + .isEqualTo("META-INF/hidden.org.foo.xml") + } + + private fun pathContext(path: String): RelocatePathContext { + return RelocatePathContext.builder().path(path).stats(stats).build() + } + + private fun classContext(className: String = "org.foo.bar.Class"): RelocateClassContext { + return RelocateClassContext.builder().className(className).stats(stats).build() + } +} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy deleted file mode 100644 index f1488c523..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy +++ /dev/null @@ -1,224 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License") you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.github.jengelman.gradle.plugins.shadow.relocation - -import com.github.jengelman.gradle.plugins.shadow.ShadowStats -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test - -import static org.junit.jupiter.api.Assertions.assertEquals - -/** - * Test for {@link SimpleRelocator}. - * - * @author Benjamin Bentmann - * @version $Id: SimpleRelocatorTest.java 1342979 2012-05-26 22:05:45Z bimargulies $ - * - * Modified from org.apache.maven.plugins.shade.relocation.SimpleRelocatorTest.java - * - * Modifications - * @author John Engelman - */ -class SimpleRelocatorTest { - - private static ShadowStats stats - - @BeforeEach - void setUp() { - stats = new ShadowStats() - } - - @Test - void testCanRelocatePath() { - SimpleRelocator relocator - - relocator = new SimpleRelocator("org.foo", null) - assertEquals(true, relocator.canRelocatePath("org/foo/Class")) - assertEquals(true, relocator.canRelocatePath("org/foo/Class.class")) - assertEquals(true, relocator.canRelocatePath("org/foo/bar/Class")) - assertEquals(true, relocator.canRelocatePath("org/foo/bar/Class.class")) - assertEquals(false, relocator.canRelocatePath("com/foo/bar/Class")) - assertEquals(false, relocator.canRelocatePath("com/foo/bar/Class.class")) - assertEquals(false, relocator.canRelocatePath("org/Foo/Class")) - assertEquals(false, relocator.canRelocatePath("org/Foo/Class.class")) - - // Verify paths starting with '/' - assertEquals(false, relocator.canRelocatePath("/org/Foo/Class")) - assertEquals(false, relocator.canRelocatePath("/org/Foo/Class.class")) - - relocator = new SimpleRelocator("org.foo", null, null, - List.of("org.foo.Excluded", "org.foo.public.*", "org.foo.recurse.**", "org.foo.Public*Stuff")) - assertEquals(true, relocator.canRelocatePath("org/foo/Class")) - assertEquals(true, relocator.canRelocatePath("org/foo/Class.class")) - assertEquals(true, relocator.canRelocatePath("org/foo/excluded")) - assertEquals(false, relocator.canRelocatePath("org/foo/Excluded")) - assertEquals(false, relocator.canRelocatePath("org/foo/Excluded.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/public")) - assertEquals(false, relocator.canRelocatePath("org/foo/public/Class")) - assertEquals(false, relocator.canRelocatePath("org/foo/public/Class.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/public/sub")) - assertEquals(true, relocator.canRelocatePath("org/foo/public/sub/Class")) - assertEquals(true, relocator.canRelocatePath("org/foo/publicRELOC/Class")) - assertEquals(true, relocator.canRelocatePath("org/foo/PrivateStuff")) - assertEquals(true, relocator.canRelocatePath("org/foo/PrivateStuff.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/PublicStuff")) - assertEquals(false, relocator.canRelocatePath("org/foo/PublicStuff.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/PublicUtilStuff")) - assertEquals(false, relocator.canRelocatePath("org/foo/PublicUtilStuff.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/recurse")) - assertEquals(false, relocator.canRelocatePath("org/foo/recurse/Class")) - assertEquals(false, relocator.canRelocatePath("org/foo/recurse/Class.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/recurse/sub")) - assertEquals(false, relocator.canRelocatePath("org/foo/recurse/sub/Class")) - assertEquals(false, relocator.canRelocatePath("org/foo/recurse/sub/Class.class")) - - // Verify edge cases - relocator = new SimpleRelocator("org.f", null) - assertEquals(false, relocator.canRelocatePath("")) // Empty path - assertEquals(false, relocator.canRelocatePath(".class")) // only .class - assertEquals(false, relocator.canRelocatePath("te")) // shorter than path pattern - assertEquals(false, relocator.canRelocatePath("test")) // shorter than path pattern with / - assertEquals(true, relocator.canRelocatePath("org/f")) // equal to path pattern - assertEquals(true, relocator.canRelocatePath("/org/f")) // equal to path pattern with / - } - - @Test - void testCanRelocatePathWithRegex() { - SimpleRelocator relocator - - // Include with Regex - relocator = new SimpleRelocator("org.foo", null, Collections.singletonList("%regex[org/foo/R(\\\$.*)?\$]"), null) - assertEquals(true, relocator.canRelocatePath("org/foo/R.class")) - assertEquals(true, relocator.canRelocatePath("org/foo/R\$string.class")) - assertEquals(true, relocator.canRelocatePath("org/foo/R\$layout.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/Recording/R.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/Recording.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/bar/R\$string.class")) - assertEquals(false, relocator.canRelocatePath("org/R.class")) - assertEquals(false, relocator.canRelocatePath("org/R\$string.class")) - - // Exclude with Regex - relocator = new SimpleRelocator("org.foo", null) - relocator.exclude("%regex[org/foo/.*Factory[0-9].*]") - assertEquals(true, relocator.canRelocatePath("org/foo/Factory.class")) - assertEquals(true, relocator.canRelocatePath("org/foo/FooFactoryMain.class")) - assertEquals(true, relocator.canRelocatePath("org/foo/BarFactory.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/Factory0.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/FooFactory1Main.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/BarFactory2.class")) - - // Include with Regex and normal pattern - relocator = new SimpleRelocator("org.foo", null, - List.of("%regex[org/foo/.*Factory[0-9].*]", "org.foo.public.*")) - assertEquals(true, relocator.canRelocatePath("org/foo/Factory1.class")) - assertEquals(true, relocator.canRelocatePath("org/foo/public/Bar.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/Factory.class")) - assertEquals(false, relocator.canRelocatePath("org/foo/R.class")) - } - - @Test - void testCanRelocateClass() { - SimpleRelocator relocator - - relocator = new SimpleRelocator("org.foo", null) - assertEquals(true, relocator.canRelocateClass("org.foo.Class")) - assertEquals(true, relocator.canRelocateClass("org.foo.bar.Class")) - assertEquals(false, relocator.canRelocateClass("com.foo.bar.Class")) - assertEquals(false, relocator.canRelocateClass("org.Foo.Class")) - - relocator = new SimpleRelocator("org.foo", null, null, - List.of("org.foo.Excluded", "org.foo.public.*", "org.foo.recurse.**", "org.foo.Public*Stuff")) - assertEquals(true, relocator.canRelocateClass("org.foo.Class")) - assertEquals(true, relocator.canRelocateClass("org.foo.excluded")) - assertEquals(false, relocator.canRelocateClass("org.foo.Excluded")) - assertEquals(false, relocator.canRelocateClass("org.foo.public")) - assertEquals(false, relocator.canRelocateClass("org.foo.public.Class")) - assertEquals(false, relocator.canRelocateClass("org.foo.public.sub")) - assertEquals(true, relocator.canRelocateClass("org.foo.public.sub.Class")) - assertEquals(true, relocator.canRelocateClass("org.foo.publicRELOC.Class")) - assertEquals(true, relocator.canRelocateClass("org.foo.PrivateStuff")) - assertEquals(false, relocator.canRelocateClass("org.foo.PublicStuff")) - assertEquals(false, relocator.canRelocateClass("org.foo.PublicUtilStuff")) - assertEquals(false, relocator.canRelocateClass("org.foo.recurse")) - assertEquals(false, relocator.canRelocateClass("org.foo.recurse.Class")) - assertEquals(false, relocator.canRelocateClass("org.foo.recurse.sub")) - assertEquals(false, relocator.canRelocateClass("org.foo.recurse.sub.Class")) - } - - @Test - void testCanRelocateRawString() { - SimpleRelocator relocator - - relocator = new SimpleRelocator("org/foo", null, null, null, true) - assertEquals(true, relocator.canRelocatePath("(I)org/foo/bar/Class")) - - relocator = new SimpleRelocator("^META-INF/org.foo.xml\$", null, null, null, true) - assertEquals(true, relocator.canRelocatePath("META-INF/org.foo.xml")) - } - - //MSHADE-119, make sure that the easy part of this works. - @Test - void testCanRelocateAbsClassPath() { - SimpleRelocator relocator = new SimpleRelocator("org.apache.velocity", "org.apache.momentum") - assertEquals("/org/apache/momentum/mass.properties", relocator.relocatePath(pathContext("/org/apache/velocity/mass.properties"))) - - } - - @Test - void testRelocatePath() { - SimpleRelocator relocator - - relocator = new SimpleRelocator("org.foo", null) - assertEquals("hidden/org/foo/bar/Class.class", relocator.relocatePath(pathContext("org/foo/bar/Class.class"))) - - relocator = new SimpleRelocator("org.foo", "private.stuff") - assertEquals("private/stuff/bar/Class.class", relocator.relocatePath(pathContext("org/foo/bar/Class.class"))) - } - - @Test - void testRelocateClass() { - SimpleRelocator relocator - - relocator = new SimpleRelocator("org.foo", null) - assertEquals("hidden.org.foo.bar.Class", relocator.relocateClass(classContext("org.foo.bar.Class"))) - - relocator = new SimpleRelocator("org.foo", "private.stuff") - assertEquals("private.stuff.bar.Class", relocator.relocateClass(classContext("org.foo.bar.Class"))) - } - - @Test - void testRelocateRawString() { - SimpleRelocator relocator - - relocator = new SimpleRelocator("Lorg/foo", "Lhidden/org/foo", null, null, true) - assertEquals("(I)Lhidden/org/foo/bar/Class", relocator.relocatePath(pathContext("(I)Lorg/foo/bar/Class"))) - - relocator = new SimpleRelocator("^META-INF/org.foo.xml\$", "META-INF/hidden.org.foo.xml", null, null, true) - assertEquals("META-INF/hidden.org.foo.xml", relocator.relocatePath(pathContext("META-INF/org.foo.xml"))) - } - - protected static RelocatePathContext pathContext(String path) { - return RelocatePathContext.builder().path(path).stats(stats).build() - } - - protected static RelocateClassContext classContext(String className) { - return RelocateClassContext.builder().className(className).stats(stats).build() - } -} From 7c789604e8a1f7eee409cf51aefaa2e9b18ead65 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 09:13:08 +0800 Subject: [PATCH 05/29] Migrate ApacheLicenseResourceTransformerTest --- .../ApacheLicenseResourceTransformerTest.kt | 38 ++++++++++++ .../transformers/TransformerTestSupport.kt | 19 ++++++ ...pacheLicenseResourceTransformerTest.groovy | 61 ------------------- 3 files changed, 57 insertions(+), 61 deletions(-) create mode 100644 src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt create mode 100644 src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.groovy diff --git a/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt b/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt new file mode 100644 index 000000000..8561b9d13 --- /dev/null +++ b/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt @@ -0,0 +1,38 @@ +package com.github.jengelman.gradle.plugins.shadow.unit.transformers + +import assertk.assertThat +import assertk.assertions.isFalse +import assertk.assertions.isTrue +import com.github.jengelman.gradle.plugins.shadow.transformers.ApacheLicenseResourceTransformer +import java.util.Locale +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +/** + * Modified from [org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformerTest.java](https://github.com/apache/maven-shade-plugin/blob/master/src/test/java/org/apache/maven/plugins/shade/resource/ApacheLicenseResourceTransformerTest.java). + */ +class ApacheLicenseResourceTransformerTest : TransformerTestSupport() { + + init { + /* + * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime + * choice to test for improper case-less string comparisions. + */ + Locale.setDefault(Locale("tr")) + } + + @BeforeEach + fun setUp() { + transformer = ApacheLicenseResourceTransformer() + } + + @Test + fun testCanTransformResource() { + assertThat(transformer.canTransformResource(getFileElement("META-INF/LICENSE"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/LICENSE.TXT"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/License.txt"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/LICENSE.md"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/License.md"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/MANIFEST.MF"))).isFalse() + } +} diff --git a/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt b/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt new file mode 100644 index 000000000..389be0bfb --- /dev/null +++ b/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt @@ -0,0 +1,19 @@ +package com.github.jengelman.gradle.plugins.shadow.unit.transformers + +import com.github.jengelman.gradle.plugins.shadow.transformers.Transformer +import org.gradle.api.file.FileTreeElement +import org.gradle.api.file.RelativePath +import org.gradle.api.internal.file.DefaultFileTreeElement +import org.gradle.testfixtures.ProjectBuilder + +abstract class TransformerTestSupport { + protected lateinit var transformer: T + + protected companion object { + val objectFactory = ProjectBuilder.builder().build().objects + + fun getFileElement(path: String): FileTreeElement { + return DefaultFileTreeElement(null, RelativePath.parse(true, path), null, null) + } + } +} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.groovy deleted file mode 100644 index 85f59721d..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.groovy +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License") you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.github.jengelman.gradle.plugins.shadow.transformers - -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test - -import static org.junit.jupiter.api.Assertions.assertFalse -import static org.junit.jupiter.api.Assertions.assertTrue - -/** - * Test for {@link ApacheLicenseResourceTransformer}. - * - * @author Benjamin Bentmann - * @version $Id: ApacheLicenseResourceTransformerTest.java 673906 2008-07-04 05:03:20Z brett $ - * - * Modified from org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformerTest.java - */ -class ApacheLicenseResourceTransformerTest extends TransformerTestSupport { - - static { - /* - * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime - * choice to test for improper case-less string comparisions. - */ - Locale.setDefault(new Locale("tr")) - } - - @BeforeEach - void setUp() { - transformer = new ApacheLicenseResourceTransformer() - } - - @Test - void testCanTransformResource() { - assertTrue(transformer.canTransformResource(getFileElement("META-INF/LICENSE"))) - assertTrue(transformer.canTransformResource(getFileElement("META-INF/LICENSE.TXT"))) - assertTrue(transformer.canTransformResource(getFileElement("META-INF/License.txt"))) - assertTrue(transformer.canTransformResource(getFileElement("META-INF/LICENSE.md"))) - assertTrue(transformer.canTransformResource(getFileElement("META-INF/License.md"))) - assertFalse(transformer.canTransformResource(getFileElement("META-INF/MANIFEST.MF"))) - } - -} From 81d4cbac47cc3c01b59fa82bb4fa5130f73560f0 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 15:34:48 +0800 Subject: [PATCH 06/29] Fix merge --- build.gradle.kts | 2 +- .../shadow/unit/relocation/SimpleRelocatorParameterTest.kt | 0 .../plugins/shadow/unit/relocation/SimpleRelocatorTest.kt | 0 .../unit/transformers/ApacheLicenseResourceTransformerTest.kt | 0 .../plugins/shadow/unit/transformers/TransformerTestSupport.kt | 0 5 files changed, 1 insertion(+), 1 deletion(-) rename src/{integrationTest => intiTest}/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorParameterTest.kt (100%) rename src/{integrationTest => intiTest}/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt (100%) rename src/{integrationTest => intiTest}/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt (100%) rename src/{integrationTest => intiTest}/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt (100%) diff --git a/build.gradle.kts b/build.gradle.kts index 37706b0fa..e0a8ab157 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -82,7 +82,7 @@ dependencies { testRuntimeOnly(libs.junit.platformLauncher) // TODO: this will be removed once we split unit tests from integration tests. - integrationTestImplementation(sourceSets.main.get().output) + intiTestImplementation(sourceSets.main.get().output) funcTestImplementation(libs.spock) { exclude(group = "org.codehaus.groovy") diff --git a/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorParameterTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorParameterTest.kt similarity index 100% rename from src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorParameterTest.kt rename to src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorParameterTest.kt diff --git a/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt similarity index 100% rename from src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt rename to src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt diff --git a/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt similarity index 100% rename from src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt rename to src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt diff --git a/src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt similarity index 100% rename from src/integrationTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt rename to src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt From fb9c6741048e9bf591d885106544c024776eb8ba Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 16:02:52 +0800 Subject: [PATCH 07/29] Migrate AppendingTransformerTest --- .../transformers/AppendingTransformerTest.kt | 37 ++++++++++++ .../AppendingTransformerTest.groovy | 59 ------------------- 2 files changed, 37 insertions(+), 59 deletions(-) create mode 100644 src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/AppendingTransformerTest.kt delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.groovy diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/AppendingTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/AppendingTransformerTest.kt new file mode 100644 index 000000000..d86a110ae --- /dev/null +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/AppendingTransformerTest.kt @@ -0,0 +1,37 @@ +package com.github.jengelman.gradle.plugins.shadow.unit.transformers + +import assertk.assertThat +import assertk.assertions.isFalse +import assertk.assertions.isTrue +import com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer +import java.util.Locale +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +/** + * Modified from [org.apache.maven.plugins.shade.resource.AppendingTransformerTest.java](https://github.com/apache/maven-shade-plugin/blob/master/src/test/java/org/apache/maven/plugins/shade/resource/AppendingTransformerTest.java). + */ +class AppendingTransformerTest : TransformerTestSupport() { + + init { + /* + * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime + * choice to test for improper case-less string comparisions. + */ + Locale.setDefault(Locale("tr")) + } + + @BeforeEach + fun setUp() { + transformer = AppendingTransformer(objectFactory) + } + + @Test + fun testCanTransformResource() { + transformer.resource.set("abcdefghijklmnopqrstuvwxyz") + + assertThat(transformer.canTransformResource(getFileElement("abcdefghijklmnopqrstuvwxyz"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("ABCDEFGHIJKLMNOPQRSTUVWXYZ"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/MANIFEST.MF"))).isFalse() + } +} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.groovy deleted file mode 100644 index 2102f351c..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.groovy +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License") you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.github.jengelman.gradle.plugins.shadow.transformers - -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test - -import static org.junit.jupiter.api.Assertions.assertFalse -import static org.junit.jupiter.api.Assertions.assertTrue - -/** - * Test for {@link AppendingTransformer}. - * - * @author Benjamin Bentmann - * @version $Id: AppendingTransformerTest.java 673906 2008-07-04 05:03:20Z brett $ - */ -class AppendingTransformerTest extends TransformerTestSupport { - - static - { - /* - * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime - * choice to test for improper case-less string comparisions. - */ - Locale.setDefault(new Locale("tr")) - } - - @BeforeEach - void setUp() { - transformer = new AppendingTransformer(objectFactory) - } - - @Test - void testCanTransformResource() { - transformer.resource.set("abcdefghijklmnopqrstuvwxyz") - - assertTrue(transformer.canTransformResource(getFileElement("abcdefghijklmnopqrstuvwxyz"))) - assertTrue(transformer.canTransformResource(getFileElement("ABCDEFGHIJKLMNOPQRSTUVWXYZ"))) - assertFalse(transformer.canTransformResource(getFileElement("META-INF/MANIFEST.MF"))) - } - -} From fb31cafdcef109ffb8d806b6414038a56b49b50f Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 16:07:27 +0800 Subject: [PATCH 08/29] Migrate XmlAppendingTransformerTest --- .../XmlAppendingTransformerTest.kt | 34 +++++++++++ .../XmlAppendingTransformerTest.groovy | 60 ------------------- 2 files changed, 34 insertions(+), 60 deletions(-) create mode 100644 src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/XmlAppendingTransformerTest.kt delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.groovy diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/XmlAppendingTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/XmlAppendingTransformerTest.kt new file mode 100644 index 000000000..13778b0ce --- /dev/null +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/XmlAppendingTransformerTest.kt @@ -0,0 +1,34 @@ +package com.github.jengelman.gradle.plugins.shadow.unit.transformers + +import assertk.assertThat +import assertk.assertions.isFalse +import assertk.assertions.isTrue +import com.github.jengelman.gradle.plugins.shadow.transformers.XmlAppendingTransformer +import java.util.Locale +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +class XmlAppendingTransformerTest : TransformerTestSupport() { + + init { + /* + * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime + * choice to test for improper case-less string comparisions. + */ + Locale.setDefault(Locale("tr")) + } + + @BeforeEach + fun setUp() { + transformer = XmlAppendingTransformer(objectFactory) + } + + @Test + fun testCanTransformResource() { + transformer.resource.set("abcdefghijklmnopqrstuvwxyz") + + assertThat(transformer.canTransformResource(getFileElement("abcdefghijklmnopqrstuvwxyz"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("ABCDEFGHIJKLMNOPQRSTUVWXYZ"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/MANIFEST.MF"))).isFalse() + } +} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.groovy deleted file mode 100644 index 51cfb6c62..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.groovy +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License") you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.github.jengelman.gradle.plugins.shadow.transformers - -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test - -import static org.junit.jupiter.api.Assertions.assertFalse -import static org.junit.jupiter.api.Assertions.assertTrue - -/** - * Test for {@link XmlAppendingTransformer}. - * - * @author Benjamin Bentmann - * @version $Id: XmlAppendingTransformerTest.java 673906 2008-07-04 05:03:20Z brett $ - * - * Modified from org.apache.maven.plugins.shade.resource.XmlAppendingTransformerTest.java - */ -class XmlAppendingTransformerTest extends TransformerTestSupport { - - static { - /* - * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime - * choice to test for improper case-less string comparisons. - */ - Locale.setDefault(new Locale("tr")) - } - - @BeforeEach - void setUp() { - transformer = new XmlAppendingTransformer(objectFactory) - } - - @Test - void testCanTransformResource() { - transformer.resource.set("abcdefghijklmnopqrstuvwxyz") - - assertTrue(transformer.canTransformResource(getFileElement("abcdefghijklmnopqrstuvwxyz"))) - assertTrue(transformer.canTransformResource(getFileElement("ABCDEFGHIJKLMNOPQRSTUVWXYZ"))) - assertFalse(transformer.canTransformResource(getFileElement("META-INF/MANIFEST.MF"))) - } - -} From a0a216f1693424d2363a5e0846380c7cbb4930b3 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 15:45:03 +0800 Subject: [PATCH 09/29] Migrate ApacheNoticeResourceTransformerTest --- .../ApacheNoticeResourceTransformerTest.kt | 87 ++++++++++++++ ...ApacheNoticeResourceTransformerTest.groovy | 110 ------------------ 2 files changed, 87 insertions(+), 110 deletions(-) create mode 100644 src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.groovy diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt new file mode 100644 index 000000000..b76b0d144 --- /dev/null +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt @@ -0,0 +1,87 @@ +package com.github.jengelman.gradle.plugins.shadow.unit.transformers + +import assertk.assertThat +import assertk.assertions.isFalse +import assertk.assertions.isTrue +import assertk.fail +import com.github.jengelman.gradle.plugins.shadow.ShadowStats +import com.github.jengelman.gradle.plugins.shadow.transformers.ApacheNoticeResourceTransformer +import com.github.jengelman.gradle.plugins.shadow.transformers.TransformerContext +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +/** + * Modified from [org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformerParameterTests.java](https://github.com/apache/maven-shade-plugin/blob/master/src/test/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformerParameterTests.java). + */ +class ApacheNoticeResourceTransformerTest : TransformerTestSupport() { + + @BeforeEach + fun setUp() { + transformer = ApacheNoticeResourceTransformer(objectFactory) + stats = ShadowStats() + } + + @Test + fun testCanTransformResource() { + assertThat(transformer.canTransformResource(getFileElement("META-INF/NOTICE"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/NOTICE.TXT"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/Notice.txt"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/NOTICE.md"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/Notice.md"))).isTrue() + assertThat(transformer.canTransformResource(getFileElement("META-INF/MANIFEST.MF"))).isFalse() + } + + @Test + fun testNoParametersShouldNotThrowNullPointerWhenNoInput() { + processAndFailOnNullPointer("") + } + + @Test + fun testNoParametersShouldNotThrowNullPointerWhenNoLinesOfInput() { + processAndFailOnNullPointer("Some notice text") + } + + @Test + fun testNoParametersShouldNotThrowNullPointerWhenOneLineOfInput() { + processAndFailOnNullPointer("Some notice text\n") + } + + @Test + fun testNoParametersShouldNotThrowNullPointerWhenTwoLinesOfInput() { + processAndFailOnNullPointer("Some notice text\nSome notice text\n") + } + + @Test + fun testNoParametersShouldNotThrowNullPointerWhenLineStartsWithSlashSlash() { + processAndFailOnNullPointer("Some notice text\n//Some notice text\n") + } + + @Test + fun testNoParametersShouldNotThrowNullPointerWhenLineIsSlashSlash() { + processAndFailOnNullPointer("//\n") + } + + @Test + fun testNoParametersShouldNotThrowNullPointerWhenLineIsEmpty() { + processAndFailOnNullPointer("\n") + } + + private fun processAndFailOnNullPointer(noticeText: String) { + try { + transformer.transform( + TransformerContext.builder() + .path(NOTICE_RESOURCE) + .inputStream(noticeText.toByteArray().inputStream()) + .stats(stats) + .build(), + ) + } catch (ignored: NullPointerException) { + fail("Null pointer should not be thrown when no parameters are set.") + } + } + + companion object { + private const val NOTICE_RESOURCE = "META-INF/NOTICE" + private lateinit var stats: ShadowStats + } +} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.groovy deleted file mode 100644 index 102e35ba2..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.groovy +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License") you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package com.github.jengelman.gradle.plugins.shadow.transformers - -import com.github.jengelman.gradle.plugins.shadow.ShadowStats -import com.github.jengelman.gradle.plugins.shadow.relocation.Relocator -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test - -import static org.junit.jupiter.api.Assertions.assertFalse -import static org.junit.jupiter.api.Assertions.assertTrue -import static org.junit.jupiter.api.Assertions.fail - -/** - * Tests {@link ApacheLicenseResourceTransformer} parameters. - * - * Modified from org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformerParameterTests.java - */ -class ApacheNoticeResourceTransformerTest extends TransformerTestSupport { - - private static final String NOTICE_RESOURCE = "META-INF/NOTICE" - private static ShadowStats stats - - static { - /* - * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime - * choice to test for improper case-less string comparisions. - */ - Locale.setDefault(new Locale("tr")) - } - - @BeforeEach - void setUp() { - transformer = new ApacheNoticeResourceTransformer(objectFactory) - stats = new ShadowStats() - } - - @Test - void testCanTransformResource() { - assertTrue(transformer.canTransformResource(getFileElement("META-INF/NOTICE"))) - assertTrue(transformer.canTransformResource(getFileElement("META-INF/NOTICE.TXT"))) - assertTrue(transformer.canTransformResource(getFileElement("META-INF/Notice.txt"))) - assertTrue(transformer.canTransformResource(getFileElement("META-INF/NOTICE.md"))) - assertTrue(transformer.canTransformResource(getFileElement("META-INF/Notice.md"))) - assertFalse(transformer.canTransformResource(getFileElement("META-INF/MANIFEST.MF"))) - } - - @Test - void testNoParametersShouldNotThrowNullPointerWhenNoInput() { - processAndFailOnNullPointer("") - } - - @Test - void testNoParametersShouldNotThrowNullPointerWhenNoLinesOfInput() { - processAndFailOnNullPointer("Some notice text") - } - - @Test - void testNoParametersShouldNotThrowNullPointerWhenOneLineOfInput() { - processAndFailOnNullPointer("Some notice text\n") - } - - @Test - void testNoParametersShouldNotThrowNullPointerWhenTwoLinesOfInput() { - processAndFailOnNullPointer("Some notice text\nSome notice text\n") - } - - @Test - void testNoParametersShouldNotThrowNullPointerWhenLineStartsWithSlashSlash() { - processAndFailOnNullPointer("Some notice text\n//Some notice text\n") - } - - @Test - void testNoParametersShouldNotThrowNullPointerWhenLineIsSlashSlash() { - processAndFailOnNullPointer("//\n") - } - - @Test - void testNoParametersShouldNotThrowNullPointerWhenLineIsEmpty() { - processAndFailOnNullPointer("\n") - } - - private static void processAndFailOnNullPointer(final String noticeText) { - try { - final ByteArrayInputStream noticeInputStream = new ByteArrayInputStream(noticeText.getBytes()) - final List emptyList = Collections.emptyList() - transformer.transform(TransformerContext.builder().path(NOTICE_RESOURCE).inputStream(noticeInputStream).relocators(emptyList).stats(stats).build()) - } - catch (NullPointerException ignored) { - fail("Null pointer should not be thrown when no parameters are set.") - } - } -} From 912ac6c97be90244fd1df5d8cd0f278b809de28c Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 17:11:10 +0800 Subject: [PATCH 10/29] Fix merge --- .../transformers/ApacheLicenseResourceTransformerTest.kt | 7 +------ .../transformers/ApacheNoticeResourceTransformerTest.kt | 4 ++++ .../shadow/unit/transformers/AppendingTransformerTest.kt | 7 +------ .../shadow/unit/transformers/TransformerTestSupport.kt | 9 +++++++++ .../unit/transformers/XmlAppendingTransformerTest.kt | 7 +------ 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt index 8561b9d13..5340b614e 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt @@ -4,7 +4,6 @@ import assertk.assertThat import assertk.assertions.isFalse import assertk.assertions.isTrue import com.github.jengelman.gradle.plugins.shadow.transformers.ApacheLicenseResourceTransformer -import java.util.Locale import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -14,11 +13,7 @@ import org.junit.jupiter.api.Test class ApacheLicenseResourceTransformerTest : TransformerTestSupport() { init { - /* - * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime - * choice to test for improper case-less string comparisions. - */ - Locale.setDefault(Locale("tr")) + setupTurkishLocale() } @BeforeEach diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt index b76b0d144..5ca7140ed 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt @@ -15,6 +15,10 @@ import org.junit.jupiter.api.Test */ class ApacheNoticeResourceTransformerTest : TransformerTestSupport() { + init { + setupTurkishLocale() + } + @BeforeEach fun setUp() { transformer = ApacheNoticeResourceTransformer(objectFactory) diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/AppendingTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/AppendingTransformerTest.kt index d86a110ae..8d249dbc5 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/AppendingTransformerTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/AppendingTransformerTest.kt @@ -4,7 +4,6 @@ import assertk.assertThat import assertk.assertions.isFalse import assertk.assertions.isTrue import com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer -import java.util.Locale import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -14,11 +13,7 @@ import org.junit.jupiter.api.Test class AppendingTransformerTest : TransformerTestSupport() { init { - /* - * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime - * choice to test for improper case-less string comparisions. - */ - Locale.setDefault(Locale("tr")) + setupTurkishLocale() } @BeforeEach diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt index 389be0bfb..e6623455b 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt @@ -1,6 +1,7 @@ package com.github.jengelman.gradle.plugins.shadow.unit.transformers import com.github.jengelman.gradle.plugins.shadow.transformers.Transformer +import java.util.Locale import org.gradle.api.file.FileTreeElement import org.gradle.api.file.RelativePath import org.gradle.api.internal.file.DefaultFileTreeElement @@ -15,5 +16,13 @@ abstract class TransformerTestSupport { fun getFileElement(path: String): FileTreeElement { return DefaultFileTreeElement(null, RelativePath.parse(true, path), null, null) } + + /** + * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime + * choice to test for improper case-less string comparisons. + */ + fun setupTurkishLocale() { + Locale.setDefault(Locale("tr")) + } } } diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/XmlAppendingTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/XmlAppendingTransformerTest.kt index 13778b0ce..f098bce84 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/XmlAppendingTransformerTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/XmlAppendingTransformerTest.kt @@ -4,18 +4,13 @@ import assertk.assertThat import assertk.assertions.isFalse import assertk.assertions.isTrue import com.github.jengelman.gradle.plugins.shadow.transformers.XmlAppendingTransformer -import java.util.Locale import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test class XmlAppendingTransformerTest : TransformerTestSupport() { init { - /* - * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime - * choice to test for improper case-less string comparisions. - */ - Locale.setDefault(Locale("tr")) + setupTurkishLocale() } @BeforeEach From 3d6e23d93a553190339deacd89015455f5b353c0 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:02:58 +0800 Subject: [PATCH 11/29] Fix merge --- .../unit/relocation/SimpleRelocatorTest.kt | 26 +++++++------------ .../ApacheNoticeResourceTransformerTest.kt | 4 --- .../transformers/TransformerTestSupport.kt | 6 +++++ .../TransformerTestSupport.groovy | 8 ------ 4 files changed, 15 insertions(+), 29 deletions(-) diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt index b39cbeb36..aac694353 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt @@ -4,11 +4,9 @@ import assertk.assertThat import assertk.assertions.isEqualTo import assertk.assertions.isFalse import assertk.assertions.isTrue -import com.github.jengelman.gradle.plugins.shadow.ShadowStats import com.github.jengelman.gradle.plugins.shadow.relocation.RelocateClassContext import com.github.jengelman.gradle.plugins.shadow.relocation.RelocatePathContext import com.github.jengelman.gradle.plugins.shadow.relocation.SimpleRelocator -import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test /** @@ -17,16 +15,10 @@ import org.junit.jupiter.api.Test * @author John Engelman */ class SimpleRelocatorTest { - private lateinit var stats: ShadowStats - - @BeforeEach - fun setUp() { - stats = ShadowStats() - } @Test fun testCanRelocatePath() { - var relocator = SimpleRelocator("org.foo", null) + var relocator = SimpleRelocator("org.foo") assertThat(relocator.canRelocatePath("org/foo/Class")).isTrue() assertThat(relocator.canRelocatePath("org/foo/Class.class")).isTrue() assertThat(relocator.canRelocatePath("org/foo/bar/Class")).isTrue() @@ -68,7 +60,7 @@ class SimpleRelocatorTest { assertThat(relocator.canRelocatePath("org/foo/recurse/sub/Class")).isFalse() assertThat(relocator.canRelocatePath("org/foo/recurse/sub/Class.class")).isFalse() - relocator = SimpleRelocator("org.f", null) + relocator = SimpleRelocator("org.f") assertThat(relocator.canRelocatePath("")).isFalse() assertThat(relocator.canRelocatePath(".class")).isFalse() assertThat(relocator.canRelocatePath("te")).isFalse() @@ -79,7 +71,7 @@ class SimpleRelocatorTest { @Test fun testCanRelocatePathWithRegex() { - var relocator = SimpleRelocator("org.foo", null, listOf("%regex[org/foo/R(\\\$.*)?\$]"), null) + var relocator = SimpleRelocator("org.foo", null, listOf("%regex[org/foo/R(\\\$.*)?\$]")) assertThat(relocator.canRelocatePath("org/foo/R.class")).isTrue() assertThat(relocator.canRelocatePath("org/foo/R\$string.class")).isTrue() assertThat(relocator.canRelocatePath("org/foo/R\$layout.class")).isTrue() @@ -89,7 +81,7 @@ class SimpleRelocatorTest { assertThat(relocator.canRelocatePath("org/R.class")).isFalse() assertThat(relocator.canRelocatePath("org/R\$string.class")).isFalse() - relocator = SimpleRelocator("org.foo", null) + relocator = SimpleRelocator("org.foo") relocator.exclude("%regex[org/foo/.*Factory[0-9].*]") assertThat(relocator.canRelocatePath("org/foo/Factory.class")).isTrue() assertThat(relocator.canRelocatePath("org/foo/FooFactoryMain.class")).isTrue() @@ -111,7 +103,7 @@ class SimpleRelocatorTest { @Test fun testCanRelocateClass() { - var relocator = SimpleRelocator("org.foo", null) + var relocator = SimpleRelocator("org.foo") assertThat(relocator.canRelocateClass("org.foo.Class")).isTrue() assertThat(relocator.canRelocateClass("org.foo.bar.Class")).isTrue() assertThat(relocator.canRelocateClass("com.foo.bar.Class")).isFalse() @@ -158,7 +150,7 @@ class SimpleRelocatorTest { @Test fun testRelocatePath() { - var relocator = SimpleRelocator("org.foo", null) + var relocator = SimpleRelocator("org.foo") assertThat(relocator.relocatePath(pathContext("org/foo/bar/Class.class"))) .isEqualTo("hidden/org/foo/bar/Class.class") @@ -169,7 +161,7 @@ class SimpleRelocatorTest { @Test fun testRelocateClass() { - var relocator = SimpleRelocator("org.foo", null) + var relocator = SimpleRelocator("org.foo") assertThat(relocator.relocateClass(classContext())) .isEqualTo("hidden.org.foo.bar.Class") @@ -190,10 +182,10 @@ class SimpleRelocatorTest { } private fun pathContext(path: String): RelocatePathContext { - return RelocatePathContext.builder().path(path).stats(stats).build() + return RelocatePathContext.builder().path(path).build() } private fun classContext(className: String = "org.foo.bar.Class"): RelocateClassContext { - return RelocateClassContext.builder().className(className).stats(stats).build() + return RelocateClassContext.builder().className(className).build() } } diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt index 5ca7140ed..04f098d3e 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt @@ -4,7 +4,6 @@ import assertk.assertThat import assertk.assertions.isFalse import assertk.assertions.isTrue import assertk.fail -import com.github.jengelman.gradle.plugins.shadow.ShadowStats import com.github.jengelman.gradle.plugins.shadow.transformers.ApacheNoticeResourceTransformer import com.github.jengelman.gradle.plugins.shadow.transformers.TransformerContext import org.junit.jupiter.api.BeforeEach @@ -22,7 +21,6 @@ class ApacheNoticeResourceTransformerTest : TransformerTestSupport { protected lateinit var transformer: T + protected fun requireResourceAsStream(name: String): InputStream { + return this::class.java.classLoader.getResourceAsStream(name) ?: error("Resource $name not found.") + } + protected companion object { val objectFactory = ProjectBuilder.builder().build().objects + val MANIFEST_NAME: String = "META-INF/MANIFEST.MF" fun getFileElement(path: String): FileTreeElement { return DefaultFileTreeElement(null, RelativePath.parse(true, path), null, null) diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy index f88d5492b..ef881526c 100644 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy +++ b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy @@ -14,14 +14,6 @@ abstract class TransformerTestSupport { return new DefaultFileTreeElement(null, RelativePath.parse(true, path), null, null) } - /** - * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime - * choice to test for improper case-less string comparisons. - */ - protected static setupTurkishLocale() { - Locale.setDefault(new Locale("tr")) - } - protected InputStream requireResourceAsStream(String resource) { this.class.classLoader.getResourceAsStream(resource) } From 35cb0b2d4c05aeb502518d18007c17b3666802df Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:10:18 +0800 Subject: [PATCH 12/29] Move packages --- .../{unit => }/relocation/SimpleRelocatorParameterTest.kt | 3 +-- .../shadow/{unit => }/relocation/SimpleRelocatorTest.kt | 5 +---- .../transformers/ApacheLicenseResourceTransformerTest.kt | 3 +-- .../transformers/ApacheNoticeResourceTransformerTest.kt | 4 +--- .../{unit => }/transformers/AppendingTransformerTest.kt | 3 +-- .../shadow/{unit => }/transformers/TransformerTestSupport.kt | 3 +-- .../{unit => }/transformers/XmlAppendingTransformerTest.kt | 3 +-- 7 files changed, 7 insertions(+), 17 deletions(-) rename src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/{unit => }/relocation/SimpleRelocatorParameterTest.kt (86%) rename src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/{unit => }/relocation/SimpleRelocatorTest.kt (96%) rename src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/{unit => }/transformers/ApacheLicenseResourceTransformerTest.kt (88%) rename src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/{unit => }/transformers/ApacheNoticeResourceTransformerTest.kt (91%) rename src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/{unit => }/transformers/AppendingTransformerTest.kt (87%) rename src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/{unit => }/transformers/TransformerTestSupport.kt (88%) rename src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/{unit => }/transformers/XmlAppendingTransformerTest.kt (83%) diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorParameterTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt similarity index 86% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorParameterTest.kt rename to src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt index b246c9d33..0fa2efe2c 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorParameterTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt @@ -1,7 +1,6 @@ -package com.github.jengelman.gradle.plugins.shadow.unit.relocation +package com.github.jengelman.gradle.plugins.shadow.relocation import assertk.fail -import com.github.jengelman.gradle.plugins.shadow.relocation.SimpleRelocator import org.junit.jupiter.api.Test /** diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt similarity index 96% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt rename to src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt index aac694353..1c73d13c5 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/relocation/SimpleRelocatorTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt @@ -1,12 +1,9 @@ -package com.github.jengelman.gradle.plugins.shadow.unit.relocation +package com.github.jengelman.gradle.plugins.shadow.relocation import assertk.assertThat import assertk.assertions.isEqualTo import assertk.assertions.isFalse import assertk.assertions.isTrue -import com.github.jengelman.gradle.plugins.shadow.relocation.RelocateClassContext -import com.github.jengelman.gradle.plugins.shadow.relocation.RelocatePathContext -import com.github.jengelman.gradle.plugins.shadow.relocation.SimpleRelocator import org.junit.jupiter.api.Test /** diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt similarity index 88% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt rename to src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt index 5340b614e..db1f07ea5 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheLicenseResourceTransformerTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt @@ -1,9 +1,8 @@ -package com.github.jengelman.gradle.plugins.shadow.unit.transformers +package com.github.jengelman.gradle.plugins.shadow.transformers import assertk.assertThat import assertk.assertions.isFalse import assertk.assertions.isTrue -import com.github.jengelman.gradle.plugins.shadow.transformers.ApacheLicenseResourceTransformer import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.kt similarity index 91% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt rename to src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.kt index 04f098d3e..6bef943d9 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/ApacheNoticeResourceTransformerTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.kt @@ -1,11 +1,9 @@ -package com.github.jengelman.gradle.plugins.shadow.unit.transformers +package com.github.jengelman.gradle.plugins.shadow.transformers import assertk.assertThat import assertk.assertions.isFalse import assertk.assertions.isTrue import assertk.fail -import com.github.jengelman.gradle.plugins.shadow.transformers.ApacheNoticeResourceTransformer -import com.github.jengelman.gradle.plugins.shadow.transformers.TransformerContext import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/AppendingTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.kt similarity index 87% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/AppendingTransformerTest.kt rename to src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.kt index 8d249dbc5..aaca41fd1 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/AppendingTransformerTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.kt @@ -1,9 +1,8 @@ -package com.github.jengelman.gradle.plugins.shadow.unit.transformers +package com.github.jengelman.gradle.plugins.shadow.transformers import assertk.assertThat import assertk.assertions.isFalse import assertk.assertions.isTrue -import com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt similarity index 88% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt rename to src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt index ad47bd577..d97c9927c 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/TransformerTestSupport.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt @@ -1,6 +1,5 @@ -package com.github.jengelman.gradle.plugins.shadow.unit.transformers +package com.github.jengelman.gradle.plugins.shadow.transformers -import com.github.jengelman.gradle.plugins.shadow.transformers.Transformer import java.io.InputStream import java.util.Locale import org.gradle.api.file.FileTreeElement diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/XmlAppendingTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt similarity index 83% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/XmlAppendingTransformerTest.kt rename to src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt index f098bce84..8660292d4 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/unit/transformers/XmlAppendingTransformerTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt @@ -1,9 +1,8 @@ -package com.github.jengelman.gradle.plugins.shadow.unit.transformers +package com.github.jengelman.gradle.plugins.shadow.transformers import assertk.assertThat import assertk.assertions.isFalse import assertk.assertions.isTrue -import com.github.jengelman.gradle.plugins.shadow.transformers.XmlAppendingTransformer import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test From 04cb7eaf01a11d83b0773c970a1cf2c4e56d4e70 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:15:27 +0800 Subject: [PATCH 13/29] Migrate ManifestAppenderTransformerTest --- .../ManifestAppenderTransformerTest.kt | 100 +++++++++++++++ .../ManifestAppenderTransformerTest.groovy | 116 ------------------ 2 files changed, 100 insertions(+), 116 deletions(-) create mode 100644 src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.groovy diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt new file mode 100644 index 000000000..e244c9d52 --- /dev/null +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt @@ -0,0 +1,100 @@ +package com.github.jengelman.gradle.plugins.shadow.transformers + +import assertk.assertThat +import assertk.assertions.isEqualTo +import assertk.assertions.isFalse +import assertk.assertions.isGreaterThan +import assertk.assertions.isNotEmpty +import assertk.assertions.isTrue +import java.io.BufferedOutputStream +import java.io.File +import java.io.FileOutputStream +import java.util.zip.ZipFile +import org.apache.tools.zip.ZipOutputStream +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +class ManifestAppenderTransformerTest : TransformerTestSupport() { + @BeforeEach + fun setUp() { + transformer = ManifestAppenderTransformer(objectFactory) + } + + @Test + fun testCanTransformResource() { + with(transformer) { + append("Name", "org/foo/bar/") + append("Sealed", true) + } + + assertThat(transformer.canTransformResource(getFileElement(MANIFEST_NAME))).isTrue() + assertThat(transformer.canTransformResource(getFileElement(MANIFEST_NAME.toLowerCase()))).isTrue() + } + + @Test + fun testHasTransformedResource() { + transformer.append("Tag", "Something") + + assertThat(transformer.hasTransformedResource()).isTrue() + } + + @Test + fun testHasNotTransformedResource() { + assertThat(transformer.hasTransformedResource()).isFalse() + } + + @Test + fun testTransformation() { + with(transformer) { + append("Name", "org/foo/bar/") + append("Sealed", true) + append("Name", "com/example/") + append("Sealed", false) + + transform(TransformerContext(MANIFEST_NAME, requireResourceAsStream(MANIFEST_NAME))) + } + + val testableZipFile = File.createTempFile("testable-zip-file-", ".jar") + val fileOutputStream = FileOutputStream(testableZipFile) + val bufferedOutputStream = BufferedOutputStream(fileOutputStream) + + ZipOutputStream(bufferedOutputStream).use { zipOutputStream -> + transformer.modifyOutputStream(zipOutputStream, true) + } + + val targetLines = readFrom(testableZipFile) + assertThat(targetLines).isNotEmpty() + assertThat(targetLines.size).isGreaterThan(4) + + val trailer = targetLines.subList(targetLines.size - 5, targetLines.size) + assertThat(trailer).isEqualTo( + listOf( + "Name: org/foo/bar/", + "Sealed: true", + "Name: com/example/", + "Sealed: false", + "", + ), + ) + } + + @Test + fun testNoTransformation() { + val sourceLines = requireResourceAsStream(MANIFEST_NAME).bufferedReader().readLines() + transformer.transform(TransformerContext(MANIFEST_NAME, requireResourceAsStream(MANIFEST_NAME))) + val testableZipFile = File.createTempFile("testable-zip-file-", ".jar") + ZipOutputStream(testableZipFile.outputStream().buffered()).use { zipOutputStream -> + transformer.modifyOutputStream(zipOutputStream, true) + } + val targetLines = readFrom(testableZipFile) + + assertThat(targetLines).isEqualTo(sourceLines) + } + + private fun readFrom(jarFile: File, resourceName: String = MANIFEST_NAME): List { + return ZipFile(jarFile).use { zip -> + val entry = zip.getEntry(resourceName) ?: return emptyList() + zip.getInputStream(entry).bufferedReader().readLines() + } + } +} diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.groovy deleted file mode 100644 index 6db9336f5..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.groovy +++ /dev/null @@ -1,116 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.transformers - -import com.github.jengelman.gradle.plugins.shadow.ShadowStats -import com.github.jengelman.gradle.plugins.shadow.relocation.Relocator -import org.apache.tools.zip.ZipOutputStream -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test - -import java.util.zip.ZipFile - -import static java.util.Arrays.asList -import static org.junit.jupiter.api.Assertions.* - -/** - * Test for {@link ManifestAppenderTransformer}. - */ -class ManifestAppenderTransformerTest extends TransformerTestSupport { - - @BeforeEach - void setUp() { - transformer = new ManifestAppenderTransformer(objectFactory) - } - - @Test - void testCanTransformResource() { - transformer.with { - append('Name', 'org/foo/bar/') - append('Sealed', true) - } - - assertTrue(transformer.canTransformResource(getFileElement(MANIFEST_NAME))) - assertTrue(transformer.canTransformResource(getFileElement(MANIFEST_NAME.toLowerCase()))) - } - - @Test - void testHasTransformedResource() { - transformer.append('Tag', 'Something') - - assertTrue(transformer.hasTransformedResource()) - } - - @Test - void testHasNotTransformedResource() { - assertFalse(transformer.hasTransformedResource()) - } - - @Test - void testTransformation() { - transformer.with { - append('Name', 'org/foo/bar/') - append('Sealed', true) - append('Name', 'com/example/') - append('Sealed', false) - - transform(new TransformerContext(MANIFEST_NAME, requireResourceAsStream(MANIFEST_NAME))) - } - - def testableZipFile = File.createTempFile("testable-zip-file-", ".jar") - def fileOutputStream = new FileOutputStream(testableZipFile) - def bufferedOutputStream = new BufferedOutputStream(fileOutputStream) - def zipOutputStream = new ZipOutputStream(bufferedOutputStream) - - try { - transformer.modifyOutputStream(zipOutputStream, true) - } finally { - zipOutputStream.close() - } - - def targetLines = readFrom(testableZipFile, MANIFEST_NAME) - assertFalse(targetLines.isEmpty()) - assertTrue(targetLines.size() > 4) - - def trailer = targetLines.with { subList(size() - 5, size()) } - assertEquals(asList( - "Name: org/foo/bar/", - "Sealed: true", - "Name: com/example/", - "Sealed: false", - ""), trailer - ) - } - - @Test - void testNoTransformation() { - def sourceLines = requireResourceAsStream(MANIFEST_NAME).readLines() - - transformer.transform(new TransformerContext(MANIFEST_NAME, requireResourceAsStream(MANIFEST_NAME))) - - def testableZipFile = File.createTempFile("testable-zip-file-", ".jar") - def fileOutputStream = new FileOutputStream(testableZipFile) - def bufferedOutputStream = new BufferedOutputStream(fileOutputStream) - def zipOutputStream = new ZipOutputStream(bufferedOutputStream) - - try { - transformer.modifyOutputStream(zipOutputStream, true) - } finally { - zipOutputStream.close() - } - def targetLines = readFrom(testableZipFile, MANIFEST_NAME) - - assertEquals(sourceLines, targetLines) - } - - static List readFrom(File jarFile, String resourceName) { - def zip = new ZipFile(jarFile) - try { - def entry = zip.getEntry(resourceName) - if (!entry) { - return Collections.emptyList() - } - return zip.getInputStream(entry).readLines() - } finally { - zip.close() - } - } -} From 7d3c0f6d731119065469271eedb774a7ecaba3bb Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:23:47 +0800 Subject: [PATCH 14/29] Migrate PropertiesFileTransformerTest --- .../ManifestAppenderTransformerTest.kt | 8 -- .../PropertiesFileTransformerTest.kt | 69 +++++++++++++++ .../transformers/TransformerTestSupport.kt | 9 ++ .../PropertiesFileTransformerTest.groovy | 87 ------------------- 4 files changed, 78 insertions(+), 95 deletions(-) create mode 100644 src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.groovy diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt index e244c9d52..04602b8cc 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt @@ -9,7 +9,6 @@ import assertk.assertions.isTrue import java.io.BufferedOutputStream import java.io.File import java.io.FileOutputStream -import java.util.zip.ZipFile import org.apache.tools.zip.ZipOutputStream import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -90,11 +89,4 @@ class ManifestAppenderTransformerTest : TransformerTestSupport { - return ZipFile(jarFile).use { zip -> - val entry = zip.getEntry(resourceName) ?: return emptyList() - zip.getInputStream(entry).bufferedReader().readLines() - } - } } diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt new file mode 100644 index 000000000..07efc54d7 --- /dev/null +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt @@ -0,0 +1,69 @@ +package com.github.jengelman.gradle.plugins.shadow.transformers + +import assertk.assertThat +import assertk.assertions.contains +import assertk.assertions.isEqualTo +import assertk.assertions.isFalse +import assertk.assertions.isNotEmpty +import assertk.assertions.isTrue +import java.io.File +import org.apache.tools.zip.ZipOutputStream +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +class PropertiesFileTransformerTest : TransformerTestSupport() { + + @BeforeEach + fun setUp() { + transformer = PropertiesFileTransformer(objectFactory) + } + + @Test + fun testHasTransformedResource() { + transformer.transform(TransformerContext(MANIFEST_NAME, requireResourceAsStream(MANIFEST_NAME))) + + assertThat(transformer.hasTransformedResource()).isTrue() + } + + @Test + fun testHasNotTransformedResource() { + assertThat(transformer.hasTransformedResource()).isFalse() + } + + @Test + fun testTransformation() { + transformer.transform(TransformerContext(MANIFEST_NAME, requireResourceAsStream(MANIFEST_NAME))) + + val testableZipFile = doTransformAndGetTransformedFile(transformer, false) + val targetLines = readFrom(testableZipFile, MANIFEST_NAME) + + assertThat(targetLines).isNotEmpty() + assertThat(targetLines).contains("Manifest-Version=1.0") + } + + @Test + fun testTransformationPropertiesAreReproducible() { + transformer.transform(TransformerContext(MANIFEST_NAME, requireResourceAsStream(MANIFEST_NAME))) + + val firstRunTransformedFile = doTransformAndGetTransformedFile(transformer, true) + val firstRunTargetLines = readFrom(firstRunTransformedFile, MANIFEST_NAME) + + Thread.sleep(1000) // wait for 1sec to ensure timestamps in properties would change + + val secondRunTransformedFile = doTransformAndGetTransformedFile(transformer, true) + val secondRunTargetLines = readFrom(secondRunTransformedFile, MANIFEST_NAME) + + assertThat(firstRunTargetLines).isEqualTo(secondRunTargetLines) + } + + private fun doTransformAndGetTransformedFile( + transformer: PropertiesFileTransformer, + preserveFileTimestamps: Boolean, + ): File { + val testableZipFile = File.createTempFile("testable-zip-file-", ".jar") + ZipOutputStream(testableZipFile.outputStream().buffered()).use { zipOutputStream -> + transformer.modifyOutputStream(zipOutputStream, preserveFileTimestamps) + } + return testableZipFile + } +} diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt index d97c9927c..0f85e234b 100644 --- a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt @@ -1,7 +1,9 @@ package com.github.jengelman.gradle.plugins.shadow.transformers +import java.io.File import java.io.InputStream import java.util.Locale +import java.util.zip.ZipFile import org.gradle.api.file.FileTreeElement import org.gradle.api.file.RelativePath import org.gradle.api.internal.file.DefaultFileTreeElement @@ -22,6 +24,13 @@ abstract class TransformerTestSupport { return DefaultFileTreeElement(null, RelativePath.parse(true, path), null, null) } + fun readFrom(jarFile: File, resourceName: String = MANIFEST_NAME): List { + return ZipFile(jarFile).use { zip -> + val entry = zip.getEntry(resourceName) ?: return emptyList() + zip.getInputStream(entry).bufferedReader().readLines() + } + } + /** * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime * choice to test for improper case-less string comparisons. diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.groovy deleted file mode 100644 index c69ce09f2..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.groovy +++ /dev/null @@ -1,87 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.transformers - -import org.apache.tools.zip.ZipOutputStream -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test - -import java.util.zip.ZipFile - -import static org.junit.jupiter.api.Assertions.* - -/** - * Test for {@link PropertiesFileTransformer}. - */ -final class PropertiesFileTransformerTest extends TransformerTestSupport { - - @BeforeEach - void setUp() { - transformer = new PropertiesFileTransformer(objectFactory) - } - - @Test - void testHasTransformedResource() { - transformer.transform(new TransformerContext(MANIFEST_NAME, requireResourceAsStream(MANIFEST_NAME))) - - assertTrue(transformer.hasTransformedResource()) - } - - @Test - void testHasNotTransformedResource() { - assertFalse(transformer.hasTransformedResource()) - } - - @Test - void testTransformation() { - transformer.transform(new TransformerContext(MANIFEST_NAME, requireResourceAsStream(MANIFEST_NAME))) - - def testableZipFile = doTransformAndGetTransformedFile(transformer, false) - def targetLines = readFrom(testableZipFile, MANIFEST_NAME) - - assertFalse(targetLines.isEmpty()) - - assertTrue(targetLines.contains("Manifest-Version=1.0")) - } - - @Test - void testTransformationPropertiesAreReproducible() { - transformer.transform(new TransformerContext(MANIFEST_NAME, requireResourceAsStream(MANIFEST_NAME))) - - def firstRunTransformedFile = doTransformAndGetTransformedFile(transformer, true) - def firstRunTargetLines = readFrom(firstRunTransformedFile, MANIFEST_NAME) - - Thread.sleep(1000) // wait for 1sec to ensure timestamps in properties would change - - def secondRunTransformedFile = doTransformAndGetTransformedFile(transformer, true) - def secondRunTargetLines = readFrom(secondRunTransformedFile, MANIFEST_NAME) - - assertEquals(firstRunTargetLines, secondRunTargetLines) - } - - static File doTransformAndGetTransformedFile(final PropertiesFileTransformer transformer, final boolean preserveFileTimestamps) { - def testableZipFile = File.createTempFile("testable-zip-file-", ".jar") - def fileOutputStream = new FileOutputStream(testableZipFile) - def bufferedOutputStream = new BufferedOutputStream(fileOutputStream) - def zipOutputStream = new ZipOutputStream(bufferedOutputStream) - - try { - transformer.modifyOutputStream(zipOutputStream, preserveFileTimestamps) - } finally { - zipOutputStream.close() - } - - return testableZipFile - } - - static List readFrom(File jarFile, String resourceName) { - def zip = new ZipFile(jarFile) - try { - def entry = zip.getEntry(resourceName) - if (!entry) { - return Collections.emptyList() - } - return zip.getInputStream(entry).readLines() - } finally { - zip.close() - } - } -} From 1965c0a9205a0691eee47a62d43d86a30070f457 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:26:38 +0800 Subject: [PATCH 15/29] Migrate ComponentsXmlResourceTransformerTest --- .../ComponentsXmlResourceTransformerTest.kt | 40 ++++++++++++++++++ .../ComponentsXmlResourceTransformer.kt | 2 +- ...omponentsXmlResourceTransformerTest.groovy | 41 ------------------- 3 files changed, 41 insertions(+), 42 deletions(-) create mode 100644 src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.groovy diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt new file mode 100644 index 000000000..d66b9c506 --- /dev/null +++ b/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt @@ -0,0 +1,40 @@ +package com.github.jengelman.gradle.plugins.shadow.transformers + +import assertk.assertThat +import assertk.assertions.isTrue +import org.codehaus.plexus.util.IOUtil +import org.custommonkey.xmlunit.XMLUnit +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test + +class ComponentsXmlResourceTransformerTest : TransformerTestSupport() { + + @BeforeEach + fun setUp() { + transformer = ComponentsXmlResourceTransformer() + } + + @Test + fun testConfigurationMerging() { + XMLUnit.setNormalizeWhitespace(true) + + transformer.transform( + TransformerContext.builder() + .path("components-1.xml") + .inputStream(requireResourceAsStream("components-1.xml")) + .build(), + ) + transformer.transform( + TransformerContext.builder() + .path("components-1.xml") + .inputStream(requireResourceAsStream("components-2.xml")) + .build(), + ) + + val expectedXml = IOUtil.toString(requireResourceAsStream("components-expected.xml"), "UTF-8") + val actualXml = IOUtil.toString(transformer.transformedResource, "UTF-8") + val diff = XMLUnit.compareXML(expectedXml, actualXml) + + assertThat(diff.identical()).isTrue() + } +} diff --git a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt index 345cfaa44..4128e2c77 100644 --- a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt +++ b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt @@ -90,7 +90,7 @@ public open class ComponentsXmlResourceTransformer : Transformer { override fun hasTransformedResource(): Boolean = components.isNotEmpty() @get:Throws(IOException::class) - private val transformedResource: ByteArray + internal val transformedResource: ByteArray get() { val os = ByteArrayOutputStream(1024 * 4) XmlStreamWriter(os).use { writer -> diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.groovy deleted file mode 100644 index 840969b36..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.groovy +++ /dev/null @@ -1,41 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.transformers - -import org.codehaus.plexus.util.IOUtil -import org.custommonkey.xmlunit.Diff -import org.custommonkey.xmlunit.XMLAssert -import org.custommonkey.xmlunit.XMLUnit -import org.junit.jupiter.api.BeforeEach -import org.junit.jupiter.api.Test - -/** - * Modified from org.apache.maven.plugins.shade.resource.ComponentsXmlResourceTransformerTest.java - */ -class ComponentsXmlResourceTransformerTest extends TransformerTestSupport { - @BeforeEach - void setUp() { - transformer = new ComponentsXmlResourceTransformer() - } - - @Test - void testConfigurationMerging() { - - XMLUnit.setNormalizeWhitespace(true) - - transformer.transform( - TransformerContext.builder() - .path("components-1.xml") - .inputStream(requireResourceAsStream("components-1.xml")) - .build() - ) - transformer.transform( - TransformerContext.builder() - .path("components-1.xml") - .inputStream(requireResourceAsStream("components-2.xml")) - .build() - ) - Diff diff = XMLUnit.compareXML( - IOUtil.toString(requireResourceAsStream("components-expected.xml"), "UTF-8"), - IOUtil.toString(transformer.transformedResource, "UTF-8")) - XMLAssert.assertXMLIdentical(diff, true) - } -} From 8e55c4f5df5ce91da1fdfd80a85d37c4f9e0bfd4 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:28:37 +0800 Subject: [PATCH 16/29] Move sources into test source set --- .editorconfig | 3 --- build.gradle.kts | 3 --- src/funcTest/.editorconfig | 2 ++ src/test/.editorconfig | 4 ---- .../TransformerTestSupport.groovy | 20 ------------------- .../SimpleRelocatorParameterTest.kt | 0 .../shadow/relocation/SimpleRelocatorTest.kt | 0 .../ApacheLicenseResourceTransformerTest.kt | 0 .../ApacheNoticeResourceTransformerTest.kt | 0 .../transformers/AppendingTransformerTest.kt | 0 .../ComponentsXmlResourceTransformerTest.kt | 0 .../ManifestAppenderTransformerTest.kt | 0 .../PropertiesFileTransformerTest.kt | 0 .../transformers/TransformerTestSupport.kt | 0 .../XmlAppendingTransformerTest.kt | 0 15 files changed, 2 insertions(+), 30 deletions(-) create mode 100755 src/funcTest/.editorconfig delete mode 100755 src/test/.editorconfig delete mode 100644 src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy rename src/{intiTest => test}/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt (100%) rename src/{intiTest => test}/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt (100%) rename src/{intiTest => test}/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt (100%) rename src/{intiTest => test}/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.kt (100%) rename src/{intiTest => test}/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.kt (100%) rename src/{intiTest => test}/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt (100%) rename src/{intiTest => test}/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt (100%) rename src/{intiTest => test}/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt (100%) rename src/{intiTest => test}/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt (100%) rename src/{intiTest => test}/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt (100%) diff --git a/.editorconfig b/.editorconfig index 97c1b8453..f36ddfdde 100755 --- a/.editorconfig +++ b/.editorconfig @@ -7,9 +7,6 @@ indent_style = space insert_final_newline = true trim_trailing_whitespace = true -[*.{groovy,java}] -indent_size = 4 - [*.{kt,kts}] ij_kotlin_imports_layout = * ij_kotlin_allow_trailing_comma = true diff --git a/build.gradle.kts b/build.gradle.kts index e0a8ab157..c6cc4cd93 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -81,9 +81,6 @@ dependencies { testImplementation(libs.apache.commonsLang) testRuntimeOnly(libs.junit.platformLauncher) - // TODO: this will be removed once we split unit tests from integration tests. - intiTestImplementation(sourceSets.main.get().output) - funcTestImplementation(libs.spock) { exclude(group = "org.codehaus.groovy") exclude(group = "org.hamcrest") diff --git a/src/funcTest/.editorconfig b/src/funcTest/.editorconfig new file mode 100755 index 000000000..3c75e2d26 --- /dev/null +++ b/src/funcTest/.editorconfig @@ -0,0 +1,2 @@ +[*.{groovy,java}] +indent_size = 4 diff --git a/src/test/.editorconfig b/src/test/.editorconfig deleted file mode 100755 index a54a0eb0d..000000000 --- a/src/test/.editorconfig +++ /dev/null @@ -1,4 +0,0 @@ -root = true - -[*.{groovy,java}] -indent_size = 2 diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy b/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy deleted file mode 100644 index ef881526c..000000000 --- a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy +++ /dev/null @@ -1,20 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.transformers - -import org.gradle.api.file.FileTreeElement -import org.gradle.api.file.RelativePath -import org.gradle.api.internal.file.DefaultFileTreeElement -import org.gradle.testfixtures.ProjectBuilder - -abstract class TransformerTestSupport { - protected static T transformer - protected static final def objectFactory = ProjectBuilder.builder().build().objects - protected static final String MANIFEST_NAME = "META-INF/MANIFEST.MF" - - protected static FileTreeElement getFileElement(String path) { - return new DefaultFileTreeElement(null, RelativePath.parse(true, path), null, null) - } - - protected InputStream requireResourceAsStream(String resource) { - this.class.classLoader.getResourceAsStream(resource) - } -} diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt similarity index 100% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt similarity index 100% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt similarity index 100% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.kt similarity index 100% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.kt rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.kt diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.kt similarity index 100% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.kt rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.kt diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt similarity index 100% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt similarity index 100% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt similarity index 100% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt similarity index 100% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt diff --git a/src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt similarity index 100% rename from src/intiTest/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt From e3544deabc3041bb87fe730980702625f4966195 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:34:41 +0800 Subject: [PATCH 17/29] Rename groovy folder to kotlin --- .../plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy | 0 .../gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy | 0 .../transformers/ApacheLicenseResourceTransformerTest.groovy | 0 .../transformers/ApacheNoticeResourceTransformerTest.groovy | 0 .../plugins/shadow/transformers/AppendingTransformerTest.groovy | 0 .../transformers/ComponentsXmlResourceTransformerTest.groovy | 0 .../shadow/transformers/ManifestAppenderTransformerTest.groovy | 0 .../shadow/transformers/PropertiesFileTransformerTest.groovy | 0 .../plugins/shadow/transformers/TransformerTestSupport.groovy | 0 .../shadow/transformers/XmlAppendingTransformerTest.groovy | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename src/test/{groovy => kotlin}/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy (100%) rename src/test/{groovy => kotlin}/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy (100%) rename src/test/{groovy => kotlin}/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.groovy (100%) rename src/test/{groovy => kotlin}/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.groovy (100%) rename src/test/{groovy => kotlin}/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.groovy (100%) rename src/test/{groovy => kotlin}/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.groovy (100%) rename src/test/{groovy => kotlin}/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.groovy (100%) rename src/test/{groovy => kotlin}/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.groovy (100%) rename src/test/{groovy => kotlin}/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy (100%) rename src/test/{groovy => kotlin}/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.groovy (100%) diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy similarity index 100% rename from src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy similarity index 100% rename from src/test/groovy/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.groovy similarity index 100% rename from src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.groovy diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.groovy similarity index 100% rename from src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.groovy diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.groovy similarity index 100% rename from src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.groovy diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.groovy similarity index 100% rename from src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.groovy diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.groovy similarity index 100% rename from src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.groovy diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.groovy similarity index 100% rename from src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.groovy diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy similarity index 100% rename from src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy diff --git a/src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.groovy similarity index 100% rename from src/test/groovy/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.groovy From 217f2ceb4bccf95379382b8d54692240139619bf Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:37:21 +0800 Subject: [PATCH 18/29] Mark internal --- .../shadow/transformers/ComponentsXmlResourceTransformer.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt index 4128e2c77..a0ac9658b 100644 --- a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt +++ b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt @@ -13,6 +13,7 @@ import org.codehaus.plexus.util.xml.Xpp3Dom import org.codehaus.plexus.util.xml.Xpp3DomBuilder import org.codehaus.plexus.util.xml.Xpp3DomWriter import org.gradle.api.file.FileTreeElement +import org.gradle.api.tasks.Internal /** * A resource processor that aggregates plexus `components.xml` files. @@ -90,6 +91,7 @@ public open class ComponentsXmlResourceTransformer : Transformer { override fun hasTransformedResource(): Boolean = components.isNotEmpty() @get:Throws(IOException::class) + @get:Internal internal val transformedResource: ByteArray get() { val os = ByteArrayOutputStream(1024 * 4) From a25f0172300a1d7de6c06e5c215fcfc5cd973766 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:41:16 +0800 Subject: [PATCH 19/29] Change suffixes to .kt --- ...ocatorParameterTest.groovy => SimpleRelocatorParameterTest.kt} | 0 .../{SimpleRelocatorTest.groovy => SimpleRelocatorTest.kt} | 0 ...sformerTest.groovy => ApacheLicenseResourceTransformerTest.kt} | 0 ...nsformerTest.groovy => ApacheNoticeResourceTransformerTest.kt} | 0 ...ppendingTransformerTest.groovy => AppendingTransformerTest.kt} | 0 ...sformerTest.groovy => ComponentsXmlResourceTransformerTest.kt} | 0 ...rTransformerTest.groovy => ManifestAppenderTransformerTest.kt} | 0 ...ileTransformerTest.groovy => PropertiesFileTransformerTest.kt} | 0 .../{TransformerTestSupport.groovy => TransformerTestSupport.kt} | 0 ...ndingTransformerTest.groovy => XmlAppendingTransformerTest.kt} | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/{SimpleRelocatorParameterTest.groovy => SimpleRelocatorParameterTest.kt} (100%) rename src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/{SimpleRelocatorTest.groovy => SimpleRelocatorTest.kt} (100%) rename src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/{ApacheLicenseResourceTransformerTest.groovy => ApacheLicenseResourceTransformerTest.kt} (100%) rename src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/{ApacheNoticeResourceTransformerTest.groovy => ApacheNoticeResourceTransformerTest.kt} (100%) rename src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/{AppendingTransformerTest.groovy => AppendingTransformerTest.kt} (100%) rename src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/{ComponentsXmlResourceTransformerTest.groovy => ComponentsXmlResourceTransformerTest.kt} (100%) rename src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/{ManifestAppenderTransformerTest.groovy => ManifestAppenderTransformerTest.kt} (100%) rename src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/{PropertiesFileTransformerTest.groovy => PropertiesFileTransformerTest.kt} (100%) rename src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/{TransformerTestSupport.groovy => TransformerTestSupport.kt} (100%) rename src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/{XmlAppendingTransformerTest.groovy => XmlAppendingTransformerTest.kt} (100%) diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt similarity index 100% rename from src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt similarity index 100% rename from src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt similarity index 100% rename from src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.kt similarity index 100% rename from src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheNoticeResourceTransformerTest.kt diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.kt similarity index 100% rename from src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/AppendingTransformerTest.kt diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt similarity index 100% rename from src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt similarity index 100% rename from src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt similarity index 100% rename from src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt similarity index 100% rename from src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.groovy b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt similarity index 100% rename from src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.groovy rename to src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt From 979dc95afc03e89a5d49d9ede5a7b5c25ca87f75 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:52:10 +0800 Subject: [PATCH 20/29] Replace IOUtil --- .../transformers/ComponentsXmlResourceTransformerTest.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt index d66b9c506..eda3dc7ab 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt @@ -2,7 +2,6 @@ package com.github.jengelman.gradle.plugins.shadow.transformers import assertk.assertThat import assertk.assertions.isTrue -import org.codehaus.plexus.util.IOUtil import org.custommonkey.xmlunit.XMLUnit import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -31,8 +30,8 @@ class ComponentsXmlResourceTransformerTest : TransformerTestSupport Date: Sat, 30 Nov 2024 21:54:09 +0800 Subject: [PATCH 21/29] Remove redundant throwing --- .../shadow/transformers/ComponentsXmlResourceTransformer.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt index a0ac9658b..8c273e6e7 100644 --- a/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt +++ b/src/main/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformer.kt @@ -90,7 +90,6 @@ public open class ComponentsXmlResourceTransformer : Transformer { override fun hasTransformedResource(): Boolean = components.isNotEmpty() - @get:Throws(IOException::class) @get:Internal internal val transformedResource: ByteArray get() { From 3653a4ee3a9a20eab7f53364b71ab50dd2142874 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:56:10 +0800 Subject: [PATCH 22/29] Remove SimpleRelocatorParameterTest as it's outdated --- .../SimpleRelocatorParameterTest.kt | 29 ------------------- 1 file changed, 29 deletions(-) delete mode 100644 src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt deleted file mode 100644 index 0fa2efe2c..000000000 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorParameterTest.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.github.jengelman.gradle.plugins.shadow.relocation - -import assertk.fail -import org.junit.jupiter.api.Test - -/** - * Modified from [org.apache.maven.plugins.shade.relocation.SimpleRelocatorParameterTest.java](https://github.com/apache/maven-shade-plugin/blob/master/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorParameterTest.java). - * - * @author John Engelman - */ -class SimpleRelocatorParameterTest { - @Test - fun testThatNullPatternInConstructorShouldNotThrowNullPointerException() { - constructThenFailOnNullPointerException(null, "") - } - - @Test - fun testThatNullShadedPatternInConstructorShouldNotThrowNullPointerException() { - constructThenFailOnNullPointerException("", null) - } - - private fun constructThenFailOnNullPointerException(pattern: String?, shadedPattern: String?) { - try { - SimpleRelocator(pattern, shadedPattern) - } catch (e: NullPointerException) { - fail("Constructor should not throw null pointer exceptions") - } - } -} From 7b730f2c84249a72ce7880f417f3e15b5470f6a0 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 21:57:22 +0800 Subject: [PATCH 23/29] Cleanups --- .../shadow/relocation/SimpleRelocatorTest.kt | 39 ++++++++++--------- .../ComponentsXmlResourceTransformerTest.kt | 3 ++ 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt index 1c73d13c5..ad8d042b9 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/relocation/SimpleRelocatorTest.kt @@ -24,14 +24,14 @@ class SimpleRelocatorTest { assertThat(relocator.canRelocatePath("com/foo/bar/Class.class")).isFalse() assertThat(relocator.canRelocatePath("org/Foo/Class")).isFalse() assertThat(relocator.canRelocatePath("org/Foo/Class.class")).isFalse() + + // Verify paths starting with '/' assertThat(relocator.canRelocatePath("/org/Foo/Class")).isFalse() assertThat(relocator.canRelocatePath("/org/Foo/Class.class")).isFalse() relocator = SimpleRelocator( "org.foo", - null, - null, - listOf("org.foo.Excluded", "org.foo.public.*", "org.foo.recurse.**", "org.foo.Public*Stuff"), + excludes = listOf("org.foo.Excluded", "org.foo.public.*", "org.foo.recurse.**", "org.foo.Public*Stuff"), ) assertThat(relocator.canRelocatePath("org/foo/Class")).isTrue() assertThat(relocator.canRelocatePath("org/foo/Class.class")).isTrue() @@ -57,18 +57,20 @@ class SimpleRelocatorTest { assertThat(relocator.canRelocatePath("org/foo/recurse/sub/Class")).isFalse() assertThat(relocator.canRelocatePath("org/foo/recurse/sub/Class.class")).isFalse() + // Verify edge cases relocator = SimpleRelocator("org.f") - assertThat(relocator.canRelocatePath("")).isFalse() - assertThat(relocator.canRelocatePath(".class")).isFalse() - assertThat(relocator.canRelocatePath("te")).isFalse() - assertThat(relocator.canRelocatePath("test")).isFalse() - assertThat(relocator.canRelocatePath("org/f")).isTrue() - assertThat(relocator.canRelocatePath("/org/f")).isTrue() + assertThat(relocator.canRelocatePath("")).isFalse() // Empty path + assertThat(relocator.canRelocatePath(".class")).isFalse() // only .class + assertThat(relocator.canRelocatePath("te")).isFalse() // shorter than path pattern + assertThat(relocator.canRelocatePath("test")).isFalse() // shorter than path pattern with / + assertThat(relocator.canRelocatePath("org/f")).isTrue() // equal to path pattern + assertThat(relocator.canRelocatePath("/org/f")).isTrue() // equal to path pattern with / } @Test fun testCanRelocatePathWithRegex() { - var relocator = SimpleRelocator("org.foo", null, listOf("%regex[org/foo/R(\\\$.*)?\$]")) + // Include with Regex + var relocator = SimpleRelocator("org.foo", includes = listOf("%regex[org/foo/R(\\\$.*)?\$]")) assertThat(relocator.canRelocatePath("org/foo/R.class")).isTrue() assertThat(relocator.canRelocatePath("org/foo/R\$string.class")).isTrue() assertThat(relocator.canRelocatePath("org/foo/R\$layout.class")).isTrue() @@ -78,6 +80,7 @@ class SimpleRelocatorTest { assertThat(relocator.canRelocatePath("org/R.class")).isFalse() assertThat(relocator.canRelocatePath("org/R\$string.class")).isFalse() + // Exclude with Regex relocator = SimpleRelocator("org.foo") relocator.exclude("%regex[org/foo/.*Factory[0-9].*]") assertThat(relocator.canRelocatePath("org/foo/Factory.class")).isTrue() @@ -87,10 +90,10 @@ class SimpleRelocatorTest { assertThat(relocator.canRelocatePath("org/foo/FooFactory1Main.class")).isFalse() assertThat(relocator.canRelocatePath("org/foo/BarFactory2.class")).isFalse() + // Include with Regex and normal pattern relocator = SimpleRelocator( "org.foo", - null, - listOf("%regex[org/foo/.*Factory[0-9].*]", "org.foo.public.*"), + includes = listOf("%regex[org/foo/.*Factory[0-9].*]", "org.foo.public.*"), ) assertThat(relocator.canRelocatePath("org/foo/Factory1.class")).isTrue() assertThat(relocator.canRelocatePath("org/foo/public/Bar.class")).isTrue() @@ -108,9 +111,7 @@ class SimpleRelocatorTest { relocator = SimpleRelocator( "org.foo", - null, - null, - listOf("org.foo.Excluded", "org.foo.public.*", "org.foo.recurse.**", "org.foo.Public*Stuff"), + excludes = listOf("org.foo.Excluded", "org.foo.public.*", "org.foo.recurse.**", "org.foo.Public*Stuff"), ) assertThat(relocator.canRelocateClass("org.foo.Class")).isTrue() assertThat(relocator.canRelocateClass("org.foo.excluded")).isTrue() @@ -131,10 +132,10 @@ class SimpleRelocatorTest { @Test fun testCanRelocateRawString() { - var relocator = SimpleRelocator("org/foo", null, null, null, true) + var relocator = SimpleRelocator("org/foo", _rawString = true) assertThat(relocator.canRelocatePath("(I)org/foo/bar/Class")).isTrue() - relocator = SimpleRelocator("^META-INF/org.foo.xml\$", null, null, null, true) + relocator = SimpleRelocator("^META-INF/org.foo.xml\$", _rawString = true) assertThat(relocator.canRelocatePath("META-INF/org.foo.xml")).isTrue() } @@ -169,11 +170,11 @@ class SimpleRelocatorTest { @Test fun testRelocateRawString() { - var relocator = SimpleRelocator("Lorg/foo", "Lhidden/org/foo", null, null, true) + var relocator = SimpleRelocator("Lorg/foo", "Lhidden/org/foo", _rawString = true) assertThat(relocator.relocatePath(pathContext("(I)Lorg/foo/bar/Class"))) .isEqualTo("(I)Lhidden/org/foo/bar/Class") - relocator = SimpleRelocator("^META-INF/org.foo.xml\$", "META-INF/hidden.org.foo.xml", null, null, true) + relocator = SimpleRelocator("^META-INF/org.foo.xml\$", "META-INF/hidden.org.foo.xml", _rawString = true) assertThat(relocator.relocatePath(pathContext("META-INF/org.foo.xml"))) .isEqualTo("META-INF/hidden.org.foo.xml") } diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt index eda3dc7ab..f3f1729fc 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt @@ -6,6 +6,9 @@ import org.custommonkey.xmlunit.XMLUnit import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test +/** + * Modified from [org.apache.maven.plugins.shade.resource.ComponentsXmlResourceTransformerTest.java](https://github.com/apache/maven-shade-plugin/blob/master/src/test/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformerTest.java). + */ class ComponentsXmlResourceTransformerTest : TransformerTestSupport() { @BeforeEach From 13da1529303f4a1292775b55e19cb3a53860c705 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 22:07:58 +0800 Subject: [PATCH 24/29] Rename setUp to setup --- .../shadow/transformers/ApacheLicenseResourceTransformerTest.kt | 2 +- .../shadow/transformers/ApacheNoticeResourceTransformerTest.kt | 2 +- .../plugins/shadow/transformers/AppendingTransformerTest.kt | 2 +- .../shadow/transformers/ComponentsXmlResourceTransformerTest.kt | 2 +- .../shadow/transformers/ManifestAppenderTransformerTest.kt | 2 +- .../shadow/transformers/PropertiesFileTransformerTest.kt | 2 +- .../plugins/shadow/transformers/XmlAppendingTransformerTest.kt | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt index db1f07ea5..407721fed 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ApacheLicenseResourceTransformerTest.kt @@ -16,7 +16,7 @@ class ApacheLicenseResourceTransformerTest : TransformerTestSupport() } @BeforeEach - fun setUp() { + fun setup() { transformer = AppendingTransformer(objectFactory) } diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt index f3f1729fc..fed958da4 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt @@ -12,7 +12,7 @@ import org.junit.jupiter.api.Test class ComponentsXmlResourceTransformerTest : TransformerTestSupport() { @BeforeEach - fun setUp() { + fun setup() { transformer = ComponentsXmlResourceTransformer() } diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt index 04602b8cc..5e5d9c09a 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt @@ -15,7 +15,7 @@ import org.junit.jupiter.api.Test class ManifestAppenderTransformerTest : TransformerTestSupport() { @BeforeEach - fun setUp() { + fun setup() { transformer = ManifestAppenderTransformer(objectFactory) } diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt index 07efc54d7..c3764a34e 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt @@ -14,7 +14,7 @@ import org.junit.jupiter.api.Test class PropertiesFileTransformerTest : TransformerTestSupport() { @BeforeEach - fun setUp() { + fun setup() { transformer = PropertiesFileTransformer(objectFactory) } diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt index 8660292d4..5bb4b85f4 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/XmlAppendingTransformerTest.kt @@ -13,7 +13,7 @@ class XmlAppendingTransformerTest : TransformerTestSupport Date: Sat, 30 Nov 2024 22:19:19 +0800 Subject: [PATCH 25/29] Cleanups --- .../transformers/ComponentsXmlResourceTransformerTest.kt | 9 ++++----- .../transformers/ManifestAppenderTransformerTest.kt | 6 +++--- .../shadow/transformers/PropertiesFileTransformerTest.kt | 6 +++--- .../shadow/transformers/TransformerTestSupport.kt | 5 ++++- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt index fed958da4..9045a89b2 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ComponentsXmlResourceTransformerTest.kt @@ -32,11 +32,10 @@ class ComponentsXmlResourceTransformerTest : TransformerTestSupport transformer.modifyOutputStream(zipOutputStream, true) diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt index c3764a34e..9caefcb38 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt @@ -20,7 +20,7 @@ class PropertiesFileTransformerTest : TransformerTestSupport { protected lateinit var transformer: T + protected val manifestTransformerContext: TransformerContext + get() = TransformerContext(MANIFEST_NAME, requireResourceAsStream(MANIFEST_NAME)) + protected fun requireResourceAsStream(name: String): InputStream { return this::class.java.classLoader.getResourceAsStream(name) ?: error("Resource $name not found.") } protected companion object { + const val MANIFEST_NAME: String = "META-INF/MANIFEST.MF" val objectFactory = ProjectBuilder.builder().build().objects - val MANIFEST_NAME: String = "META-INF/MANIFEST.MF" fun getFileElement(path: String): FileTreeElement { return DefaultFileTreeElement(null, RelativePath.parse(true, path), null, null) From 85d812972f35cfa329a2ad956a099acf46be9244 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 22:31:19 +0800 Subject: [PATCH 26/29] Migrate java.io.File usages --- .../ManifestAppenderTransformerTest.kt | 20 +++++++--------- .../PropertiesFileTransformerTest.kt | 24 ++++++++++--------- .../transformers/TransformerTestSupport.kt | 6 ++--- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt index 76cc06e00..60899b36c 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt @@ -6,9 +6,8 @@ import assertk.assertions.isFalse import assertk.assertions.isGreaterThan import assertk.assertions.isNotEmpty import assertk.assertions.isTrue -import java.io.BufferedOutputStream -import java.io.File -import java.io.FileOutputStream +import kotlin.io.path.createTempFile +import kotlin.io.path.outputStream import org.apache.tools.zip.ZipOutputStream import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -53,15 +52,12 @@ class ManifestAppenderTransformerTest : TransformerTestSupport + val testableZipPath = createTempFile("testable-zip-file-", ".jar") + ZipOutputStream(testableZipPath.outputStream().buffered()).use { zipOutputStream -> transformer.modifyOutputStream(zipOutputStream, true) } - val targetLines = readFrom(testableZipFile) + val targetLines = readFrom(testableZipPath) assertThat(targetLines).isNotEmpty() assertThat(targetLines.size).isGreaterThan(4) @@ -81,11 +77,11 @@ class ManifestAppenderTransformerTest : TransformerTestSupport + val testableZipPath = createTempFile("testable-zip-file-", ".jar") + ZipOutputStream(testableZipPath.outputStream().buffered()).use { zipOutputStream -> transformer.modifyOutputStream(zipOutputStream, true) } - val targetLines = readFrom(testableZipFile) + val targetLines = readFrom(testableZipPath) assertThat(targetLines).isEqualTo(sourceLines) } diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt index 9caefcb38..a45620a63 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt @@ -6,7 +6,9 @@ import assertk.assertions.isEqualTo import assertk.assertions.isFalse import assertk.assertions.isNotEmpty import assertk.assertions.isTrue -import java.io.File +import java.nio.file.Path +import kotlin.io.path.createTempFile +import kotlin.io.path.outputStream import org.apache.tools.zip.ZipOutputStream import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -34,8 +36,8 @@ class PropertiesFileTransformerTest : TransformerTestSupport + ): Path { + val testableZipPath = createTempFile("testable-zip-file-", ".jar") + ZipOutputStream(testableZipPath.outputStream().buffered()).use { zipOutputStream -> transformer.modifyOutputStream(zipOutputStream, preserveFileTimestamps) } - return testableZipFile + return testableZipPath } } diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt index 84595a20c..53bf8495e 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt @@ -1,7 +1,7 @@ package com.github.jengelman.gradle.plugins.shadow.transformers -import java.io.File import java.io.InputStream +import java.nio.file.Path import java.util.Locale import java.util.zip.ZipFile import org.gradle.api.file.FileTreeElement @@ -27,8 +27,8 @@ abstract class TransformerTestSupport { return DefaultFileTreeElement(null, RelativePath.parse(true, path), null, null) } - fun readFrom(jarFile: File, resourceName: String = MANIFEST_NAME): List { - return ZipFile(jarFile).use { zip -> + fun readFrom(jarPath: Path, resourceName: String = MANIFEST_NAME): List { + return ZipFile(jarPath.toFile()).use { zip -> val entry = zip.getEntry(resourceName) ?: return emptyList() zip.getInputStream(entry).bufferedReader().readLines() } From 3f094a02f2730278399b6bc60c927c3366748d89 Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 22:34:17 +0800 Subject: [PATCH 27/29] Reuse doTransformAndGetTransformedPath --- .../ManifestAppenderTransformerTest.kt | 13 ++---------- .../PropertiesFileTransformerTest.kt | 21 +++---------------- .../transformers/TransformerTestSupport.kt | 14 +++++++++++++ 3 files changed, 19 insertions(+), 29 deletions(-) diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt index 60899b36c..4c5c21714 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/ManifestAppenderTransformerTest.kt @@ -6,9 +6,6 @@ import assertk.assertions.isFalse import assertk.assertions.isGreaterThan import assertk.assertions.isNotEmpty import assertk.assertions.isTrue -import kotlin.io.path.createTempFile -import kotlin.io.path.outputStream -import org.apache.tools.zip.ZipOutputStream import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -52,10 +49,7 @@ class ManifestAppenderTransformerTest : TransformerTestSupport - transformer.modifyOutputStream(zipOutputStream, true) - } + val testableZipPath = doTransformAndGetTransformedPath(transformer, true) val targetLines = readFrom(testableZipPath) assertThat(targetLines).isNotEmpty() @@ -77,10 +71,7 @@ class ManifestAppenderTransformerTest : TransformerTestSupport - transformer.modifyOutputStream(zipOutputStream, true) - } + val testableZipPath = doTransformAndGetTransformedPath(transformer, true) val targetLines = readFrom(testableZipPath) assertThat(targetLines).isEqualTo(sourceLines) diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt index a45620a63..527706a1c 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt @@ -6,10 +6,6 @@ import assertk.assertions.isEqualTo import assertk.assertions.isFalse import assertk.assertions.isNotEmpty import assertk.assertions.isTrue -import java.nio.file.Path -import kotlin.io.path.createTempFile -import kotlin.io.path.outputStream -import org.apache.tools.zip.ZipOutputStream import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test @@ -36,7 +32,7 @@ class PropertiesFileTransformerTest : TransformerTestSupport - transformer.modifyOutputStream(zipOutputStream, preserveFileTimestamps) - } - return testableZipPath - } } diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt index 53bf8495e..8fcd2d84d 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/TransformerTestSupport.kt @@ -4,6 +4,9 @@ import java.io.InputStream import java.nio.file.Path import java.util.Locale import java.util.zip.ZipFile +import kotlin.io.path.createTempFile +import kotlin.io.path.outputStream +import org.apache.tools.zip.ZipOutputStream import org.gradle.api.file.FileTreeElement import org.gradle.api.file.RelativePath import org.gradle.api.internal.file.DefaultFileTreeElement @@ -34,6 +37,17 @@ abstract class TransformerTestSupport { } } + fun doTransformAndGetTransformedPath( + transformer: Transformer, + preserveFileTimestamps: Boolean, + ): Path { + val testableZipPath = createTempFile("testable-zip-file-", ".jar") + ZipOutputStream(testableZipPath.outputStream().buffered()).use { zipOutputStream -> + transformer.modifyOutputStream(zipOutputStream, preserveFileTimestamps) + } + return testableZipPath + } + /** * NOTE: The Turkish locale has an usual case transformation for the letters "I" and "i", making it a prime * choice to test for improper case-less string comparisons. From 7ce919b879fe908050deab6c33fa76859d12ad5d Mon Sep 17 00:00:00 2001 From: Goooler Date: Sat, 30 Nov 2024 22:42:38 +0800 Subject: [PATCH 28/29] Cleanups --- .../shadow/transformers/PropertiesFileTransformerTest.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt index 527706a1c..0b8af0815 100644 --- a/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt +++ b/src/test/kotlin/com/github/jengelman/gradle/plugins/shadow/transformers/PropertiesFileTransformerTest.kt @@ -33,7 +33,7 @@ class PropertiesFileTransformerTest : TransformerTestSupport Date: Sat, 30 Nov 2024 23:12:35 +0800 Subject: [PATCH 29/29] Disable lintAnalyzeJvmTest for some devices --- build.gradle.kts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index c6cc4cd93..58b4ff7d4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -132,6 +132,14 @@ tasks.withType().configureEach { ) } +tasks.whenTaskAdded { + if (name == "lintAnalyzeJvmTest") { + // This task often fails on Windows CI devices. + enabled = !providers.systemProperty("os.name").get().startsWith("Windows") && + !providers.environmentVariable("CI").isPresent + } +} + tasks.register("release") { dependsOn( tasks.publish,