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

io.codearte.accurest.plugin.AccurestGradlePlugin.groovy Maven / Gradle / Ivy

The newest version!
package io.codearte.accurest.plugin

import io.coderate.accurest.TestGenerator
import org.gradle.api.Plugin
import org.gradle.api.Project

/**
 * @author Jakub Kubrynski
 */
class AccurestGradlePlugin implements Plugin {

	private static final String TASK_NAME = 'generateAccurest'

	private static final Class IDEA_PLUGIN_CLASS = org.gradle.plugins.ide.idea.IdeaPlugin

	@Override
	void apply(Project project) {
		AccurestPluginExtension extension = project.extensions.create('accurest', AccurestPluginExtension)

		project.compileTestGroovy.dependsOn(TASK_NAME)

		project.task(TASK_NAME) << {
			project.logger.info("Accurest Plugin: Invoking test sources generation")

			project.sourceSets.test.groovy {
				srcDir extension.generatedTestSourcesDir
			}

			try {
				String resourceDirectory = project.projectDir.path + '/src/test/resources/' + extension.stubsBaseDirectory
				TestGenerator generator = new TestGenerator(resourceDirectory,
						extension.basePackageForTests, extension.baseClassForTests, extension.ruleClassForTests,
						extension.targetFramework, extension.testMode,
						extension.generatedTestSourcesDir)
				generator.generate()
			} catch (IllegalStateException e) {
				project.logger.error("Accurest Plugin: {}", e.getMessage())
			}
		}

		project.afterEvaluate {
			def hasIdea = project.plugins.findPlugin(IDEA_PLUGIN_CLASS)
			if (hasIdea) {
				project.idea {
					module {
						testSourceDirs += new File(extension.generatedTestSourcesDir)
					}
				}
			}
		}

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy