aboutsummaryrefslogtreecommitdiff
path: root/src/test/groovy/net/fabricmc/loom/MixinBuildFunctionalTest.groovy
blob: 6b0ae6d89456a5e94adba6afd0f725a5659f5581 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package net.fabricmc.loom

import org.gradle.testkit.runner.GradleRunner
import org.junit.Rule
import org.junit.rules.TemporaryFolder
import spock.lang.Ignore
import spock.lang.Specification
import spock.lang.Unroll

import static net.fabricmc.loom.BuildUtils.*
import static org.gradle.testkit.runner.TaskOutcome.SUCCESS

/**
 * Created by Mitchell Skaggs on 6/10/2019.
 */
class MixinBuildFunctionalTest extends Specification {
	@Rule
	TemporaryFolder testProjectDir = new TemporaryFolder()
	File settingsFile
	File buildFile
	File propsFile
	File modJsonFile
	File modJavaFile
	File modMixinsJsonFile
	File modMixinsJavaFile

	def setup() {
		settingsFile = testProjectDir.newFile('settings.gradle')
		buildFile = testProjectDir.newFile('build.gradle')
		propsFile = testProjectDir.newFile('gradle.properties')

		testProjectDir.newFolder("src", "main", "resources")
		modJsonFile = testProjectDir.newFile('src/main/resources/fabric.mod.json')
		modMixinsJsonFile = testProjectDir.newFile('src/main/resources/modid.mixins.json')

		testProjectDir.newFolder("src", "main", "java", "net", "fabricmc", "example")
		modJavaFile = testProjectDir.newFile("src/main/java/net/fabricmc/example/ExampleMod.java")

		testProjectDir.newFolder("src", "main", "java", "net", "fabricmc", "example", "mixin")
		modMixinsJavaFile = testProjectDir.newFile("src/main/java/net/fabricmc/example/mixin/ExampleMixin.java")
	}

	@Unroll
	def "mixin build succeeds using Minecraft #mcVersion"() {
		given:
		settingsFile << genSettingsFile("mixin-build-functional-test")
		propsFile << genPropsFile(mcVersion, yarnVersion, loaderVersion, fabricVersion)
		buildFile << genBuildFile()
		modJsonFile << genModJsonFile()
		modJavaFile << genModJavaFile()
		modMixinsJsonFile << genModMixinsJsonFile()
		modMixinsJavaFile << genModMixinsJavaFile()

		when:
		def result = GradleRunner.create()
				.withProjectDir(testProjectDir.root)
				.withArguments('build','--stacktrace')
				.withPluginClasspath()
				.forwardOutput()
				.build()

		then:
		result.task(":build").outcome == SUCCESS

		where:
		mcVersion | yarnVersion       	| loaderVersion     | fabricVersion
		'1.14'    | '1.14+build.21'   	| '0.4.8+build.155' | '0.3.0+build.184'
	}
}