aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--stage1/resolver.scala23
-rw-r--r--test/test.scala24
2 files changed, 41 insertions, 6 deletions
diff --git a/stage1/resolver.scala b/stage1/resolver.scala
index 2e8ef15..701871c 100644
--- a/stage1/resolver.scala
+++ b/stage1/resolver.scala
@@ -262,12 +262,22 @@ object Classifier{
case class JavaDependency(
groupId: String, artifactId: String, version: String, classifier: Classifier = Classifier.none
)(implicit val logger: Logger) extends ArtifactInfo{
- assert(groupId != "", toString)
- assert(artifactId != "", toString)
- assert(version != "", toString)
- assert(groupId != null, toString)
- assert(artifactId != null, toString)
- assert(version != null, toString)
+ assert(
+ Option(groupId).collect{
+ case JavaDependency.ValidIdentifier(_) =>
+ }.nonEmpty,
+ s"not a valid groupId: '$groupId'"
+ )
+ assert(
+ Option(artifactId).collect{
+ case JavaDependency.ValidIdentifier(_) =>
+ }.nonEmpty,
+ s"not a valid artifactId: '$artifactId'"
+ )
+ assert(
+ version != "" && version != null && !version.startsWith(" ") && !version.endsWith(" "),
+ s"not a valid version: '$version'"
+ )
override def needsUpdate = false
override def canBeCached = true
@@ -402,6 +412,7 @@ case class JavaDependency(
}
}
object JavaDependency{
+ def ValidIdentifier = "^([A-Za-z0-9_\\-.]+)$".r // according to maven's DefaultModelValidator.java
def semanticVersionLessThan(left: String, right: String) = {
// FIXME: this ignores ends when different size
val zipped = left.split("\\.|\\-").map(toInt) zip right.split("\\.|\\-").map(toInt)
diff --git a/test/test.scala b/test/test.scala
index 7261287..242b639 100644
--- a/test/test.scala
+++ b/test/test.scala
@@ -10,6 +10,12 @@ object Main{
var successes = 0
var failures = 0
+ def assertException[T:scala.reflect.ClassTag](msg: String = "")(code: => Unit)(implicit logger: Logger) = {
+ try{
+ code
+ assert(false, msg)
+ }catch{ case _:AssertionError => }
+ }
def assert(condition: Boolean, msg: String = "")(implicit logger: Logger) = {
scala.util.Try{
Predef.assert(condition, "["++msg++"]")
@@ -82,6 +88,24 @@ object Main{
assert(cp.strings.distinct == cp.strings, "duplicates in classpath: " ++ cp.string)
}
+ // test that messed up artifacts crash with an assertion (which should tell the user what's up)
+ assertException[AssertionError](){
+ JavaDependency("com.jcraft", "jsch", " 0.1.53").classpath
+ }
+ assertException[AssertionError](){
+ JavaDependency("com.jcraft", null, "0.1.53").classpath
+ }
+ assertException[AssertionError](){
+ JavaDependency("com.jcraft", "", " 0.1.53").classpath
+ }
+ assertException[AssertionError](){
+ JavaDependency("com.jcraft%", "jsch", " 0.1.53").classpath
+ }
+ assertException[AssertionError](){
+ JavaDependency("", "jsch", " 0.1.53").classpath
+ }
+
+
System.err.println(" DONE!")
System.err.println( successes.toString ++ " succeeded, "++ failures.toString ++ " failed" )
if(failures > 0) System.exit(1) else System.exit(0)