Skip to content

Commit

Permalink
Merge pull request #13 from freefair/feature/conventionMapping
Browse files Browse the repository at this point in the history
convention mapping and more tests
  • Loading branch information
larsgrefer authored Jun 18, 2017
2 parents 04e36f8 + 4252469 commit 487ac25
Show file tree
Hide file tree
Showing 19 changed files with 163 additions and 98 deletions.
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -133,4 +133,5 @@ pluginBundle {
dependencies {
compileOnly "org.projectlombok:lombok:1.16.12"
testCompile 'junit:junit:4.12'
testCompile 'org.assertj:assertj-core:2.6.0'
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,11 @@ public class ExplodedArchivesPlugin extends AbstractExtensionPlugin<ExplodedArch
private Task explodeAll;

@Override
public void apply(Project project) {
public void apply(final Project project) {
super.apply(project);

explodeAll = project.getTasks().create("explode");
explodeAll.setGroup(BasePlugin.BUILD_GROUP);
}

@Override
protected Class<ExplodedArchivesExtension> getExtensionClass() {
return ExplodedArchivesExtension.class;
}

@Override
protected void afterEvaluate(final Project project) {
super.afterEvaluate(project);

project.getTasks().withType(AbstractArchiveTask.class, new Action<AbstractArchiveTask>() {
@Override
Expand All @@ -47,35 +37,39 @@ public void execute(final AbstractArchiveTask archiveTask) {
explodeAll.dependsOn(explodeArchive);
explodeArchive.dependsOn(archiveTask);

explodeArchive.setGroup(archiveTask.getGroup());

explodeArchive.setDestinationDir(project.file(new Callable<File>() {
@Override
public File call() throws Exception {
return new File(archiveTask.getDestinationDir(), "exploded");
}
}));
explodeArchive.getConventionMapping()
.map("group", new Callable<String>() {
@Override
public String call() throws Exception {
return archiveTask.getGroup();
}
});

explodeArchive.getConventionMapping()
.map("destinationDir", new Callable<File>() {
@Override
public File call() throws Exception {
File explodedDir = new File(archiveTask.getDestinationDir(), "exploded");
if (extension.includeExtension) {
return new File(explodedDir, archiveTask.getArchiveName());
} else {
return new File(explodedDir, minus((CharSequence) archiveTask.getArchiveName(), "." + archiveTask.getExtension()));
}
}
});

explodeArchive.from(new Callable<FileTree>() {
@Override
public FileTree call() throws Exception {
return project.zipTree(archiveTask.getArchivePath());
}
});

explodeArchive.into(new Callable<File>() {
@Override
public File call() throws Exception {

File explodedDir = new File(archiveTask.getDestinationDir(), "exploded");
if (extension.includeExtension) {
return new File(explodedDir, archiveTask.getArchiveName());
} else {
return new File(explodedDir, minus((CharSequence) archiveTask.getArchiveName(), "." + archiveTask.getExtension()));
}
}
});
}
});
}

@Override
protected Class<ExplodedArchivesExtension> getExtensionClass() {
return ExplodedArchivesExtension.class;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public void execute(CopySpec overlayCopySpec) {
}
});

warTask.getRootSpec().exclude("**/"+file.getName());
warTask.getRootSpec().exclude("**/" + file.getName());
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,19 @@ public abstract class AbstractExtensionPlugin<E> extends AbstractPlugin {
public void apply(Project project) {
super.apply(project);

createExtension();
extension = createExtension();
}

@SuppressWarnings("WeakerAccess")
protected void createExtension() {
extension = project.getExtensions().create(getExtensionName(), getExtensionClass());
protected E createExtension() {
return project.getExtensions().create(getExtensionName(), getExtensionClass());
}

@SuppressWarnings("WeakerAccess")
protected String getExtensionName() {
String extensionName = Introspector.decapitalize(getExtensionClass().getSimpleName());

if(extensionName.endsWith("Extension")) {
if (extensionName.endsWith("Extension")) {
extensionName = extensionName.replace("Extension", "");
}

Expand Down
12 changes: 0 additions & 12 deletions src/main/java/io/freefair/gradle/plugins/base/AbstractPlugin.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.freefair.gradle.plugins.base;

import lombok.Getter;
import org.gradle.api.Action;
import org.gradle.api.Plugin;
import org.gradle.api.Project;

Expand All @@ -16,16 +15,5 @@ public abstract class AbstractPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
this.project = project;

project.afterEvaluate(new Action<Project>() {
@Override
public void execute(Project project) {
afterEvaluate(project);
}
});
}

protected void afterEvaluate(Project project) {

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ public void apply(final Project project) {
setupBase();

setupDependencyGuesses();
}

@Override
protected void afterEvaluate(Project project) {
super.afterEvaluate(project);

setupDocsOracleLink();
project.afterEvaluate(new Action<Project>() {
@Override
public void execute(Project project) {
setupDocsOracleLink();
}
});
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,23 @@

import org.gradle.testkit.runner.BuildResult;
import org.gradle.testkit.runner.GradleRunner;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;

import static org.assertj.core.api.Assertions.assertThat;
import static org.gradle.testkit.runner.TaskOutcome.SUCCESS;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;

/**
* @author Lars Grefer
*/
public class ExplodedArchivesPluginTest extends AbstractPluginTest {

@Test
public void testHelloWorldTask() throws IOException {
loadBuildFileFromClasspath("/exploded-archives.gradle");
public void testExplodeWar() throws IOException {
loadBuildFileFromClasspath("exploded-archives.gradle");

BuildResult result = GradleRunner.create()
.withProjectDir(testProjectDir.getRoot())
Expand All @@ -33,7 +28,67 @@ public void testHelloWorldTask() throws IOException {
.build();

assertEquals(result.task(":explodeWar").getOutcome(), SUCCESS);
}

@Test
public void testExplodeWar_withoutExtension() throws IOException {
loadBuildFileFromClasspath("exploded-archives_withoutExt.gradle");

BuildResult result = GradleRunner.create()
.withProjectDir(testProjectDir.getRoot())
.withArguments("eW", "--stacktrace")
.withPluginClasspath()
.withDebug(true)
.build();

assertEquals(result.task(":explodeWar").getOutcome(), SUCCESS);

String name = testProjectDir.getRoot().getName();

File targetDir = new File(testProjectDir.getRoot(), "build/libs/exploded/" + name);

assertThat(targetDir).exists();
assertThat(targetDir).isDirectory();
}

@Test
public void testExplodeWar_withExtension() throws IOException {
loadBuildFileFromClasspath("exploded-archives_withExt.gradle");

BuildResult result = GradleRunner.create()
.withProjectDir(testProjectDir.getRoot())
.withArguments("eW", "--stacktrace")
.withPluginClasspath()
.withDebug(true)
.build();

assertEquals(result.task(":explodeWar").getOutcome(), SUCCESS);

String name = testProjectDir.getRoot().getName() + ".war";

File targetDir = new File(testProjectDir.getRoot(), "build/libs/exploded/" + name);

assertThat(targetDir).exists();
assertThat(targetDir).isDirectory();
}

@Test
public void testExplodeWar_customDir() throws IOException {
loadBuildFileFromClasspath("exploded-archives_customDir.gradle");

BuildResult result = GradleRunner.create()
.withProjectDir(testProjectDir.getRoot())
.withArguments("eW", "--stacktrace")
.withPluginClasspath()
.withDebug(true)
.build();

assertEquals(result.task(":explodeWar").getOutcome(), SUCCESS);

File targetDir = new File(testProjectDir.getRoot(), "build/foo");

assertThat(targetDir).exists();
assertThat(targetDir).isDirectory();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@
import org.gradle.testkit.runner.GradleRunner;
import org.junit.Test;

import java.io.*;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.io.IOException;

import static org.gradle.testkit.runner.TaskOutcome.SUCCESS;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;

/**
* @author Lars Grefer
Expand All @@ -18,7 +16,7 @@ public class WarOverlayPluginTest extends AbstractPluginTest {

@Test
public void testHelloWorldTask() throws IOException {
loadBuildFileFromClasspath("/test1.gradle");
loadBuildFileFromClasspath("war-overlay.gradle");

BuildResult result = GradleRunner.create()
.withProjectDir(testProjectDir.getRoot())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,17 @@
import io.freefair.gradle.plugins.AbstractPluginTest;
import org.gradle.testkit.runner.BuildResult;
import org.gradle.testkit.runner.GradleRunner;
import org.gradle.testkit.runner.TaskOutcome;
import org.hamcrest.CoreMatchers;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;

import static org.junit.Assert.*;
import static org.junit.Assert.assertThat;


public class JavadocLinksPluginTest extends AbstractPluginTest {

@Test
public void apply() throws Exception {
loadBuildFileFromClasspath("/javadoc-links.gradle");
loadBuildFileFromClasspath("javadoc-links.gradle");

BuildResult result = GradleRunner.create()
.withProjectDir(testProjectDir.getRoot())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,16 @@
import org.gradle.testkit.runner.BuildResult;
import org.gradle.testkit.runner.GradleRunner;
import org.gradle.testkit.runner.TaskOutcome;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;


public class MavenJarsPluginTest extends AbstractPluginTest {

@Test
public void apply() throws Exception {
loadBuildFileFromClasspath("/maven-jars.gradle");
loadBuildFileFromClasspath("maven-jars.gradle");

BuildResult buildResult = GradleRunner.create()
.withProjectDir(testProjectDir.getRoot())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,12 @@
package io.freefair.gradle.plugins;
package io.freefair.gradle.plugins.maven;

import io.freefair.gradle.plugins.AbstractPluginTest;
import org.gradle.testkit.runner.BuildResult;
import org.gradle.testkit.runner.GradleRunner;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;

import static org.gradle.testkit.runner.TaskOutcome.SUCCESS;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;

/**
* @author Lars Grefer
Expand All @@ -23,7 +15,7 @@ public class SourcesJarPluginTest extends AbstractPluginTest {

@Test
public void apply() throws Exception {
loadBuildFileFromClasspath("/sources-jar.gradle");
loadBuildFileFromClasspath("sources-jar.gradle");

BuildResult result = GradleRunner.create()
.withProjectDir(testProjectDir.getRoot())
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
plugins {
id "war"
id "io.freefair.exploded-archives"
}

repositories {
jcenter()
}

explodeWar {
destinationDir = file("build/foo")
}

dependencies {
compile "org.jasig.cas:cas-server-webapp:4.2.7"
}
Loading

0 comments on commit 487ac25

Please sign in to comment.