aboutsummaryrefslogtreecommitdiffstats
path: root/buildSrc/src/main/kotlin/refinery-java-test-fixtures.gradle.kts
blob: 86b0a04b72e757d18e5048756e3856e654b2e5d5 (plain) (blame)
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
import org.gradle.plugins.ide.eclipse.model.AbstractClasspathEntry
import org.gradle.plugins.ide.eclipse.model.EclipseModel
import tools.refinery.buildsrc.EclipseUtils

plugins {
	`java-test-fixtures`
}

apply(plugin = "refinery-java-conventions")

the<EclipseModel>().classpath {
	containsTestFixtures.set(true)

	EclipseUtils.whenClasspathFileMerged(file) { eclipseClasspath ->
		val hasTest = eclipseClasspath.entries.any { entry ->
			entry is AbstractClasspathEntry && entry.entryAttributes["gradle_scope"] == "test"
		}
		EclipseUtils.patchClasspathEntries(eclipseClasspath) { entry ->
			// Workaround https://github.com/gradle/gradle/issues/11845 based on
			// https://discuss.gradle.org/t/gradle-used-by-scope-not-correctly-generated-when-the-java-test-fixtures-plugin-is-used/39935/2
			EclipseUtils.patchGradleUsedByScope(entry) { usedBy ->
				if (usedBy.contains("main")) {
					usedBy += "testFixtures"
				}
				if (hasTest && usedBy.contains("testFixtures")) {
					usedBy += "test"
				}
			}
		}
	}
}