Add failing transitive wildcard dependency test

This commit is contained in:
Jaroslaw Grabowski 2016-08-26 11:25:28 +02:00 committed by Dale Wijnand
parent 16a6906826
commit 4cdbafadbf
8 changed files with 91 additions and 0 deletions

View File

@ -0,0 +1,38 @@
resolvers += {
val f = baseDirectory.value / "repository"
"local-test-repo" at f.getCanonicalFile.toURI.toASCIIString
}
libraryDependencies += "exclude.wildcard.test" % "top" % "1.0.0"
val checkDependencies = taskKey[Unit]("Checks if wildcard excludes work correctly.")
checkDependencies := {
val hasTopJar = (fullClasspath in Compile).value.exists { jar => jar.data.getName contains "top-1.0.0.jar"}
val hasBottomJar = (fullClasspath in Compile).value.exists { jar => jar.data.getName contains "bottom-1.0.0.jar"}
val hasMiddleJar = (fullClasspath in Compile).value.exists { jar => jar.data.getName contains "middle-1.0.0.jar"}
val errorJarString = (fullClasspath in Compile).value.map(_.data.getName).mkString(" * ", "\n * ", "")
assert(hasTopJar, s"Failed to include dependency with wildcard exclusion on classpath!\nFound:\n$errorJarString")
assert(hasMiddleJar, s"Failed to include dependency with wildcard exclusion on classpath!\nFound:\n$errorJarString")
assert(!hasBottomJar, s"Failed to exclude transitive excluded dependency on classpath!\nFound:\n$errorJarString")
val modules = (for {
c <- update.value.configurations
m <- c.modules
if !m.evicted
} yield m.module).distinct
val hasTopDep = modules exists { m =>
(m.organization == "exclude.wildcard.test") && (m.name == "top")
}
val hasMiddleDep = modules exists { m =>
(m.organization == "exclude.wildcard.test") && (m.name == "middle")
}
val hasBottomDep = modules exists { m =>
(m.organization == "exclude.wildcard.test") && (m.name == "bottom")
}
val errModuleString = modules.mkString("\n * ", "\n * ", "")
assert(hasTopDep, s"Failed to include dependency with wildcard exclusion!\nFound:\n$errModuleString")
assert(hasMiddleDep, s"Failed to include dependency with wildcard exclusion!\nFound:\n$errModuleString")
assert(!hasBottomDep, s"Failed to exclude transitive excluded dependency!\nFound:\n$errModuleString")
}

View File

@ -0,0 +1 @@
> checkDependencies

View File

@ -0,0 +1,12 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>exclude.wildcard.test</groupId>
<artifactId>bottom</artifactId>
<packaging>jar</packaging>
<version>1.0.0</version>
<name>bottom</name>
<url>http://maven.apache.org</url>
<dependencies>
</dependencies>
</project>

View File

@ -0,0 +1,17 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>exclude.wildcard.test</groupId>
<artifactId>middle</artifactId>
<packaging>jar</packaging>
<version>1.0.0</version>
<name>middle</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>exclude.wildcard.test</groupId>
<artifactId>bottom</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,23 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>exclude.wildcard.test</groupId>
<artifactId>top</artifactId>
<packaging>jar</packaging>
<version>1.0.0</version>
<name>top</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>exclude.wildcard.test</groupId>
<artifactId>middle</artifactId>
<version>1.0.0</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>