Try and fix fernflower forking for the final time. Hopefully helps with #355
parent
92efb9aa73
commit
5171c9bbde
|
@ -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");
|
||||||
|
|
|
@ -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);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
Loading…
Reference in New Issue