diff --git a/modules/core/shared/src/main/scala/coursier/ivy/IvyXml.scala b/modules/core/shared/src/main/scala/coursier/ivy/IvyXml.scala
index a022379b08..20bb8cb9c2 100644
--- a/modules/core/shared/src/main/scala/coursier/ivy/IvyXml.scala
+++ b/modules/core/shared/src/main/scala/coursier/ivy/IvyXml.scala
@@ -184,11 +184,14 @@ object IvyXml {
val publicationsOpt = publicationsNodeOpt.map(publications)
- val description = infoNode.children
- .find(_.label == "description")
+ val descriptionNodeOpt = infoNode.children.find(_.label == "description")
+
+ val description = descriptionNodeOpt
.map(_.textContent.trim)
.getOrElse("")
+ val homePage = descriptionNodeOpt.flatMap(_.attribute("homepage").right.toOption).getOrElse("")
+
val licenses = infoNode.children
.filter(_.label == "license")
.flatMap { n =>
@@ -229,7 +232,7 @@ object IvyXml {
},
Info(
description,
- "",
+ homePage,
licenses,
Nil,
publicationDate,
diff --git a/modules/tests/shared/src/test/scala/coursier/test/IvyXmlParsingTests.scala b/modules/tests/shared/src/test/scala/coursier/test/IvyXmlParsingTests.scala
new file mode 100644
index 0000000000..33a82c6c65
--- /dev/null
+++ b/modules/tests/shared/src/test/scala/coursier/test/IvyXmlParsingTests.scala
@@ -0,0 +1,49 @@
+package coursier
+package test
+
+import coursier.core.Versions
+import coursier.core.compatibility._
+import coursier.ivy.IvyXml
+import utest._
+
+object IvyXmlParsingTests extends TestSuite {
+ val tests = Tests {
+ 'infoWithHomePage {
+ // slice of https://dl.bintray.com/sbt/sbt-plugin-releases/com.github.gseitz/sbt-release/scala_2.12/sbt_1.0/1.0.12/ivys/ivy.xml
+ val node = """
+
+
+
+
+ sbt-release
+
+
+
+ """
+
+ val result = IvyXml.project(xmlParseDom(node).right.get).right.map(_.info)
+ val expected = Right(Info("sbt-release", "https://github.com/sbt/sbt-release",
+ List(("Apache-2.0", Some("http://www.apache.org/licenses/LICENSE-2.0"))), Nil,
+ Some(Versions.DateTime(2019, 10, 16, 12, 26, 29)), None))
+
+ assert(result == expected)
+ }
+
+ 'infoWithoutHomePage {
+ val node = """
+
+
+
+ sbt-release
+
+
+
+ """
+
+ val result = IvyXml.project(xmlParseDom(node).right.get).right.map(_.info)
+ val expected = Right(Info("sbt-release", "", Nil, Nil, None, None))
+
+ assert(result == expected)
+ }
+ }
+}