From 43a6b0f65fa468b57a63795c62ce4f48e05b7eb2 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Tue, 23 Mar 2021 19:08:15 +0000 Subject: [PATCH] Revert some of the changes to genSource's. More work is needed to fix all the issues with it but its not really something I want to get into right now. --- .../fernflower/ForkingJavaExec.java | 25 ++++++++++++++++++- .../loom/util/ProjectTestTrait.groovy | 2 ++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/fabricmc/loom/decompilers/fernflower/ForkingJavaExec.java b/src/main/java/net/fabricmc/loom/decompilers/fernflower/ForkingJavaExec.java index b62784f..f33e491 100644 --- a/src/main/java/net/fabricmc/loom/decompilers/fernflower/ForkingJavaExec.java +++ b/src/main/java/net/fabricmc/loom/decompilers/fernflower/ForkingJavaExec.java @@ -24,10 +24,14 @@ package net.fabricmc.loom.decompilers.fernflower; +import java.net.URL; import java.net.URLClassLoader; import org.gradle.api.Action; 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.JavaExecSpec; @@ -40,8 +44,27 @@ import org.gradle.process.JavaExecSpec; public class ForkingJavaExec { public static ExecResult javaexec(Project project, Action action) { return project.javaexec(spec -> { - spec.classpath((Object[]) ((URLClassLoader) ForkingJavaExec.class.getClassLoader()).getURLs()); + spec.classpath(getClasspath(project)); action.execute(spec); }); } + + private static Object getClasspath(Project project) { + if (System.getProperty("fabric.loom.test") != null) { + return getTestClasspath(); + } + + return getRuntimeClasspath(project.getRootProject().getPlugins().hasPlugin("fabric-loom") ? project.getRootProject() : project); + } + + private static FileCollection getRuntimeClasspath(Project project) { + ConfigurationContainer configurations = project.getBuildscript().getConfigurations(); + DependencyHandler handler = project.getDependencies(); + return configurations.getByName("classpath") + .plus(configurations.detachedConfiguration(handler.localGroovy())); + } + + private static URL[] getTestClasspath() { + return ((URLClassLoader) ForkingJavaExec.class.getClassLoader()).getURLs(); + } } diff --git a/src/test/groovy/net/fabricmc/loom/util/ProjectTestTrait.groovy b/src/test/groovy/net/fabricmc/loom/util/ProjectTestTrait.groovy index b81b26f..e66879f 100644 --- a/src/test/groovy/net/fabricmc/loom/util/ProjectTestTrait.groovy +++ b/src/test/groovy/net/fabricmc/loom/util/ProjectTestTrait.groovy @@ -72,6 +72,8 @@ trait ProjectTestTrait { } BuildResult create(String task, String gradleVersion = "6.8.3") { + System.setProperty("fabric.loom.test", "true") + GradleRunner.create() .withProjectDir(testProjectDir) .withArguments(task, "--stacktrace", "--warning-mode", warningMode(gradleVersion), "--gradle-user-home", gradleHomeDirectory(gradleVersion))