Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions plugin-gradle/demo/allowed.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/cycle.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/default.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}
// should detect the cycle between demo.cycle.a and demo.cycle.b without any custom configuration
1 change: 1 addition & 0 deletions plugin-gradle/demo/disallowed.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/error-ignoring-list.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/error-ignoring-map.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/error-illegal-pattern.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/error-missing-pattern.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
8 changes: 8 additions & 0 deletions plugin-gradle/demo/error-no-java-plugin.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
plugins {
id 'de.obqo.decycle'
}

// This simulates a project without the java plugin - it should fail with a meaningful error
decycle {
excluding 'demo.cycle.**'
}
1 change: 1 addition & 0 deletions plugin-gradle/demo/ignoreFailures.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/ignoring-from.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/ignoring-kt.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id("java")
id("de.obqo.decycle")
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/ignoring-to.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/ignoring.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/multiple.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/reportsDisabled.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/slices-cycle.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/source-sets.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/success.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/test-sources-kt.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id("java")
id("de.obqo.decycle")
}

Expand Down
1 change: 1 addition & 0 deletions plugin-gradle/demo/test-sources.gradle
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
plugins {
id 'java'
id 'de.obqo.decycle'
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ class DecyclePlugin implements Plugin<Project> {

@Override
void apply(final Project project) {
project.apply plugin: 'java'

Properties props = new Properties()
getClass().classLoader.getResource("META-INF/gradle-plugins/de.obqo.decycle.properties").withInputStream { stream ->
Expand All @@ -35,6 +34,13 @@ class DecyclePlugin implements Plugin<Project> {
workerClasspath.setDescription("The Decycle libraries to be used for this project")

project.afterEvaluate {
// Ensure that a compatible plugin (java, java-library, android, etc.) is applied
if (!project.hasProperty('sourceSets')) {
throw new org.gradle.api.GradleException(
"Decycle plugin requires a plugin that provides source sets (e.g., 'java', 'java-library', or Android plugins). " +
"Please apply one of these plugins before applying the decycle plugin."
)
}

project.dependencies {
decycle "de.obqo.decycle:decycle-lib:${toolVersion}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -239,4 +239,11 @@ void shouldCachePreviousRun() {
// then
assertBuildResult(upToDateResult, TaskOutcome.UP_TO_DATE, "decycleMain");
}

@Test
void shouldFailWhenNoCompatiblePluginApplied() {
final BuildResult result = buildAndFail("error-no-java-plugin.gradle");
assertBuildResult(result, TaskOutcome.FAILED, null)
.contains("Decycle plugin requires a plugin that provides source sets");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class DecyclePluginUnitTest {
@Test
void pluginShouldAddTaskAndExtension() {
Project project = ProjectBuilder.builder().build();
project.getPluginManager().apply("java");
project.getPluginManager().apply("de.obqo.decycle");

assertThat(project.getTasks().getByName("decycle")).isInstanceOf(Task.class);
Expand Down