diff options
author | LogicFan <38597904+LogicFan@users.noreply.github.com> | 2021-07-18 09:13:47 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-18 14:13:47 +0100 |
commit | 81fa551382d9c7016f769014ed56d119a3d676ed (patch) | |
tree | bd87e8c82a2d7779f6cae7ed093860255af1836f /src/test/groovy/net | |
parent | b4ac68825f4120dd689d6032c6381780cf8181b0 (diff) | |
download | architectury-loom-81fa551382d9c7016f769014ed56d119a3d676ed.tar.gz architectury-loom-81fa551382d9c7016f769014ed56d119a3d676ed.tar.bz2 architectury-loom-81fa551382d9c7016f769014ed56d119a3d676ed.zip |
Better Mixin AP configuration (#423)
* [SPON-15] Apply Mixin AP config for all projects.
* Revert "[SPON-15] Apply Mixin AP config for all projects."
This reverts commit 93576e83b1221949d551b6307938f7dd6dc8fbbe.
* use setter & getter
* fix broken test introduced in 54d6ef7896f22f89d6594703d09e3195c814cf10
* initial commit for mixin extension
* refactor getConfiguration
* apply mixin extension
* [SPON-15] allow across project AP config
* [SPON-15] revert some changes
* [SPON-15] refactor codes
* [SPON-15] fix bugs
* [SPON-15] bring back cross-project apconfig
* [SPON-15] bug fix: move add default sourceSet earlier
* [SPON-15] fix style
* [SPON-15] refactor MixinAPExtension
* add test
* update test
* [SPON-15] fix test
* Update MixinAnnotationProcessorExtension.java
* [SPON-15] fix test
* fix deprecated gradle API
* [SPON-15] refactor ApInvoker
* [SPON-15] refactor ApInvoker
* allow change refmap name in sourceSet bases
* add new condition on test
* [SPON-15] fix wrong suffix
* Revert "[SPON-15] fix wrong suffix"
This reverts commit 98910392d91c26cd0454cca8cfc03c4e3d417fd6.
* fix mixinjson suffix
* use stream instead of collection for mixin json name
* change name for function
* use correct auto-refmap
* fix file name
* add with action
* add test
* refactor some codes
* refactor code
* update test
* fix checkstyle
* better error message
* fix checkstyle
* remove corss project option
* allow mixin inside loom
* remove project0
I should remove all project0. If I forget one please tell me.
* move `mixin` inside `loom`
* fix spotless
* merge attempt
* fix checkstyle
* seperate api & impl
* add experimental annotation for API
* use API
* Fix indentation
Co-authored-by: Juuxel <6596629+Juuxel@users.noreply.github.com>
* fix typo
Co-authored-by: Juuxel <6596629+Juuxel@users.noreply.github.com>
* fix typo
Co-authored-by: Juuxel <6596629+Juuxel@users.noreply.github.com>
* better javadoc
Co-authored-by: Juuxel <6596629+Juuxel@users.noreply.github.com>
Diffstat (limited to 'src/test/groovy/net')
-rw-r--r-- | src/test/groovy/net/fabricmc/loom/test/integration/MixinApAutoRefmapTest.groovy | 73 | ||||
-rw-r--r-- | src/test/groovy/net/fabricmc/loom/test/integration/MixinApSimpleTest.groovy | 63 |
2 files changed, 136 insertions, 0 deletions
diff --git a/src/test/groovy/net/fabricmc/loom/test/integration/MixinApAutoRefmapTest.groovy b/src/test/groovy/net/fabricmc/loom/test/integration/MixinApAutoRefmapTest.groovy new file mode 100644 index 00000000..80ed7c86 --- /dev/null +++ b/src/test/groovy/net/fabricmc/loom/test/integration/MixinApAutoRefmapTest.groovy @@ -0,0 +1,73 @@ +/* + * This file is part of fabric-loom, licensed under the MIT License (MIT). + * + * Copyright (c) 2016-2017 FabricMC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package net.fabricmc.loom.test.integration + +import net.fabricmc.loom.test.util.ProjectTestTrait +import spock.lang.Specification +import spock.lang.Unroll +import com.google.gson.JsonParser; +import java.util.jar.JarFile + +import static org.gradle.testkit.runner.TaskOutcome.SUCCESS + +class MixinApAutoRefmapTest extends Specification implements ProjectTestTrait { + @Override + String name() { + "mixinApAutoRefmap" + } + + @Unroll + def "build (gradle #gradle)"() { + when: + def result = create("build", gradle) + + then: + result.task(":build").outcome == SUCCESS + + // verify the ref-map name is correctly generated + def jar = new JarFile(getOutputFile("fabric-example-mod-1.0.0-universal.jar").absoluteFile) + jar.getEntry("refmap0000.json") == null + jar.getEntry("refmap0001.json") != null + jar.getEntry("refmap0002.json") != null + jar.getEntry("refmap0003.json") != null + + def j1 = JsonParser.parseReader(new InputStreamReader(jar.getInputStream(jar.getEntry("main.mixins.json")))) + j1.asJsonObject.getAsJsonPrimitive("refmap").getAsString() == "refmap0001.json" + + def j2 = JsonParser.parseReader(new InputStreamReader(jar.getInputStream(jar.getEntry("m0.mixins.json")))) + j2.asJsonObject.getAsJsonPrimitive("refmap").getAsString() == "refmap0002.json" + + def j3 = JsonParser.parseReader(new InputStreamReader(jar.getInputStream(jar.getEntry("m1_1.mixins.json")))) + j3.asJsonObject.getAsJsonPrimitive("refmap").getAsString() == "refmap0003.json" + + def j4 = JsonParser.parseReader(new InputStreamReader(jar.getInputStream(jar.getEntry("m1_2.mixins.json")))) + !j4.asJsonObject.has("refmap") + + where: + gradle | _ + DEFAULT_GRADLE | _ + PRE_RELEASE_GRADLE | _ + } +} diff --git a/src/test/groovy/net/fabricmc/loom/test/integration/MixinApSimpleTest.groovy b/src/test/groovy/net/fabricmc/loom/test/integration/MixinApSimpleTest.groovy new file mode 100644 index 00000000..793915e3 --- /dev/null +++ b/src/test/groovy/net/fabricmc/loom/test/integration/MixinApSimpleTest.groovy @@ -0,0 +1,63 @@ +/* + * This file is part of fabric-loom, licensed under the MIT License (MIT). + * + * Copyright (c) 2016-2017 FabricMC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package net.fabricmc.loom.test.integration + +import net.fabricmc.loom.test.util.ProjectTestTrait +import spock.lang.Specification +import spock.lang.Unroll + +import java.util.jar.JarFile + +import static org.gradle.testkit.runner.TaskOutcome.SUCCESS + +class MixinApSimpleTest extends Specification implements ProjectTestTrait { + @Override + String name() { + "mixinApSimple" + } + + @Unroll + def "build (gradle #gradle)"() { + when: + def result = create("build", gradle) + + then: + result.task(":build").outcome == SUCCESS + + // verify the ref-map name is correctly generated + def main = new JarFile(getOutputFile("fabric-example-mod-1.0.0-dev.jar").absoluteFile) + main.getEntry("main-refmap0000.json") != null + def mixin = new JarFile(getOutputFile("fabric-example-mod-1.0.0-mixin.jar").absoluteFile) + mixin.getEntry("default-refmap0000.json") != null + def mixin1 = new JarFile(getOutputFile("fabric-example-mod-1.0.0-mixin1.jar").absoluteFile) + mixin1.getEntry("main-refmap0000.json") == null + mixin1.getEntry("default-refmap0000.json") == null + + where: + gradle | _ + DEFAULT_GRADLE | _ + PRE_RELEASE_GRADLE | _ + } +} |