Try and fix fernflower forking for the final time. Hopefully helps with #355

dev/0.11
modmuss50 2021-03-06 14:07:37 +00:00
parent 92efb9aa73
commit 5171c9bbde
6 changed files with 27 additions and 26 deletions

View File

@ -100,7 +100,7 @@ public abstract class AbstractFernFlowerDecompiler implements LoomDecompiler {
progressGroup.started(); progressGroup.started();
ExecResult result = ForkingJavaExec.javaexec( ExecResult result = ForkingJavaExec.javaexec(
project.getRootProject().getPlugins().hasPlugin("fabric-loom") ? project.getRootProject() : project, project,
spec -> { spec -> {
spec.setMain(fernFlowerExecutor().getName()); spec.setMain(fernFlowerExecutor().getName());
spec.jvmArgs("-Xms200m", "-Xmx3G"); spec.jvmArgs("-Xms200m", "-Xmx3G");

View File

@ -24,11 +24,10 @@
package net.fabricmc.loom.decompilers.fernflower; package net.fabricmc.loom.decompilers.fernflower;
import java.net.URLClassLoader;
import org.gradle.api.Action; import org.gradle.api.Action;
import org.gradle.api.Project; import org.gradle.api.Project;
import org.gradle.api.artifacts.ConfigurationContainer;
import org.gradle.api.artifacts.dsl.DependencyHandler;
import org.gradle.api.file.FileCollection;
import org.gradle.process.ExecResult; import org.gradle.process.ExecResult;
import org.gradle.process.JavaExecSpec; import org.gradle.process.JavaExecSpec;
@ -40,13 +39,8 @@ import org.gradle.process.JavaExecSpec;
*/ */
public class ForkingJavaExec { public class ForkingJavaExec {
public static ExecResult javaexec(Project project, Action<? super JavaExecSpec> action) { public static ExecResult javaexec(Project project, Action<? super JavaExecSpec> action) {
ConfigurationContainer configurations = project.getBuildscript().getConfigurations();
DependencyHandler handler = project.getDependencies();
FileCollection classpath = configurations.getByName("classpath")//
.plus(configurations.detachedConfiguration(handler.localGroovy()));
return project.javaexec(spec -> { return project.javaexec(spec -> {
spec.classpath(classpath); spec.classpath((Object[]) ((URLClassLoader) ForkingJavaExec.class.getClassLoader()).getURLs());
action.execute(spec); action.execute(spec);
}); });
} }

View File

@ -25,30 +25,30 @@
package net.fabricmc.loom package net.fabricmc.loom
import net.fabricmc.loom.util.ProjectTestTrait import net.fabricmc.loom.util.ProjectTestTrait
import spock.lang.Ignore
import spock.lang.Specification import spock.lang.Specification
import spock.lang.Unroll import spock.lang.Unroll
import static org.gradle.testkit.runner.TaskOutcome.SUCCESS import static org.gradle.testkit.runner.TaskOutcome.SUCCESS
@Ignore // TODO this fails due to the plugin classpath being setup differently. We need to explore other ways to do this.
class DecompileTest extends Specification implements ProjectTestTrait { class DecompileTest extends Specification implements ProjectTestTrait {
@Override @Override
String name() { String name() {
"simple" "decompile"
} }
@Unroll @Unroll
def "#decompiler decompile"() { def "#decompiler gradle #gradle"() {
when: when:
def result = create(task) def result = create(task, gradle)
then: then:
result.task(":${task}").outcome == SUCCESS result.task(":${task}").outcome == SUCCESS
where: where:
decompiler | task decompiler | task | gradle
'fernflower' | "genSources" 'fernflower' | "genSources" | "6.8.3"
'cfr' | "genSourcesWithExperimentalCfr" 'fernflower' | "genSources" | "4.9"
'fernflower' | "genSources" | "7.0-milestone-2"
'cfr' | "genSourcesWithExperimentalCfr" | "6.8.3"
} }
} }

View File

@ -44,10 +44,4 @@ class LegacyProjectTest extends Specification implements ProjectTestTrait {
then: then:
result.task(":build").outcome == SUCCESS result.task(":build").outcome == SUCCESS
} }
@Override
String warningMode() {
// Gradle 4.9 doesnt support fail, and well this is a legacy test so deprecations are expected
'all'
}
} }

View File

@ -75,7 +75,7 @@ trait ProjectTestTrait {
BuildResult create(String task, String gradleVersion = "6.8.3") { BuildResult create(String task, String gradleVersion = "6.8.3") {
GradleRunner.create() GradleRunner.create()
.withProjectDir(testProjectDir) .withProjectDir(testProjectDir)
.withArguments(task, "--stacktrace", "--warning-mode", warningMode(), "--gradle-user-home", gradleHomeDirectory(gradleVersion)) .withArguments(task, "--stacktrace", "--warning-mode", warningMode(gradleVersion), "--gradle-user-home", gradleHomeDirectory(gradleVersion))
.withPluginClasspath() .withPluginClasspath()
.withGradleVersion(gradleVersion) .withGradleVersion(gradleVersion)
.forwardOutput() .forwardOutput()
@ -83,7 +83,11 @@ trait ProjectTestTrait {
.build() .build()
} }
String warningMode() { String warningMode(String gradleVersion) {
if (gradleVersion == "4.9") {
return "all"
}
System.getenv().TEST_WARNING_MODE ?: 'all' System.getenv().TEST_WARNING_MODE ?: 'all'
} }

View File

@ -0,0 +1,9 @@
plugins {
id 'fabric-loom'
}
dependencies {
minecraft "com.mojang:minecraft:1.16.5"
mappings "net.fabricmc:yarn:1.16.5+build.5:v2"
modImplementation "net.fabricmc:fabric-loader:0.11.2"
}