diff --git a/cache/src/main/scala/coursier/Cache.scala b/cache/src/main/scala/coursier/Cache.scala index 7e04877e7..b52170b75 100644 --- a/cache/src/main/scala/coursier/Cache.scala +++ b/cache/src/main/scala/coursier/Cache.scala @@ -957,8 +957,6 @@ object Cache { } } - private val utf8Bom = "\ufeff" - def fetch( cache: File = default, cachePolicy: CachePolicy = CachePolicy.UpdateChanging, @@ -981,7 +979,7 @@ object Cache { def notFound(f: File) = Left(s"${f.getCanonicalPath} not found") def read(f: File) = - try Right(new String(FileUtil.readAllBytes(f), "UTF-8").stripPrefix(utf8Bom)) + try Right(new String(FileUtil.readAllBytes(f), "UTF-8")) catch { case NonFatal(e) => Left(s"Could not read (file:${f.getCanonicalPath}): ${e.getMessage}") diff --git a/core/jvm/src/main/scala/coursier/core/compatibility/package.scala b/core/jvm/src/main/scala/coursier/core/compatibility/package.scala index 124266ae2..b6b63e269 100644 --- a/core/jvm/src/main/scala/coursier/core/compatibility/package.scala +++ b/core/jvm/src/main/scala/coursier/core/compatibility/package.scala @@ -14,9 +14,11 @@ package object compatibility { def letter = c.isLetter } + private val utf8Bom = "\ufeff" + def xmlParse(s: String): Either[String, Xml.Node] = { def parse = - try Right(scala.xml.XML.loadString(s)) + try Right(scala.xml.XML.loadString(s.stripPrefix(utf8Bom))) catch { case e: Exception => Left(e.toString + Option(e.getMessage).fold("")(" (" + _ + ")")) } def fromNode(node: scala.xml.Node): Xml.Node = diff --git a/tests/shared/src/test/scala/coursier/test/CentralTests.scala b/tests/shared/src/test/scala/coursier/test/CentralTests.scala index 528c598bc..63fe3e665 100644 --- a/tests/shared/src/test/scala/coursier/test/CentralTests.scala +++ b/tests/shared/src/test/scala/coursier/test/CentralTests.scala @@ -32,6 +32,14 @@ object CentralTests extends TestSuite { ) .process .run(fetch) + .map { res => + + assert(res.metadataErrors.isEmpty) + assert(res.conflicts.isEmpty) + assert(res.isDone) + + res + } .runF }