Skip to content

Commit

Permalink
Configure Depclean to run integration tests (#54)
Browse files Browse the repository at this point in the history
  • Loading branch information
cesarsotovalero authored Mar 22, 2021
1 parent 22141be commit ca4075d
Show file tree
Hide file tree
Showing 23 changed files with 665 additions and 158 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ _site
Gemfile.lock
*.gem
*.idea
*.iml

target/

Expand Down
1 change: 1 addition & 0 deletions depclean-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -113,4 +113,5 @@
<scope>compile</scope>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
package se.kth.depclean.core.analysis;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import static org.junit.jupiter.api.Assertions.*;

public class ClassFileVisitorUtilsTest {
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

@Before
public void setUp() throws Exception {
class ClassFileVisitorUtilsTest {

@BeforeEach
void setUp() {
}

@After
public void tearDown() throws Exception {
@AfterEach
void tearDown() {
}

@Test
public void accept() {
Assert.assertTrue(true);
void dummy() {
assertTrue(true);
}
}
184 changes: 125 additions & 59 deletions depclean-maven-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,133 @@
<description>DepClean is a plugin for automatically remove unused dependencies in Maven projects</description>

<!-- Build options -->
<dependencies>
<!-- Project module -->
<dependency>
<groupId>se.kth.castor</groupId>
<artifactId>depclean-core</artifactId>
<version>2.0.2-SNAPSHOT</version>
</dependency>
<!--Maven tools for plugin construction-->
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>3.0-alpha-2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-dependency-tree</artifactId>
<version>3.0.1</version>
</dependency>
<!-- Utils -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>org.whitesource</groupId>
<artifactId>maven-dependency-tree-parser</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-testing</groupId>
<artifactId>maven-plugin-testing-tools</artifactId>
<version>3.3.0</version>
<scope>compile</scope>
</dependency>
<!-- Integration tests -->
<!-- see https://khmarbaise.github.io/maven-it-extension/itf-documentation/usersguide/usersguide.html#_grouping_test_cases -->
<dependency>
<groupId>com.soebes.itf.jupiter.extension</groupId>
<artifactId>itf-extension-maven</artifactId>
<version>0.9.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.soebes.itf.jupiter.extension</groupId>
<artifactId>itf-assertj</artifactId>
<version>0.9.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.soebes.itf.jupiter.extension</groupId>
<artifactId>itf-jupiter-extension</artifactId>
<version>0.9.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.19.0</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<!-- Maven plugin to create Maven plugins-->
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>false</filtering>
</testResource>
<testResource>
<directory>src/test/resources-its</directory>
<filtering>true</filtering>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>com.soebes.itf.jupiter.extension</groupId>
<artifactId>itf-maven-plugin</artifactId>
<version>0.9.0</version>
<executions>
<execution>
<id>installing</id>
<phase>pre-integration-test</phase>
<goals>
<goal>install</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<includes>
<include>**/*IT.java</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Maven plugin to create Maven plugins-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
Expand Down Expand Up @@ -93,62 +217,4 @@
</plugins>
</build>

<dependencies>
<!-- Project module -->
<dependency>
<groupId>se.kth.castor</groupId>
<artifactId>depclean-core</artifactId>
<version>2.0.2-SNAPSHOT</version>
</dependency>
<!--Maven tools for plugin construction-->
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>3.0-alpha-2</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-dependency-tree</artifactId>
<version>3.0.1</version>
</dependency>
<!-- Utils -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>org.whitesource</groupId>
<artifactId>maven-dependency-tree-parser</artifactId>
<version>1.0.6</version>
</dependency>
<!-- Testing -->
<dependency>
<groupId>org.apache.maven.plugin-testing</groupId>
<artifactId>maven-plugin-testing-tools</artifactId>
<version>3.3.0</version>
<scope>compile</scope>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package se.kth.depclean;

import static com.soebes.itf.extension.assertj.MavenITAssertions.assertThat;

import com.soebes.itf.jupiter.extension.MavenGoal;
import com.soebes.itf.jupiter.extension.MavenJupiterExtension;
import com.soebes.itf.jupiter.extension.MavenTest;
import com.soebes.itf.jupiter.maven.MavenExecutionResult;
import org.junit.jupiter.api.DisplayName;

/**
* This class executes integration tests against the DepCleanMojo. The projects used for testing are in
* src/test/resources-its/se/kth/depclean/DepCleanMojoIT. The results of the DepClean executions for each project are in
* target/maven-it/se/kth/depclean/DepCleanMojoIT.
* <p>
* @see <a https://khmarbaise.github.io/maven-it-extension/itf-documentation/background/background.html#_assertions_in_maven_tests</a>
*/
@MavenJupiterExtension
public class DepCleanMojoIT {

@MavenTest
@MavenGoal("package")
@DisplayName("Test that DepClean runs in an empty Maven project")
void empty_project(MavenExecutionResult result) {
assertThat(result).isFailure(); // should pass
}

}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package se.kth.depclean.util;

import static org.junit.jupiter.api.Assertions.assertFalse;

import java.io.File;
import java.io.IOException;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

class FileUtilsTest {

@BeforeEach
void setUp() {
}

@AfterEach
void tearDown() {
}

@Test
void deleteDirectory() throws IOException {
File file = new File("./target/dependency");
if (file.exists()) {
FileUtils.deleteDirectory(new File("./target/dependency"));
}
assertFalse(file.exists());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.foo.bar</groupId>
<artifactId>foobar</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>foobar</name>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>

<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.2</version>
<!--<scope>test</scope>-->
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.soebes.itf.jupiter.extension</groupId>
<artifactId>itf-failure-plugin</artifactId>
<version>0.9.0</version>
<executions>
<execution>
<id>first_very_simple</id>
<phase>initialize</phase>
<goals>
<goal>failure</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>se.kth.castor</groupId>
<artifactId>depclean-maven-plugin</artifactId>
<version>2.0.1</version>
<executions>
<execution>
<goals>
<goal>depclean</goal>
</goals>
<!--<configuration>-->
<!-- <failIfUnusedDirect>true</failIfUnusedDirect>-->
<!-- <ignoreScopes>test,provided,import,runtime</ignoreScopes>-->
<!--</configuration>-->
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Loading

0 comments on commit ca4075d

Please sign in to comment.