aboutsummaryrefslogtreecommitdiffstats
path: root/buildSrc/src/main/groovy/refinery-java-test-fixtures.gradle
blob: 693cba98e7e4fe4873a796bfeac3dce800f19dd9 (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
32
33
plugins {
	id 'java-test-fixtures'
	id 'refinery-java-conventions'
}

eclipse.classpath {
	containsTestFixtures = true

	file.whenMerged { classpath ->
		def hasTest = classpath.entries.any { entry ->
			entry in org.gradle.plugins.ide.eclipse.model.AbstractClasspathEntry &&
			entry.entryAttributes['gradle_scope'] == 'test'
		}
		for (entry in classpath.entries) {
			// 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
			if (entry in org.gradle.plugins.ide.eclipse.model.AbstractClasspathEntry) {
				def usedBy = new LinkedHashSet(
					Arrays.asList((entry.entryAttributes['gradle_used_by_scope'] ?: '').split(','))
				)
				if (usedBy.contains('main')) {
					usedBy += 'testFixtures'
				}
				if (hasTest && usedBy.contains('testFixtures')) {
					usedBy += 'test'
				}
				if (!usedBy.empty) {
					entry.entryAttributes['gradle_used_by_scope'] = usedBy.join(',')
				}
			}
		}
	}
}