From f4ff84db34fa87288c346af1b5b033f5ce8c7013 Mon Sep 17 00:00:00 2001 From: Josh Suereth Date: Fri, 1 Aug 2014 16:12:53 -0400 Subject: [PATCH] Fixes #1375 - Check for empty filenames. Starting sbt in root isn't a great idea, but it shouldn't break. --- main/src/main/scala/sbt/Project.scala | 5 ++++- main/src/test/scala/ProjectSpec.scala | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 main/src/test/scala/ProjectSpec.scala 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