diff options
-rw-r--r-- | stage1/resolver.scala | 23 | ||||
-rw-r--r-- | test/test.scala | 24 |
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) |