Try and fix fernflower forking for the final time. Hopefully helps with #355
This commit is contained in:
		
							parent
							
								
									92efb9aa73
								
							
						
					
					
						commit
						5171c9bbde
					
				
					 6 changed files with 27 additions and 26 deletions
				
			
		|  | @ -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' | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										9
									
								
								src/test/resources/projects/decompile/build.gradle
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/test/resources/projects/decompile/build.gradle
									
									
									
									
									
										Normal 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" | ||||||
|  | } | ||||||
		Loading…
	
		Reference in a new issue