diff options
author | Jonas Herzig <jonas@spark-squared.com> | 2021-11-11 20:59:47 +0100 |
---|---|---|
committer | Jonas Herzig <jonas@spark-squared.com> | 2021-11-12 15:23:25 +0100 |
commit | f1224518f86b0160149544dc8d56505a37a186e2 (patch) | |
tree | 23d3a40362df3dde498e69ad9ac8ee7727cbd8fd /src/test/kotlin/com/replaymod | |
parent | 1aa8b425982a6d30a177bc25a70a325652209ee0 (diff) | |
download | Remap-f1224518f86b0160149544dc8d56505a37a186e2.tar.gz Remap-f1224518f86b0160149544dc8d56505a37a186e2.tar.bz2 Remap-f1224518f86b0160149544dc8d56505a37a186e2.zip |
Fix loss of changes when multiple target the same start point
While one might at first think that multiple changes should conflict if they
target that same start point, that is not necessarily true as long as no more
than one of them includes deletions: There may be an arbitrary number of
insertions at the same position (regular remapping never just inserts but
patterns can).
Diffstat (limited to 'src/test/kotlin/com/replaymod')
-rw-r--r-- | src/test/kotlin/com/replaymod/gradle/remap/pattern/TestChangeMerging.kt | 36 | ||||
-rw-r--r-- | src/test/kotlin/com/replaymod/gradle/remap/util/TestData.kt | 8 |
2 files changed, 43 insertions, 1 deletions
diff --git a/src/test/kotlin/com/replaymod/gradle/remap/pattern/TestChangeMerging.kt b/src/test/kotlin/com/replaymod/gradle/remap/pattern/TestChangeMerging.kt new file mode 100644 index 0000000..e8b86d2 --- /dev/null +++ b/src/test/kotlin/com/replaymod/gradle/remap/pattern/TestChangeMerging.kt @@ -0,0 +1,36 @@ +package com.replaymod.gradle.remap.pattern + +import com.replaymod.gradle.remap.util.TestData +import io.kotest.matchers.collections.shouldHaveSize +import io.kotest.matchers.shouldBe +import io.kotest.matchers.string.shouldContain +import org.junit.jupiter.api.Test + +class TestChangeMerging { + @Test + fun `should work when mixed with remapping`() { + TestData.remap(""" + class Test { + private void test() { + a.pkg.A.create().aMethod(); + } + } + """.trimIndent(), """ + @remap.Pattern + private void addWrapping(a.pkg.A a) { + a.aMethod(); + } + """.trimIndent(), """ + @remap.Pattern + private void addWrapping(a.pkg.A a) { + (((a.bMethod()))); + } + """.trimIndent()) shouldBe """ + class Test { + private void test() { + (((b.pkg.B.create().bMethod()))); + } + } + """.trimIndent() + } +}
\ No newline at end of file diff --git a/src/test/kotlin/com/replaymod/gradle/remap/util/TestData.kt b/src/test/kotlin/com/replaymod/gradle/remap/util/TestData.kt index 0f83373..adb6f52 100644 --- a/src/test/kotlin/com/replaymod/gradle/remap/util/TestData.kt +++ b/src/test/kotlin/com/replaymod/gradle/remap/util/TestData.kt @@ -41,9 +41,15 @@ object TestData { findClasspathEntry("org.spongepowered.asm.mixin.Mixin"), findClasspathEntry("a.pkg.A"), ) + patternAnnotation = "remap.Pattern" } - fun remap(content: String): String = transformer.remap(mapOf("test.java" to content))["test.java"]!!.first + fun remap(content: String, patternsBefore: String = "", patternsAfter: String = ""): String = transformer.remap(mapOf( + "test.java" to content, + "pattern.java" to "class Patterns {\n$patternsBefore\n}", + ), mapOf( + "pattern.java" to "class Patterns {\n$patternsAfter\n}", + ))["test.java"]!!.first fun remapWithErrors(content: String) = transformer.remap(mapOf("test.java" to content))["test.java"]!! fun remapKt(content: String): String = transformer.remap(mapOf("test.kt" to content))["test.kt"]!!.first |