diff --git a/main/src/main/scala/sbt/Project.scala b/main/src/main/scala/sbt/Project.scala index d9b3a8ee9..7753836ad 100755 --- a/main/src/main/scala/sbt/Project.scala +++ b/main/src/main/scala/sbt/Project.scala @@ -242,7 +242,10 @@ object Project extends ProjectExtra { def normalizeProjectID(id: String): Either[String, String] = { val attempt = normalizeBase(id) - val refined = if (!validProjectIDStart(attempt.substring(0, 1))) "root-" + attempt else attempt + val refined = + if (attempt.length < 1) "root" + else if (!validProjectIDStart(attempt.substring(0, 1))) "root-" + attempt + else attempt validProjectID(refined).toLeft(refined) } private[this] def normalizeBase(s: String) = s.toLowerCase(Locale.ENGLISH).replaceAll("""\W+""", "-") diff --git a/main/src/test/scala/ProjectSpec.scala b/main/src/test/scala/ProjectSpec.scala new file mode 100644 index 000000000..5dd9d6511 --- /dev/null +++ b/main/src/test/scala/ProjectSpec.scala @@ -0,0 +1,18 @@ +package sbt + +import org.specs2.Specification + +class ProjectSpec extends Specification { + def is = s2""" + + This is a specification to check utility methods on the Project object + + Project should + normalize projectIDs if they are empty ${normalizeEmptyFileName} + + """ + + def emptyFilename = "" + + def normalizeEmptyFileName = Project.normalizeProjectID(emptyFilename) must equalTo(Right("root")) +} \ No newline at end of file