All Downloads are FREE. Search and download functionalities are using the official Maven repository.

dev.lajoscseppento.ruthless.plugin.RuthlessJavaGradlePluginPlugin Maven / Gradle / Ivy

There is a newer version: 0.8.0
Show newest version
package dev.lajoscseppento.ruthless.plugin;

import dev.lajoscseppento.ruthless.plugin.impl.AbstractProjectPlugin;
import dev.lajoscseppento.ruthless.plugin.impl.RuthlessJavaBasePlugin;
import java.util.Arrays;
import java.util.List;
import lombok.NonNull;
import org.gradle.api.NamedDomainObjectProvider;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.jvm.JvmTestSuite;
import org.gradle.api.plugins.jvm.JvmTestSuiteTarget;
import org.gradle.language.base.plugins.LifecycleBasePlugin;
import org.gradle.plugin.devel.GradlePluginDevelopmentExtension;
import org.gradle.plugin.devel.plugins.JavaGradlePluginPlugin;
import org.gradle.testing.base.TestingExtension;

public class RuthlessJavaGradlePluginPlugin extends AbstractProjectPlugin {
  private GradlePluginDevelopmentExtension gradlePlugin;

  @Override
  protected List>> requiredPlugins() {
    return Arrays.asList(RuthlessJavaBasePlugin.class, JavaGradlePluginPlugin.class);
  }

  @Override
  protected void apply() {
    gradlePlugin = (GradlePluginDevelopmentExtension) extensions.getByName("gradlePlugin");
    TestingExtension testing = (TestingExtension) extensions.getByName("testing");

    NamedDomainObjectProvider functionalTestSuite =
        testing
            .getSuites()
            .register("functionalTest", JvmTestSuite.class, this::configureFunctionalTestSuite);

    tasks
        .named(LifecycleBasePlugin.CHECK_TASK_NAME)
        .configure(checkTask -> checkTask.dependsOn(functionalTestSuite));
  }

  private void configureFunctionalTestSuite(@NonNull JvmTestSuite functionalTest) {
    gradlePlugin.testSourceSets(functionalTest.getSources());

    functionalTest.getTargets().all(this::configureFunctionalTestSuiteTarget);
  }

  private void configureFunctionalTestSuiteTarget(@NonNull JvmTestSuiteTarget target) {
    target
        .getTestTask()
        .configure(testTask -> testTask.shouldRunAfter(tasks.named(JavaPlugin.TEST_TASK_NAME)));
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy